{"record":{"id":"44f8d5e6e88528e3","repo":"tinyhumansai/openhuman","slug":"pushover-token-not-found-in-env","errorCode":null,"errorMessage":"PUSHOVER_TOKEN not found in .env","messagePattern":"PUSHOVER_TOKEN not found in \\.env","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/openhuman/tools/impl/system/pushover.rs","lineNumber":71,"sourceCode":"        for line in content.lines() {\n            let line = line.trim();\n            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 {","sourceCodeStart":53,"sourceCodeEnd":89,"githubUrl":"https://github.com/tinyhumansai/openhuman/blob/749120085864ce16e0f273c7b86fac7740b39c5b/src/openhuman/tools/impl/system/pushover.rs#L53-L89","documentation":"The .env was read successfully but no PUSHOVER_TOKEN line matched (keys are matched case-insensitively, with optional 'export ' prefix and quote/Comment stripping). The notification cannot be authenticated, so the send is aborted.","triggerScenarios":"Thrown at src/openhuman/tools/impl/system/pushover.rs:71 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Add a PUSHOVER_TOKEN=... line to the workspace .env","Check the key spelling — surrounding quotes and trailing # comments are tolerated"],"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"}