{"record":{"id":"acec635504585ebf","repo":"Hmbown/CodeWhale","slug":"tool-name-was-called-with-operator-supplied-comm","errorCode":null,"errorMessage":"Tool {name} was called with operator-supplied commands or arguments that can name a program or redirect what runs, which spawns arbitrary programs and can mutate the workspace. This agent runs read-only, so only the built-in verification gates and test-selection arguments are available. Drop `commands`, drop the redirecting flag, or use a write-capable role.","messagePattern":"Tool (.+?) was called with operator-supplied commands or arguments that can name a program or redirect what runs, which spawns arbitrary programs and can mutate the workspace\\. This agent runs read-only, so only the built-in verification gates and test-selection arguments are available\\. Drop `commands`, drop the redirecting flag, or use a write-capable role\\.","errorType":"exception","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"crates/tui/src/tools/subagent/mod.rs","lineNumber":15081,"sourceCode":"/// through the one door that was left open for honest reasons.\n///\n/// So the tools stay and the arbitrary arguments go. The default form — the one\n/// the deny list's comment actually promises is bounded — keeps working.\nfn reject_unbounded_verification(name: &str, input: &Value, shell: bool) -> Result<()> {\n    use crate::tools::execution_envelope::{VerificationBound, classify_verification};\n\n    match classify_verification(canonical_action_alias(name, input), input) {\n        None | Some(VerificationBound::Default) => Ok(()),\n        // A pure test selection is what the shipped `verifier` role exists to\n        // run. It starts a process, so it costs shell authority — and nothing\n        // else, because `write` is not what a test filter needs.\n        Some(VerificationBound::Filter) if shell => Ok(()),\n        Some(VerificationBound::Filter) => Err(anyhow!(\n            \"Tool {name} was called with test-selection arguments, which start a test process, \\\n             and this agent has no shell authority. Drop `args` to run the default verification \\\n             gate.\"\n        )),\n        Some(VerificationBound::Unbounded) => Err(anyhow!(\n            \"Tool {name} was called with operator-supplied commands or arguments that can name a \\\n             program or redirect what runs, which spawns arbitrary programs and can mutate the \\\n             workspace. This agent runs read-only, so only the built-in verification gates and \\\n             test-selection arguments are available. Drop `commands`, drop the redirecting flag, \\\n             or use a write-capable role.\"\n        )),\n    }\n}\n\nfn is_internal_coordination_state_tool(name: &str) -> bool {\n    matches!(\n        name,\n        \"agent\"\n            | \"agents/list\"\n            | \"agents/message\"\n            | \"agents/followup\"\n            | \"agents/interrupt\"\n            | \"agents/coordinate\"","sourceCodeStart":15063,"sourceCodeEnd":15099,"githubUrl":"https://github.com/Hmbown/CodeWhale/blob/0c42157ee52f9d55af2b506d71b46249910f77d3/crates/tui/src/tools/subagent/mod.rs#L15063-L15099","documentation":"Error \"Tool {name} was called with operator-supplied commands or arguments that can name a program or redirect what runs, which spawns arbitrary programs and can mutate the workspace. This agent runs read-only, so only the built-in verification gates and test-selection arguments are available. Drop `commands`, drop the redirecting flag, or use a write-capable role.\" thrown in Hmbown/CodeWhale.","triggerScenarios":"Thrown at crates/tui/src/tools/subagent/mod.rs:15081 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Drop the commands array / redirecting flag and run the built-in verification gate","Move the arbitrary command to a write-capable role or the parent","Keep read-only verifiers on the default bounded form of run_verifiers/run_tests"],"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-14T05:17:10.506Z"}