Bug type
Behavior bug (incorrect output/state without crash)
Summary
When using sessionTarget: isolated cron jobs with a custom model provider (e.g. a company-internal LLM proxy), the isolated agent silently fails with No API key found for provider "<custom-provider>" — with no actionable setup path.
The root issue is a combination of three problems:
-
auth-profiles.json format for custom providers is undocumented. The type field accepts "oauth" or "token", but this is not documented anywhere. Trial-and-error through "api_key", "bearer", "static", etc. all fail with invalid_type — no error message indicates what values are valid.
-
openclaw models auth paste-token requires an interactive TTY. It cannot be scripted or used non-interactively, making it impossible to configure auth programmatically or via automation.
-
The isolated agent gives no setup guidance. The error message says "Configure auth for this agent (openclaw agents add ) or copy auth-profiles.json from the main agentDir" — but openclaw agents add does not have a subcommand for adding auth to an existing agent, and copying the file does not help if the format is wrong.
Steps to reproduce
- Configure a cron job with
sessionTarget: isolated and a custom provider (e.g. my-proxy/gpt-4) in models.json
- Trigger the cron job
- Observe:
FallbackSummaryError: All models failed: No API key found for provider "my-proxy"
- Try to fix:
openclaw models auth paste-token --provider my-proxy → requires TTY, fails in automation
- Try to fix manually: add entry to
auth-profiles.json with type: "api_key" → invalid_type error, no hint on valid values
- The only working format (
type: "token", field name token not key) must be discovered by reading minified source code
Expected behavior
- The
paste-token command should work non-interactively via --token flag or stdin
- Valid
type values should be documented or listed in the error message
auth-profiles.json schema should be documented in the official docs
Environment
- OpenClaw version: 2026.4.5
- macOS 26.4
Additional context
The type: "token" format with field token (not key) was discovered by reading profiles-DKQdaSwr.js:
type === "token" ? { ...credential, token: normalizeSecretInput(credential.token) }
This should not be necessary.
🤖 Generated with Claude Code
Bug type
Behavior bug (incorrect output/state without crash)
Summary
When using
sessionTarget: isolatedcron jobs with a custom model provider (e.g. a company-internal LLM proxy), the isolated agent silently fails withNo API key found for provider "<custom-provider>"— with no actionable setup path.The root issue is a combination of three problems:
auth-profiles.jsonformat for custom providers is undocumented. Thetypefield accepts"oauth"or"token", but this is not documented anywhere. Trial-and-error through"api_key","bearer","static", etc. all fail withinvalid_type— no error message indicates what values are valid.openclaw models auth paste-tokenrequires an interactive TTY. It cannot be scripted or used non-interactively, making it impossible to configure auth programmatically or via automation.The isolated agent gives no setup guidance. The error message says "Configure auth for this agent (openclaw agents add ) or copy auth-profiles.json from the main agentDir" — but
openclaw agents adddoes not have a subcommand for adding auth to an existing agent, and copying the file does not help if the format is wrong.Steps to reproduce
sessionTarget: isolatedand a custom provider (e.g.my-proxy/gpt-4) inmodels.jsonFallbackSummaryError: All models failed: No API key found for provider "my-proxy"openclaw models auth paste-token --provider my-proxy→ requires TTY, fails in automationauth-profiles.jsonwithtype: "api_key"→invalid_typeerror, no hint on valid valuestype: "token", field nametokennotkey) must be discovered by reading minified source codeExpected behavior
paste-tokencommand should work non-interactively via--tokenflag or stdintypevalues should be documented or listed in the error messageauth-profiles.jsonschema should be documented in the official docsEnvironment
Additional context
The
type: "token"format with fieldtoken(notkey) was discovered by readingprofiles-DKQdaSwr.js:This should not be necessary.
🤖 Generated with Claude Code