fix(auth): harden Claude OAuth credential pools - #1196
Conversation
…sdk-provider-registration
…sdk-provider-registration # Conflicts: # packages/ai/CHANGELOG.md
…sdk-provider-registration # Conflicts: # packages/ai/src/changes.md # packages/coding-agent/CHANGELOG.md # packages/coding-agent/test/rpc-socket-host.test.ts
|
Cross-reference: Linear OLI-281 (https://linear.app/oliveline/issue/OLI-281/senpi-claude-sdk-oauth-provider-%EB%9D%BC%EC%9A%B0%ED%8C%85%EC%9C%BC%EB%A1%9C-OMO-%EC%84%B8%EC%85%98-%EC%9E%AC%EA%B0%9C-%EC%8B%A4%ED%8C%A8), GitHub issue #1261 (#1261). Real Orca QA on resumed session 01a05add-8e0c-7918-b2c8-551e0298a50d returned RESUME_OK without a new provider-configuration error using claude-sdk-oauth/claude-opus-5:high. |
A provider whose own login returns the complete pooled credential was double-pooled: appendLoginSlot read that result's top-level fields as a flat credential and appended them as a second slot. For claude-sdk-oauth those fields are the managed sentinel, so a second account produced a login-2 slot holding placeholder tokens. Adopts the slots.ts hunk from #1304 and #1196 by @eddieparc. Ultraworked with [omo](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: sisyphus-dev-ai <sisyphus-dev-ai@users.noreply.github.com>
…d account Shared credential rotation projects one named slot onto the flat credential shape and strips accounts, so the availability predicate counted zero accounts and reported "Provider is not configured: claude-sdk-oauth". A projected sentinel still counts as zero, leaving the ambient opt-in path unchanged. Adopts the oauth-login.ts hunk from #1304 and #1196 by @eddieparc. Ultraworked with [omo](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: sisyphus-dev-ai <sisyphus-dev-ai@users.noreply.github.com>
|
Cross-reference: #1309 (merged as 10f58c0) landed the |
|
Closing as superseded — thank you @eddieparc, the production fixes here are on main with credit to this PR.
The leftover |
Summary
Root causes
Verification