Skip to content

Claude coordinator's tools allowlist hides any MCP server added next to squad_state #2328

Closed

Description

@joslat

The Claude Code projection writes .claude/agents/squad.md with a fixed tools allowlist (packages/squad-sdk/src/client/adapters/adapters.ts:103):

tools: Task, Read, Write, Edit, Bash, Glob, Grep, mcp__squad_state

In Claude Code, tools on a subagent is an allowlist, and with claude --agent squad the main session takes on the agent's tool restrictions (sub-agents docs). So any MCP server you add to .mcp.json next to squad_state (a memory server, GitHub MCP, Azure DevOps, Trello…) loads but its tools are filtered out of the coordinator. Per the same docs, sub-agents inherit the main conversation's tools, so the coordinator's specialists probably lose them too.

You can't work around it by hand: .claude/agents/squad.md is a managed projection (types.ts:32), and applyProjection replaces managed content wholesale, so adding mcp__agent-memory to the list is undone on the next squad upgrade / squad init --client claude.

The other hosts don't restrict anything: the Copilot coordinator has tools: ["*"] (squad.agent.md), Kiro writes tools: ["*"], and OpenCode, Cursor and Codex write no tools key. The allowlist doesn't keep the Claude coordinator a pure dispatcher either, since it already grants Write, Edit and Bash.

Repro

  1. squad init --client claude in a repo.
  2. Add a second server to .mcp.json, e.g. "agent-memory": { "command": "agent-memory-mcp" }.
  3. claude --agent squad --mcp-config .mcp.json and ask it to list its MCP tools: only mcp__squad_state__* shows up.
  4. Add mcp__agent-memory to the tools line, run squad upgrade: the line goes back to the original list.

Suggested fix

Drop the tools line so the Claude coordinator inherits every tool in the session, like the Copilot coordinator. If you'd rather keep least privilege, the alternative is a user-extensible list (e.g. in .squad/config.json), but that's more surface for little gain given Bash is already allowed.

The allowlist came in with the multi-host adapters in #2251. I have a PR for the first option.

Activity

  1. added a commit that references this issue on Oct 26, 2026
    c3f54c2
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions