{"record":{"id":"c5dcd9a2ced29ba7","repo":"Hmbown/CodeWhale","slug":"tool-name-is-not-available-to-this-read-only-wor","errorCode":null,"errorMessage":"Tool {name} is not available to this read-only worker because its process path does not share the hardened evidence boundary. Use read/search, classifier-bounded bash reads, or the verifier's bounded Run tool instead.","messagePattern":"Tool (.+?) is not available to this read-only worker because its process path does not share the hardened evidence boundary\\. Use read/search, classifier-bounded bash reads, or the verifier's bounded Run tool instead\\.","errorType":"exception","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"crates/tui/src/tools/subagent/mod.rs","lineNumber":14742,"sourceCode":"        match &self.allowed_tools {\n            None => Vec::new(),\n            Some(list) => list\n                .iter()\n                .filter(|name| !is_tool_search_tool(name) && !self.registry.contains(name))\n                .cloned()\n                .collect(),\n        }\n    }\n\n    async fn execute_full(\n        &self,\n        agent_id: &str,\n        tool_id: &str,\n        name: &str,\n        input: Value,\n    ) -> Result<RichToolResult> {\n        if self.role_blocks_unhardened_process_tool(name) {\n            return Err(anyhow!(\n                \"Tool {name} is not available to this read-only worker because its process path does not share the hardened evidence boundary. Use read/search, classifier-bounded bash reads, or the verifier's bounded Run tool instead.\"\n            ));\n        }\n        let action = input.get(\"action\").and_then(Value::as_str);\n        if matches!(&self.agent_type, FleetRole::Scout | FleetRole::Reviewer)\n            && name == \"Web\"\n            && !matches!(action, Some(\"search\" | \"fetch\"))\n        {\n            return Err(anyhow!(\n                \"Tool Web is limited to search/fetch in the read-only evidence profile\"\n            ));\n        }\n        let family_action_allowed = if !Self::ACTION_ALIASES\n            .iter()\n            .any(|(family, _, _)| *family == name)\n        {\n            true\n        } else if let Some(action) = action {","sourceCodeStart":14724,"sourceCodeEnd":14760,"githubUrl":"https://github.com/Hmbown/CodeWhale/blob/0c42157ee52f9d55af2b506d71b46249910f77d3/crates/tui/src/tools/subagent/mod.rs#L14724-L14760","documentation":"Error \"Tool {name} is not available to this read-only worker because its process path does not share the hardened evidence boundary. Use read/search, classifier-bounded bash reads, or the verifier's bounded Run tool instead.\" thrown in Hmbown/CodeWhale.","triggerScenarios":"Thrown at crates/tui/src/tools/subagent/mod.rs:14742 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Use read/search tools, classifier-bounded bash reads, or the verifier's bounded Run tool instead","Switch the agent to a builder or worker role (or custom with explicit allowed_tools) to gain process tools","Remove the process-path tool from this read-only worker's requests"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"0c42157ee52f9d55af2b506d71b46249910f77d3","analyzedAt":"2026-08-20T21:50:45.477Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}