stablyai/orca · warning · Error
That Claude account no longer exists.
Error message
That Claude account no longer exists.
What it means
Thrown by requireAccount() when no managed account in settings.claudeManagedAccounts has the given accountId. It is the internal precondition guard for operations (select, reauth, remove) that reference an account id; a missing id means the account was deleted or never existed, or settings are stale.
Source
Thrown at src/main/claude-accounts/service.ts:530
id: account.id,
email: account.email,
managedAuthRuntime: account.managedAuthRuntime ?? 'host',
wslDistro: account.wslDistro ?? null,
authMethod: account.authMethod ?? 'unknown',
organizationUuid: account.organizationUuid ?? null,
organizationName: account.organizationName ?? null,
createdAt: account.createdAt,
updatedAt: account.updatedAt,
lastAuthenticatedAt: account.lastAuthenticatedAt
}
}
private requireAccount(accountId: string): ClaudeManagedAccount {
const account = this.store
.getSettings()
.claudeManagedAccounts.find((entry) => entry.id === accountId)
if (!account) {
throw new Error('That Claude account no longer exists.')
}
return account
}
private normalizeActiveSelection(): void {
const settings = this.store.getSettings()
const nextSelection = pruneInvalidClaudeRuntimeSelection(
normalizeClaudeRuntimeSelection(settings),
settings.claudeManagedAccounts
)
if (
nextSelection.host !== settings.activeClaudeManagedAccountId ||
JSON.stringify(nextSelection) !== JSON.stringify(normalizeClaudeRuntimeSelection(settings))
) {
this.store.updateSettings({
activeClaudeManagedAccountId: nextSelection.host,
activeClaudeManagedAccountIdsByRuntime: nextSelection
})View on GitHub (pinned to 1136503c6a)
Solutions
- Refresh the account list from getSnapshot() before issuing the operation.
- Guard at the IPC layer: check the account exists before calling into the service.
- Treat this error as a soft 'not found' and refresh the UI rather than retrying blindly.
- Ensure removeAccount and selectAccount are serialized so a concurrent delete cannot invalidate an in-flight select.
Defensive patterns
Strategy: validation
Validate before calling
const account = settings.claudeManagedAccounts.find(a => a.id === accountId)
if (!account) {
// refresh UI list; do not call into the service
} Try / catch
try {
await selectAccount(accountId)
} catch (error) {
if (error instanceof Error && /no longer exists/.test(error.message)) {
await refreshAccountList()
return
}
throw error
} Prevention
- Refresh the account list before issuing operations.
- Serialize remove and select so a concurrent delete cannot invalidate a select.
- Treat 'no longer exists' as a soft refresh signal.
- Validate account existence at the IPC boundary.
When it happens
Trigger: An IPC handler invokes selectAccount/reauthenticateAccount/removeAccount with an accountId that is not present in the current settings list. The account was removed by another window/race. A stale UI list sent an outdated id.
Common situations: Account was deleted in another window but the first window's list is stale. Race between remove and a concurrent select. Hardcoded/test account id. Settings file edited externally.
Related errors
- This Claude account is already added.
- Invalid accounts snapshot from host
- A Claude config directory path is required.
- No Claude credentials found in ${resolvedDir}. Run `claude l
- That Claude account belongs to a different runtime.
AI-assisted analysis of stablyai/orca@1136503c6a (2026-08-12).
Data as JSON: /api/errors/fb3ff1532e77c3c9.
Report an issue: GitHub.