{"record":{"id":"5514da79ce4af775","repo":"zeroclaw-labs/zeroclaw","slug":"openai-slot-s-slots-set-requires-openai-auth","errorCode":null,"errorMessage":"OpenAI slot(s) {$slots} set `requires_openai_auth = true` but no OpenAI Codex credentials are signed in. Run `zeroclaw auth login --provider openai-codex`.","messagePattern":"OpenAI slot\\(s\\) (.+?) set `requires_openai_auth = true` but no OpenAI Codex credentials are signed in\\. Run `zeroclaw auth login --provider openai-codex`\\.","errorType":"console","errorClass":"DiagItem","httpStatus":null,"severity":"warning","filePath":"crates/zeroclaw-runtime/src/doctor/mod.rs","lineNumber":197,"sourceCode":"        .providers\n        .models\n        .openai\n        .iter()\n        .filter(|(_, cfg)| cfg.base.requires_openai_auth)\n        .map(|(alias, _)| format!(\"openai.{alias}\"))\n        .collect();\n\n    let mut items = Vec::new();\n    match (codex_profile_present, auth_slots.is_empty()) {\n        // Credential imported, but nothing references it — silent until the\n        // operator wires a slot and points an agent at it.\n        (true, true) => items.push(DiagItem::warn(\n            CAT,\n            crate::i18n::get_required_cli_string(\"cli-doctor-codex-auth-profile-no-slot\"),\n        )),\n        // Slot opts into Codex auth, but no credential is signed in — fails at\n        // the first model call.\n        (false, false) => items.push(DiagItem::warn(\n            CAT,\n            crate::i18n::get_required_cli_string_with_args(\n                \"cli-doctor-codex-auth-slot-no-profile\",\n                &[(\"slots\", &auth_slots.join(\", \"))],\n            ),\n        )),\n        // Both present — wiring is consistent.\n        (true, false) => items.push(DiagItem::ok(\n            CAT,\n            crate::i18n::get_required_cli_string(\"cli-doctor-codex-auth-ok\"),\n        )),\n        // Codex unused on both sides — stay silent (no noise for users who\n        // never touch Codex).\n        (false, true) => {}\n    }\n    items\n}\n","sourceCodeStart":179,"sourceCodeEnd":215,"githubUrl":"https://github.com/zeroclaw-labs/zeroclaw/blob/88bb9c8533fc57ed7a03e36ca7c9ed2bf8336dcc/crates/zeroclaw-runtime/src/doctor/mod.rs#L179-L215","documentation":"Inverse case of the Codex wiring check: one or more provider slots opt into OpenAI Codex auth (`requires_openai_auth = true`, listed in `{slots}`) but no Codex credential profile is signed in. The first model call through such a slot will fail authentication, so doctor warns before that happens.","triggerScenarios":"Config enables `requires_openai_auth = true` on OpenAI slots before or without running `zeroclaw auth login --provider openai-codex`, or the credential profile was removed/expired.","commonSituations":"Config deployed to a new machine without importing credentials; credentials signed in a different user account; experiments with the flag left enabled.","solutions":["Run `zeroclaw auth login --provider openai-codex` to sign in the credentials","Or remove `requires_openai_auth = true` from the listed slots and use a plain api_key instead","Re-run `zeroclaw doctor` to confirm the warning clears"],"exampleFix":"# before\n[providers.openai]\nrequires_openai_auth = true   # but no credentials signed in\n\n# after (option A): sign in\n# $ zeroclaw auth login --provider openai-codex\n\n# after (option B): use an API key\n[providers.openai]\napi_key = \"sk-...\"","handlingStrategy":"validation","validationCode":"if zeroclaw doctor | grep -q 'requires_openai_auth'; then\n  echo 'sign in with: zeroclaw auth login --provider openai-codex (or drop the flag)'\n  exit 1\nfi","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Run `zeroclaw auth login --provider openai-codex` on every machine whose config sets requires_openai_auth","Drop the flag on slots that use plain api_key auth"],"tags":["zeroclaw","doctor","openai-codex","auth","credentials"],"backgroundTag":"missing-credentials","analyzedSha":"88bb9c8533fc57ed7a03e36ca7c9ed2bf8336dcc","analyzedAt":"2026-08-23T01:07:41.857Z","schemaVersion":2},"datasetVersion":"2026-08-23T08:06:27.607Z"}