{"record":{"id":"517a33ab2ea693dc","repo":"tinyhumansai/openhuman","slug":"failed-to-read-config-file-error","errorCode":null,"errorMessage":"Failed to read config file {}: {error}","messagePattern":"Failed to read config file (.+?): (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/openhuman/tools/impl/system/proxy_config.rs","lineNumber":24,"sourceCode":"use crate::openhuman::util::MaybeSet;\nuse async_trait::async_trait;\nuse serde_json::{json, Value};\nuse std::fs;\nuse std::sync::Arc;\n\npub struct ProxyConfigTool {\n    config: Arc<Config>,\n    security: Arc<SecurityPolicy>,\n}\n\nimpl ProxyConfigTool {\n    pub fn new(config: Arc<Config>, security: Arc<SecurityPolicy>) -> Self {\n        Self { config, security }\n    }\n\n    fn load_config_without_env(&self) -> anyhow::Result<Config> {\n        let contents = fs::read_to_string(&self.config.config_path).map_err(|error| {\n            anyhow::anyhow!(\n                \"Failed to read config file {}: {error}\",\n                self.config.config_path.display()\n            )\n        })?;\n\n        let mut parsed: Config = toml::from_str(&contents).map_err(|error| {\n            anyhow::anyhow!(\n                \"Failed to parse config file {}: {error}\",\n                self.config.config_path.display()\n            )\n        })?;\n        parsed.config_path = self.config.config_path.clone();\n        parsed.workspace_dir = self.config.workspace_dir.clone();\n        Ok(parsed)\n    }\n\n    fn require_write_access(&self) -> Option<ToolResult> {\n        if !self.security.can_act() {","sourceCodeStart":6,"sourceCodeEnd":42,"githubUrl":"https://github.com/tinyhumansai/openhuman/blob/749120085864ce16e0f273c7b86fac7740b39c5b/src/openhuman/tools/impl/system/proxy_config.rs#L6-L42","documentation":"ProxyConfigTool re-reads config.toml from disk (bypassing env overrides) for every get/set/disable/apply_env action so it can rewrite the file. This error means that raw read failed — file deleted mid-session, moved, or unreadable — before any proxy mutation happened.","triggerScenarios":"Thrown at src/openhuman/tools/impl/system/proxy_config.rs:24 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Confirm config.toml exists at the configured path and is readable","Restore or re-initialize the config file, then re-run the proxy_config action"],"exampleFix":null,"handlingStrategy":"retry","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-14T00:17:10.932Z"}