{"record":{"id":"64a2804368df677a","repo":"openai/codex","slug":"failed-to-persist-secrets-key-in-keyring","errorCode":null,"errorMessage":"failed to persist secrets key in keyring","messagePattern":"failed to persist secrets key in keyring","errorType":"exception","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"codex-rs/secrets/src/local.rs","lineNumber":253,"sourceCode":"    }\n\n    fn load_or_create_passphrase(&self) -> Result<SecretString> {\n        let account = compute_keyring_account(&self.codex_home);\n        let loaded = self\n            .keyring_store\n            .load(keyring_service(), &account)\n            .map_err(|err| anyhow::anyhow!(err.message()))\n            .with_context(|| format!(\"failed to load secrets key from keyring for {account}\"))?;\n        match loaded {\n            Some(existing) => Ok(SecretString::from(existing)),\n            None => {\n                // Generate a high-entropy key and persist it in the OS keyring.\n                // This keeps secrets out of plaintext config while remaining\n                // fully local/offline for the MVP.\n                let generated = generate_passphrase()?;\n                self.keyring_store\n                    .save(keyring_service(), &account, generated.expose_secret())\n                    .map_err(|err| anyhow::anyhow!(err.message()))\n                    .context(\"failed to persist secrets key in keyring\")?;\n                Ok(generated)\n            }\n        }\n    }\n}\n\nimpl SecretsBackend for LocalSecretsBackend {\n    fn set(&self, scope: &SecretScope, name: &SecretName, value: &str) -> Result<()> {\n        LocalSecretsBackend::set(self, scope, name, value)\n    }\n\n    fn get(&self, scope: &SecretScope, name: &SecretName) -> Result<Option<String>> {\n        LocalSecretsBackend::get(self, scope, name)\n    }\n\n    fn delete(&self, scope: &SecretScope, name: &SecretName) -> Result<bool> {\n        LocalSecretsBackend::delete(self, scope, name)","sourceCodeStart":235,"sourceCodeEnd":271,"githubUrl":"https://github.com/openai/codex/blob/339751715c64496cb86246bfb3935f40e309dd3d/codex-rs/secrets/src/local.rs#L235-L271","documentation":"Error \"failed to persist secrets key in keyring\" thrown in openai/codex.","triggerScenarios":"Thrown at codex-rs/secrets/src/local.rs:253 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"339751715c64496cb86246bfb3935f40e309dd3d","analyzedAt":"2026-08-25T05:35:09.876Z","schemaVersion":2},"datasetVersion":"2026-08-25T06:17:31.827Z"}