Skip to content

MCP squad_decide author validator too narrow — cannot express on-behalf-of authorship #1256

Closed

Description

@tamirdresher

Summary

squad_decide MCP tool rejects author values that contain spaces, parentheses, or other characters needed to attach role context. The validator only accepts [A-Za-z0-9_-]+. This makes it impossible to express authorship like "Squad (Coordinator) on behalf of Tamir Dresher (CTO)" — which is the most accurate description for structural decisions made by the coordinator on behalf of a human directing the work.

Reproduction

Tested on @bradygaster/squad-cli@0.10.0-build.7 (local build from PR #1245 branch).

mcp_call({
  tool: "squad_state-squad_decide",
  args: {
    author: "Squad (Coordinator) on behalf of Tamir Dresher (CTO)",
    summary: "...",
    body: "..."
  }
});

Returns:

MCP server 'squad_state': Invalid author name: must contain only letters,
numbers, hyphens, and underscores

Why this is too narrow

The author field on a decision is human-readable provenance. Real authorship in a multi-agent system is often complex:

  • "squad-coordinator" — accepted today, but loses the "on behalf of" context
  • "Scribe on behalf of Flight" — rejected, contains spaces
  • "FIDO (review) + EECOM (fix)" — rejected, contains parens and slash equivalents
  • "User: Tamir Dresher → Coordinator" — rejected, contains colon, space, arrow

Workaround today is to embed the full attribution in the body and put a slug in author. But that defeats the purpose of having an author field — automated tooling that displays decisions by author cannot show the real authorship.

Suggested fix

Relax to something like:

  • Allow letters, digits, hyphens, underscores, spaces, parentheses, ampersands, slashes, periods, colons, plus signs
  • Cap length at 200 characters
  • Reject only characters that would break filename derivation (the slug is derived from this in the inbox filename)

Or split into two fields: author_slug (the strict validator, used for the filename) and author_display (free text, used for the human-readable header).

Related

Activity

  1. added a commit that references this issue on Jun 30, 2026
    3be0e5f
  2. added a commit that references this issue on Jun 30, 2026
    cea62e5
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

    triagedIssue has been triagedwave:2-soonWave 2 — next 2-4 weeks

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions