diff --git a/packages/coding-agent/src/core/agent-session.ts b/packages/coding-agent/src/core/agent-session.ts index 21c51c3e..a686018d 100644 --- a/packages/coding-agent/src/core/agent-session.ts +++ b/packages/coding-agent/src/core/agent-session.ts @@ -634,6 +634,14 @@ export class AgentSession { // Validate API key const apiKey = await this._modelRegistry.getApiKey(this.model); if (!apiKey) { + const isOAuth = this._modelRegistry.isUsingOAuth(this.model); + if (isOAuth) { + throw new Error( + `Authentication failed for "${this.model.provider}". ` + + `Credentials may have expired or network is unavailable. ` + + `Run '/login ${this.model.provider}' to re-authenticate.`, + ); + } throw new Error( `No API key found for ${this.model.provider}.\n\n` + `Use /login, set an API key environment variable, or create ${getAuthPath()}`, diff --git a/packages/coding-agent/src/core/sdk.ts b/packages/coding-agent/src/core/sdk.ts index 9d70e097..a1d2f485 100644 --- a/packages/coding-agent/src/core/sdk.ts +++ b/packages/coding-agent/src/core/sdk.ts @@ -641,7 +641,18 @@ export async function createAgentSession(options: CreateAgentSessionOptions = {} } const key = await modelRegistry.getApiKeyForProvider(resolvedProvider); if (!key) { - throw new Error(`No API key found for provider "${resolvedProvider}"`); + const isOAuth = modelRegistry.isUsingOAuth(currentModel); + if (isOAuth) { + throw new Error( + `Authentication failed for "${currentModel.provider}". ` + + `Credentials may have expired or network is unavailable. ` + + `Run '/login ${currentModel.provider}' to re-authenticate.`, + ); + } + throw new Error( + `No API key found for "${currentModel.provider}". ` + + `Set an API key environment variable or run '/login ${currentModel.provider}'.`, + ); } return key; },