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

  1. Refresh the account list from getSnapshot() before issuing the operation.
  2. Guard at the IPC layer: check the account exists before calling into the service.
  3. Treat this error as a soft 'not found' and refresh the UI rather than retrying blindly.
  4. 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

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


AI-assisted analysis of stablyai/orca@1136503c6a (2026-08-12). Data as JSON: /api/errors/fb3ff1532e77c3c9. Report an issue: GitHub.