{"record":{"id":"d3820deccaf43729","repo":"openai/codex","slug":"secret-name-must-contain-only-a-z-0-9-or","errorCode":null,"errorMessage":"secret name must contain only A-Z, 0-9, or _","messagePattern":"secret name must contain only A-Z, 0-9, or _","errorType":"validation","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"codex-rs/secrets/src/lib.rs","lineNumber":32,"sourceCode":"use sha2::Sha256;\n\nmod local;\nmod sanitizer;\n\npub use local::LocalSecretsBackend;\npub use local::LocalSecretsNamespace;\npub use sanitizer::redact_secrets;\n\nconst KEYRING_SERVICE: &str = \"codex\";\n\n#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]\npub struct SecretName(String);\n\nimpl SecretName {\n    pub fn new(raw: &str) -> Result<Self> {\n        let trimmed = raw.trim();\n        anyhow::ensure!(!trimmed.is_empty(), \"secret name must not be empty\");\n        anyhow::ensure!(\n            trimmed\n                .chars()\n                .all(|ch| ch.is_ascii_uppercase() || ch.is_ascii_digit() || ch == '_'),\n            \"secret name must contain only A-Z, 0-9, or _\"\n        );\n        Ok(Self(trimmed.to_string()))\n    }\n\n    pub fn as_str(&self) -> &str {\n        self.0.as_str()\n    }\n}\n\nimpl fmt::Display for SecretName {\n    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {\n        write!(f, \"{}\", self.0)\n    }\n}","sourceCodeStart":14,"sourceCodeEnd":50,"githubUrl":"https://github.com/openai/codex/blob/339751715c64496cb86246bfb3935f40e309dd3d/codex-rs/secrets/src/lib.rs#L14-L50","documentation":"Error \"secret name must contain only A-Z, 0-9, or _\" thrown in openai/codex.","triggerScenarios":"Thrown at codex-rs/secrets/src/lib.rs:32 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"}