Limit the atomic Planner's own turns to read-only tools #270
- LA
Stacked on #267.
## What changes
The atomic Planner could edit files, run commands, and start subagents in its working directory, so nothing kept it from implementing the plan itself. Its own turns now offer only these tools, beside Chopin's document and repository tools:
| Kind | Tools | | --- | --- | | Read the working directory | `read`, `find`, `search`, `ast_grep` | | Research | `web_search`, `code_search`, `fetch_content`, `get_search_content` | | Decisions | `ask_user_question` | | Delegate | `workflow`, `intercom` |
`bash`, `edit`, `write`, `todo`, and `subagent` are withheld. Subagents stay out because Chopin has no UI to show them. With #267, a request to implement the plan always goes to another session over Intercom.
- **Workflows keep their tools.** The limit is the Planner session's active tools for each turn (`FULL_PLANNER_TOOLS` in `adapter.ts`), not the `createAgentSession` `tools` option. Atomic uses that option as a ceiling for every child session (`core/child-session-options.js`), so setting it would also strip `write` and `bash` from workflow stages. - **Packages still load.** Operator and project packages still load their skills and workflows. Tools their extensions register aren't offered to the Planner's own turns unless they're on the list. - **Instructions and docs match.** The Planner's instructions now say its own tools only read, and `docs/hosted-agent.md` describes the limit under Full Atomic Planner.
## Verification
- `bun test apps/server/src/harness apps/server/src/agent`: 310 pass, 0 fail. - `full.test.ts` (16 pass): - every tool offered to a Planner turn is on the list or a host tool; - `bash`, `edit`, `write`, `todo`, `subagent`, and operator tools are withheld; - the cwd check now reads a file by relative path instead of running `pwd`; - a workflow stage the Planner starts still offers `bash` and `write`, and its `ask_user_question` still reaches Decisions. - `bun run types`: all workspaces exit 0. `bun run ci`: passes.
Assistant-model: Claude Opus 5.5 Assistant-workflow: inline Assistant-verification: bun test passed: apps/server/src/harness and apps/server/src/agent (310 pass), including full.test.ts (16 pass) Assistant-verification: bun run types passed: all workspaces Assistant-verification: bun run ci passed: dprint, oxlint, tokens, design contract, Impeccable User-preference: Limit the Chopin Planner to read-only tools plus intercom, workflows, and Chopin's tools, so implementation always goes through intercom User-preference: Keep the subagent tool out of the Chopin Planner; Chopin has no UI to represent subagents Co-authored-by: Alex Lavaee <lavaman131@github.com>
lavaman131added-to-stacklast month on GitHub
lavaman131referenced f5d6164c9bcalast month on GitHub
lavaman131referenced dc226131a4ddlast month on GitHub
lavaman131referenced 594ec938da80last month on GitHub
lavaman131base-ref-force-pushedlast month on GitHub
lavaman131head-ref-force-pushed 6531bf6e128elast month on GitHub
lavaman131merged 8197bc981555last month on GitHub
lavaman131head-ref-deletedlast month on GitHub
lavaman131referenced 17d4f44314balast month on GitHub
lavaman131referenced 2cfc207f9ad1last month on GitHub
lavaman131referenced b312afd5890blast month on GitHub
lavaman131referenced cbc71f22f08alast month on GitHub
lavaman131referenced a46b07252e62last month on GitHub