Skip to content

/squad cast silently no-ops with a green check unless the command starts the issue body #1824

Open

Description

@bradygaster

Problem

Observed during an empirical cold start against a throwaway repo (run 32520171517, scratch repo bradygaster/squad-coldstart-scratch-2026-08-21).

/squad cast silently does nothing unless the command appears at the very start of the issue body. When it appears later in the body — after a line of prose, a greeting, or a blank line — the workflow still completes and still reports a green ✓. No error, no warning, no indication the command was not recognized.

Why this one matters most

This is on the first-run path for every new user. Someone activating Squad on a fresh repo writes an issue that reads naturally — a sentence of context, then the command — and gets a green check with no team cast. The success signal and the no-op signal are identical.

Failure class

Same shape as the other findings from this session: success and no-op are indistinguishable without independent verification. Related instances found the same day:

Suggested direction

Two independent fixes, both cheap:

  1. Parse the command anywhere in the body, not only at position 0.
  2. Fail loudly when no recognized command is found. A run that matched no command should not report success. If the body contains something that looks like a /squad invocation but didn't parse, say so explicitly with the text it saw.

(2) is the more important of the two — it converts every future variant of this bug from silent to visible.

Verification bar

Per .squad/decisions.md:604, the fix needs a check that compares two independent sources. A test asserting "command at position 0 parses" re-reads what it guards. The real assertion is: a run that cast no agents must not report success.

Owners

Procedures (command parsing) with FIDO (the no-op-must-fail assertion).

Activity

  1. bradygaster commented on Aug 23, 2026

    @bradygaster
    CollaboratorAuthor

    1. Owner & rationale

    Owner: squad:procedures. This is the /squad router and command-resolution prompt path, so the fix belongs with prompt architecture; FIDO should review the no-op-must-fail test shape.

    Labels reconciled as: gh-aw, type:bug, priority:p0, wave:1-next, squad:procedures, triaged, go:spec-ready.

    2. Files in scope

    Verified existing paths:

    • workflows/squad.md
    • test/gh-aw-quality.test.ts

    3. Reproduction / measurement

    This is a live workflow-trigger behavior, not a purely local unit repro. These commands were execution-tested and use no output suppression:

    gh issue view 1 --repo bradygaster/squad-coldstart-scratch-2026-08-21 --json title,body --jq '{title, body}'
    gh run view 32520062670 --repo bradygaster/squad-coldstart-scratch-2026-08-21 --json conclusion,status,event,jobs --jq '{conclusion,status,event,jobs:[.jobs[] | {name,conclusion}]}'

    The issue body has prose before /squad cast; the corresponding issues event run completed with all jobs skipped. The follow-up comment run (32520171517) only works because the comment body starts with /squad cast.

    4. Verification bar

    A body containing prose, then /squad cast, must produce one of two independently checkable terminal states: a Cast PR/safe-output outcome exists, or the run fails/warns explicitly that no recognized command was parsed. A green/skipped/no-output run with zero cast side effects must fail the check.

    5. Traps

    Do not add another positive-only parser test for /squad cast at character 0; that still passes today's broken behavior. The gate must compare the run result to a side effect or explicit diagnostic. Preserve the empty workflow_dispatch guard from PR #1777; this issue is about issue-body/comment parsing, not restoring implicit default casts for empty dispatches.

    6. Out of scope

    Do not redesign the full slash-command grammar, change safe-output permissions, or retitle/close related cold-start issues. Keep this to command discovery plus no-op visibility.

    7. Session-stall guard

    Before starting: this repo has phantom CRLF diffs (#1793). If git status shows files modified that you did not touch, run git diff --ignore-cr-at-eol. If that output is empty, the diff is line-ending churn, not real edits — run git add --renormalize . and continue. Do not halt and ask for confirmation; halting on phantom diffs is the documented cause of stuck sessions in this repo.

  2. added
    squadSquad triage inbox — Lead will assign to a member
    on Aug 23, 2026
  3. 5 remaining items

  4. github-actions commented on Sep 28, 2026

    @github-actions
    Contributor

    📋 Assigned to agentic-workflows-dev (Agentic Workflows Engineer)

    Issue: #1824 — /squad cast silently no-ops with a green check unless the command starts the issue body

    agentic-workflows-dev will pick this up in the next Copilot session.

    For Copilot coding agent: If enabled, this issue will be worked automatically.
    Otherwise, start a Copilot session and say:
    agentic-workflows-dev, work on issue #1824

  5. added a commit that references this issue on Sep 28, 2026
    f3c3203
  6. bradygaster commented on Sep 28, 2026

    @bradygaster
    CollaboratorAuthor

    Implementation is tracked by #2093, whose closing keyword has been changed to Implements #1824. Keep this issue open after merge until the private hosted negative/recovery fixture verifies malformed and unknown /squad diagnostics, workflow failure, embedded-command handling, and ordinary no-command comments remaining non-events.

  7. added 4 commits that reference this issue on Sep 28, 2026
    aea10ee
    2f3feef
    4f3732a
    ae29f0a
  8. bradygaster commented on Sep 28, 2026

    @bradygaster
    CollaboratorAuthor

    Implementation milestone: #2093 merged into dev as 7254141. This issue remains open by design until the private negative/recovery fixture records durable evidence for malformed/unknown command diagnostics and failure, embedded-command behavior, ordinary no-command non-events, recovery, and retry idempotency.

  9. bradygaster commented on Sep 28, 2026

    @bradygaster
    CollaboratorAuthor

    Reopened because merge automation closed this issue before its documented hosted acceptance evidence existed. Code is merged, but the private negative/recovery fixture remains the closure gate.

  10. bradygaster commented on Sep 29, 2026

    @bradygaster
    CollaboratorAuthor

    Post-#2105 reconciliation

    Malformed/unknown/embedded command parsing and fail-closed diagnostics are implemented by #2093 (72541414). The remaining closure gate is private hosted proof for malformed, unknown, ordinary no-command, recovery, and retry-idempotency scenarios. Execute and record those links under the queue-worker ledger in #2048 after #2103 unblocks the final fixtures; then this issue can close as completed.

  11. added a commit that references this issue on Oct 20, 2026
    c24da2a
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

    gh-awGitHub Agentic Workflows integrationgo:spec-readyReady for formal spec/proposalpriority:p0Blocking releasesquadSquad triage inbox — Lead will assign to a membersquad:agentic-workflows-devAssigned to agentic-workflows-dev (Agentic Workflows Engineer)triagedIssue has been triagedtype:bugSomething brokenwave1:P3Wave 1 PR group P3wave:1-nextWave 1 — immediate next sprint

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions