{"record":{"id":"c4aaea8cebdf39ee","repo":"tinyhumansai/openhuman","slug":"pushover-user-key-not-found-in-env","errorCode":null,"errorMessage":"PUSHOVER_USER_KEY not found in .env","messagePattern":"PUSHOVER_USER_KEY not found in \\.env","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/openhuman/tools/impl/system/pushover.rs","lineNumber":73,"sourceCode":"            if line.starts_with('#') || line.is_empty() {\n                continue;\n            }\n            let line = line.strip_prefix(\"export \").map(str::trim).unwrap_or(line);\n            if let Some((key, value)) = line.split_once('=') {\n                let key = key.trim();\n                let value = Self::parse_env_value(value);\n\n                if key.eq_ignore_ascii_case(\"PUSHOVER_TOKEN\") {\n                    token = Some(value);\n                } else if key.eq_ignore_ascii_case(\"PUSHOVER_USER_KEY\") {\n                    user_key = Some(value);\n                }\n            }\n        }\n\n        let token = token.ok_or_else(|| anyhow::anyhow!(\"PUSHOVER_TOKEN not found in .env\"))?;\n        let user_key =\n            user_key.ok_or_else(|| anyhow::anyhow!(\"PUSHOVER_USER_KEY not found in .env\"))?;\n\n        Ok((token, user_key))\n    }\n}\n\n#[async_trait]\nimpl Tool for PushoverTool {\n    fn name(&self) -> &str {\n        \"pushover\"\n    }\n\n    fn description(&self) -> &str {\n        \"Send a Pushover notification to your device. Requires PUSHOVER_TOKEN and PUSHOVER_USER_KEY in .env file.\"\n    }\n\n    fn parameters_schema(&self) -> serde_json::Value {\n        json!({\n            \"type\": \"object\",","sourceCodeStart":55,"sourceCodeEnd":91,"githubUrl":"https://github.com/tinyhumansai/openhuman/blob/749120085864ce16e0f273c7b86fac7740b39c5b/src/openhuman/tools/impl/system/pushover.rs#L55-L91","documentation":"Same credential scan as the token, but for the recipient: no PUSHOVER_USER_KEY line was found in the workspace .env. The API call requires both values, so the send is aborted before any network request.","triggerScenarios":"Thrown at src/openhuman/tools/impl/system/pushover.rs:73 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Add a PUSHOVER_USER_KEY=... line to the workspace .env"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"749120085864ce16e0f273c7b86fac7740b39c5b","analyzedAt":"2026-08-17T21:21:45.363Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}