stablyai/orca · error · Error
Claude login completed, but Orca could not resolve the accou
Error message
Claude login completed, but Orca could not resolve the account email.
What it means
Thrown by persistCapturedClaudeAccount() when captured.identity.email is falsy after a login+capture flow. The login technically completed (credentials were read) but the account email could not be resolved from any of: `claude auth status --json`, oauth-account.json, or the credentials JSON's claudeAiOauth.email. Orca refuses to persist an account without a primary identifier.
Source
Thrown at src/main/claude-accounts/service.ts:255
// Why: this post-login RPC did not observe the legacy Keychain value before
// login unless the CLI supplied its one-way pre-login credential baseline.
const currentLegacyKeychain = await readActiveClaudeKeychainCredentialsStrict()
return this.captureAuthFromConfigDir(
resolvedDir,
status,
currentLegacyKeychain,
previousLegacyCredentialsSha256
)
}
private async persistCapturedClaudeAccount(
accountId: string,
managedAuth: ManagedClaudeAuthLocation,
previousSettings: ReturnType<Store['getSettings']>,
captured: CapturedClaudeAuth
): Promise<ClaudeRateLimitAccountsState> {
if (!captured.identity.email) {
throw new Error('Claude login completed, but Orca could not resolve the account email.')
}
// Why: duplicate rows confuse selection and rate-limit tracking; re-authentication
// is the supported way to refresh an account that is already managed.
if (
findDuplicateClaudeAccount(previousSettings.claudeManagedAccounts, {
email: captured.identity.email,
organizationUuid: captured.identity.organizationUuid,
managedAuthRuntime: managedAuth.managedAuthRuntime,
wslDistro: managedAuth.wslDistro
})
) {
throw new DuplicateClaudeAccountError('This Claude account is already added.')
}
await this.writeManagedAuth(accountId, managedAuth.managedAuthPath, captured)
const now = Date.now()
const account: ClaudeManagedAccount = {
id: accountId,View on GitHub (pinned to 1136503c6a)
Solutions
- Update the Claude CLI to a version Orca supports and re-authenticate.
- Inspect the temp config dir's .claude.json / .credentials.json / oauth-account.json for an email field and report the schema.
- Re-run `claude login` fully (not from existing dir) so the CLI populates identity.
- If the email lives in a new field, extend resolveIdentity to read it.
Defensive patterns
Strategy: try-catch
Try / catch
try {
await persistCapturedClaudeAccount(...)
} catch (error) {
if (error instanceof Error && /could not resolve the account email/.test(error.message)) {
// surface 'update Claude CLI and re-auth' to the user
}
throw error
} Prevention
- Keep the Claude CLI at a version Orca supports.
- Inspect the captured identity JSON shape after CLI updates.
- Extend resolveIdentity when the CLI adds new email fields.
- Validate identity.email is present before persisting.
When it happens
Trigger: The Claude CLI version emits a different status JSON shape Orca cannot parse. oauth-account.json and .credentials.json lack an email field. `claude auth status` failed/warned and returned no usable identity. A newer/older CLI schema mismatch.
Common situations: Claude CLI version skew (Orca's parser expects fields the installed CLI does not emit). A partial login that produced credentials but no identity record. Enterprise SSO accounts where the email is in a non-standard field.
Related errors
- no_active_sender_terminal
- Claude login completed, but no OAuth credentials were captur
- Codex login completed, but Orca could not resolve the accoun
- --higher-is-better requires a metric key
- Usage: node config/scripts/compare-benchmark-artifacts.mjs -
AI-assisted analysis of stablyai/orca@1136503c6a (2026-08-12).
Data as JSON: /api/errors/2cb58402c99e3128.
Report an issue: GitHub.