microsoft / microsoft/amplifier
spawn.exclude_tools is session-global across every spawned agent — need per-agent spawn tool policy
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 3.1k
- Forks
- 261
- Avg merge
- 3h 28m
- Merged PRs (30d)
- 13
Description
Feature request
Support per-agent spawn tool policy — today spawn.exclude_tools in a composed bundle applies to every spawned sub-agent in every session, which makes it unusable for the common case: a bundle that wants to restrict its own agents' capabilities without touching anyone else's.
Context
amplifier-bundle-converge ships four reasoning agents whose contracts say "returns needs, never re-routes" (no delegate / no skills / no shell). To make those claims structural rather than behavioral, it declared a top-level spawn: exclude_tools: [tool-delegate, tool-skills, tool-bash].
What happens today (DTU-verified 2026-09-02)
apply_spawn_tool_policy reads spawn from the composed mount plan and filters the parent tool list on every spawn:
- With the converge behavior added via
--app,foundation:explorerspawned in a plain foundation session lostbash,delegate,load_skill(functional proof: asked to runecho, it repliedBASH_ABSENT). - Removing the bundle restored a byte-identical baseline tool list (causal control).
- The blast radius covers host agents, custom agents, and any agent that doesn't explicitly re-declare the excluded tools.
The bundle has removed the block (microsoft/amplifier-bundle-converge@e1747ba) and downgraded those agent contracts to behavioral rules — the only safe option available.
Ask
A scoped mechanism, e.g. either:
- Agent-frontmatter spawn policy — an agent file may declare its own
spawn: exclude_tools: [...]applied only when that agent is spawned; or - Named scoping in the bundle key —
spawn: agents: {converge:negotiator: {exclude_tools: [...]}}.
Either restores structural negative-capability contracts ("this agent physically cannot delegate") without any session-wide collateral. Today the only alternatives are prose instructions (unenforced) or the session-wide block (measured collateral above).
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by tracing apply_spawn_tool_policy and how the composed mount plan is read during agent spawning. Reproduce the reported cross-session filtering with and without amplifier-bundle-converge, then design and verify a per-agent scope; done means an agent's exclusions apply to its own spawns without changing tools available to unrelated agents.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- tooling
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100