earendil-works/pi · error · Error
No API key for ${model.provider}/${model.id}
Error message
No API key for ${model.provider}/${model.id} What it means
Error "No API key for ${model.provider}/${model.id}" thrown in earendil-works/pi.
Source
Thrown at packages/coding-agent/src/core/agent-session.ts:1600
): Promise<void> {
if (modelsAreEqual(previousModel, nextModel)) return;
await this._extensionRunner.emit({
type: "model_select",
model: nextModel,
previousModel,
source,
});
}
/**
* Set model directly.
* Validates that auth is configured and saves to the session transcript.
* Persists to global defaults only when options.persist is true.
* @throws Error if no auth is configured for the model
*/
async setModel(model: Model<any>, options: ModelMutationOptions = {}): Promise<void> {
if (!(await this._modelRuntime.checkAuth(model.provider))) {
throw new Error(`No API key for ${model.provider}/${model.id}`);
}
const previousModel = this.model;
const thinkingLevel = this._getThinkingLevelForModelSwitch(model);
this.agent.state.model = model;
this.sessionManager.appendModelChange(model.provider, model.id);
if (options.persist) {
this.settingsManager.setDefaultModelAndProvider(model.provider, model.id);
}
// Apply thinking level for the new model.
// Per-model thinking level overrides take priority over the global default.
// Model persistence does not implicitly rewrite the global thinking default.
this.setThinkingLevel(thinkingLevel);
await this._emitModelSelect(model, previousModel, "set");
}
View on GitHub (pinned to 4af9d21d3b)
When it happens
Trigger: Thrown at packages/coding-agent/src/core/agent-session.ts:1600 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of earendil-works/pi@4af9d21d3b (2026-08-24).
Data as JSON: /api/errors/202cd1e9b22bc7d6.
Report an issue: GitHub.