{"record":{"id":"5ad531098d2668dd","repo":"paperclipai/paperclip","slug":"codex-credentials-missing","errorCode":"codex_credentials_missing","errorMessage":"configuration incomplete: no Codex credentials available for managed home \"${readiness.effectiveHome}\". Sign in to Codex on the host with a ChatGPT subscription, or bind a per-agent OPENAI_API_KEY secret for this agent.","messagePattern":"configuration incomplete: no Codex credentials available for managed home \"(.+?)\"\\. Sign in to Codex on the host with a ChatGPT subscription, or bind a per-agent OPENAI_API_KEY secret for this agent\\.","errorType":"validation","errorClass":"ConfigurationIncompleteFailure","httpStatus":null,"severity":"error","filePath":"server/src/services/heartbeat.ts","lineNumber":1318,"sourceCode":"function assertLowTrustEnvConfigAllowed(envValue: unknown, source: string) {\n  const record = stripForbiddenEnvBindings(envValue);\n  if (!record) return;\n  for (const [key, rawBinding] of Object.entries(record)) {\n    const parsed = envBindingSchema.safeParse(rawBinding);\n    if (!parsed.success) continue;\n    const binding = parsed.data;\n    const isPlainBinding =\n      typeof binding === \"string\" ||\n      (typeof binding === \"object\" &&\n        binding !== null &&\n        binding.type === \"plain\");\n    if (isPlainBinding && LOW_TRUST_SENSITIVE_ENV_KEY_RE.test(key)) {\n      throw new HttpError(\n        422,\n        `Low-trust execution cannot use inline sensitive env value ${source}.${key}`,\n        {\n          code: \"low_trust_inline_sensitive_env_denied\",\n        },\n      );\n    }\n  }\n}\n\nexport async function resolveExecutionRunAdapterConfig(input: {\n  companyId: string;\n  agentId?: string | null;\n  adapterType?: string | null;\n  issueId?: string | null;\n  heartbeatRunId?: string | null;\n  responsibleUserId?: string | null;\n  environmentId?: string | null;\n  environmentEnv?: unknown;\n  environmentDriver?: string | null;\n  projectId?: string | null;\n  routineId?: string | null;\n  executionRunConfig: Record<string, unknown>;","sourceCodeStart":1300,"sourceCodeEnd":1336,"githubUrl":"https://github.com/paperclipai/paperclip/blob/01ad8584922b5d85292b1723cae71fa0d9b07a19/server/src/services/heartbeat.ts#L1300-L1336","documentation":"Error \"configuration incomplete: no Codex credentials available for managed home \"${readiness.effectiveHome}\". Sign in to Codex on the host with a ChatGPT subscription, or bind a per-agent OPENAI_API_KEY secret for this agent.\" thrown in paperclipai/paperclip.","triggerScenarios":"Thrown at server/src/services/heartbeat.ts:1196 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Sign in to Codex on the host with a ChatGPT subscription, or bind a per-agent OPENAI_API_KEY secret for this agent."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"01ad8584922b5d85292b1723cae71fa0d9b07a19","analyzedAt":"2026-08-18T22:49:45.177Z","contentChangedAt":"2026-08-18T22:49:45.177Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}