Plugin-defined agent types with tools:all silently block Write/Edit tool calls
Bug Description
When using a plugin-defined agent type with tools: all in the agent definition frontmatter, the sub-agent's Write/Edit tool calls are silently blocked. The agent reports creating files successfully, but nothing is actually written to disk. No error is surfaced.
Reproduction
- Create a plugin with an agent definition file (
agents/executor.md):
``yaml``
---
name: executor
tools: all
---
# Executor Agent
...
- In a skill's SKILL.md, instruct the Orchestrator to call the Agent tool with:
````
subagent_type: review-loop:executor
- The sub-agent attempts to create/edit files via Write/Edit tools — it reports success, but no files are written.
- Switching to
subagent_type: general-purpose(built-in type) with the same prompt and manually embedding the agent's system prompt — Write/Edit works correctly.
Expected Behavior
tools: all in plugin agent definition frontmatter should grant the same tool access as the built-in general-purpose agent type. If it intentionally doesn't, Write/Edit calls should fail with a clear error, not silently succeed.
Actual Behavior
Write/Edit tool calls are silently blocked — the sub-agent's output claims files were created/modified, but the filesystem is unchanged. No error is returned to the agent or the caller.
Impact
This is particularly problematic because:
- The silent failure makes debugging very difficult (agent thinks it succeeded)
- There's no documentation about this restriction
- The
tools: alldeclaration in frontmatter implies full tool access
Environment
- Claude Code CLI
- Plugin: review-loop v1.3.0
- Workaround: use
subagent_type: general-purposeand manually embed agent system prompt in the prompt parameter
Workaround
Use subagent_type: general-purpose for any agent that needs file write access, and include the agent definition body manually in the prompt. Plugin-defined agent types work fine for read-only agents (e.g. tools: read-only).
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗