{"record":{"id":"d1ca44a7bd111450","repo":"nikivdev/code","slug":"failed-to-store-ai-token-in-keychain","errorCode":null,"errorMessage":"failed to store AI token in Keychain","messagePattern":"failed to store AI token in Keychain","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/env.rs","lineNumber":309,"sourceCode":"}\n\nfn set_keychain_ai_token(api_url: &str, token: &str) -> Result<()> {\n    let service = keychain_service_ai(api_url);\n    let status = Command::new(\"security\")\n        .args([\n            \"add-generic-password\",\n            \"-a\",\n            \"flow\",\n            \"-s\",\n            &service,\n            \"-w\",\n            token,\n            \"-U\",\n        ])\n        .status()\n        .context(\"failed to store AI token in Keychain\")?;\n    if !status.success() {\n        bail!(\"failed to store AI token in Keychain\");\n    }\n    Ok(())\n}\n\nfn get_keychain_token(api_url: &str) -> Result<Option<String>> {\n    if !cfg!(target_os = \"macos\") {\n        return Ok(None);\n    }\n\n    let service = keychain_service(api_url);\n    let output = Command::new(\"security\")\n        .args([\"find-generic-password\", \"-a\", \"flow\", \"-s\", &service, \"-w\"])\n        .output()\n        .context(\"failed to read token from Keychain\")?;\n\n    if output.status.success() {\n        let token = String::from_utf8_lossy(&output.stdout).trim().to_string();\n        if token.is_empty() {","sourceCodeStart":291,"sourceCodeEnd":327,"githubUrl":"https://github.com/nikivdev/code/blob/a747e741ae92c09071d0ae946ab48488adcff1ce/src/env.rs#L291-L327","documentation":"Error \"failed to store AI token in Keychain\" thrown in nikivdev/code.","triggerScenarios":"Thrown at src/env.rs:309 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":"a747e741ae92c09071d0ae946ab48488adcff1ce","analyzedAt":"2026-09-01T22:43:55.719Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}