All notable changes to this project will be documented in this file.
- Allow runtime state tools to persist the casting policy, registry, and history keys required by the coordinator (
casting/policy.json,casting/registry.json, andcasting/history.json), while continuing to reject unrelated casting paths (#1876, #1898).
This release is focused on hardening the gh-aw (Agentic Workflows) integration shipped in v0.12.0: the install contract, workflow router, plan lifecycle, dispatch reliability, and CI coverage are all tightened. It also adds squad health, fixes squad watch/squad loop externalized-state routing, fixes squad nap archival, and hardens the SDK's state and scheduler paths.
squad health— new readiness diagnostics command; shared workflows can gate on environment readiness before running (#1877).{prompt}token in custom watch/loop agent commands as an unambiguous placement for the generated prompt; the existing-p <prompt>fallback is preserved (#1708).squad doctornow checks that everyeol=lf-pinned file is actually LF on disk (not just in the index), names stale files, and points atnpm run fix:crlf; closes #1793.- Two stop signals for
squad watch/squad looppreviously parsed but never read —--sentinel-file <path>and.squad/ralph-stop— are now wired to the graceful shutdown path; closes #1711. - Workflow files are now backed up before
squad upgraderefreshes them (#1709). - Shell detection now fails loudly instead of silently skipping when no POSIX shell resolves (#1857).
feat(workflows): add advisory Squad reviewer— a lightweight advisory review step added to the gh-aw workflow so plan output is reviewed before activation (#1871).- Team Guard Step TG-2 — roster certification emitted into generated workflow output, letting an outer coordinator verify the cast is complete before dispatching (#1837).
squad-deps-worker— a new fail-closed dependency-manifest worker that validates and routes dependency-update tasks; Wave 1protected-files.excludeincluded (#1882, #1883, #1888).
feat(sdk): advertise real team capabilities in squad.agent.md— a generatedTeam Capabilitiesblock lists the actual cast, supported task types, and domain-to-agent routing hints; the block is rewritten on init, upgrade, and cast changes (#1881)."max"added toSquadReasoningEffortandVALID_REASONING_EFFORTSto match Copilot SDK 1.0.9 (#1693).
- Activation pin drift guard: a daily CI job checks that the Squad CLI activation pin in gh-aw templates matches the latest published release and opens a PR when it drifts (#1855).
- Activation pin is now automatically updated when a new CLI version publishes (#1858).
- (cli) Model catalog tiers and fallback routing updated for GPT-5.6 Sol, Terra, and Luna, and Gemini 3.1 Pro. Terra is the new default standard model for code and prompt tasks; Luna is its economy fallback (#1749, #1750).
fix(gh-aw): preserve Squad CLI install contract— all four gh-aw workflow templates (squad.yml,squad-cast.yml,squad-research.yml,squad-review.yml) now install the Squad CLI beforegh aw install, preventingsquadfrom being absent when thegh-awextension invokes it; this was the root cause of new-repo activation failures (#1887).fix(gh-aw): bump activation CLI pin 0.11.0 → 0.12.0for new-repo readiness (#1818).ci: pin gh-aw v0.86.2 and add strict compile gate for all four workflows— each workflow file is compiled and validated in CI; the compile job now non-skippably installs the gh-aw extension so the gate cannot be green-washed (#1886, #1775).
fix(gh-aw): fail loudly when /squad parses no command— prevents a no-op silent run when the slash command payload is malformed (#1824, #1832).fix(gh-aw): scan the first non-empty line in PC-0, not record 1— fixes plan-coordinator step parsing for plans whose first line is blank (#1841).fix(gh-aw): enforce activation agent bindings— agent binding is now validated before an activation step is dispatched (#1865).fix(gh-aw): bind squad:{agent} labels to each issue's own plan row— labels were previously applied to the wrong issue row in multi-issue plans (#1863).fix(gh-aw): stop the validation schema from shipping its own verdict— schema self-reference loop that caused validation to always pass removed (#1853).fix(gh-aw): refill dispatch slots from the root, not the parent epic— epic dispatch slot exhaustion no longer blocks sibling dispatch (#1787).fix(workflows): harden squad router— router hardening pass: improved command parsing, guard conditions, and error reporting (#1868).fix(workflows): harden implement relay provenance— provenance metadata is now correctly threaded through the implement relay step (#1869).fix(workflows): give plan validation adversarial teeth— plan validation now checks for injection-style patterns and structural violations (#1870).fix(dispatch): raise max to 2 and add schema static gate— dispatch parallelism cap raised and enforced by a static schema check (#1772, #1777).fix(gh-aw): refill dispatch slots from rootand long-path planning lifecycle defects corrected (#1778).- Continuation dispatch inputs interpolated so merge continuation resolves the correct epic (#1741).
- Nested source files and package-registry egress now allowed in workflow scope (#1744).
- Protected writes fall back to a review issue instead of failing silently.
- Dispatch workflow schema probes prevented (#1766).
fix(squad.md): stop seeding Owner/Agent binding with the tokens it forbids(#1789).test(gh-aw): enforce dispatcher-first install order— CI test asserts the install ordering contract is maintained (#1879).test(gh-aw): enforce shell input security contract over compiled output— compiled workflow output is scanned for unsafe input expansion patterns (#1834, #1866).fix(ci): lint gh-aw generated workflows instead of skipping them— generated workflow YAML is now included in the actionlint pass (#1854).
fix(cli): route watch/loop capability state through the effective state dir— aftersquad externalize, all capability state reads/writes (decision hygiene, cleanup, retro, subsquad discovery, ralph-instructions check) now usestateRootfromeffectiveSquadDir().stateDirinstead of a bare.squad/join; closes #1490 (#1660).fix(cli): verify process identity before killing tracked watch PIDs— cross-checks the live process's OS start time againstspawnedAtbefore killing, preventing collateral kills after crash + PID reuse (#1641, #1665).fix(squad): make Scribe archival incapable of destroying state—squad nap/archiveDecisionsnow refuses to run when the destination is untracked and git-ignored, verifies entry count before trimming the source, and uses fence-aware record-boundary scanning. SDK addsarchiveEntries(),resolveTrackedDestination(),prepareInboxBodyForMerge(),demoteHeadings(); fixes #1774, #1783, #1760 (#1792).fix(sdk): refuse consult when info/exclude resolves outside the project—setupConsultModenow verifiesinfo/excludebelongs to the repository rooted atprojectRoot; prevents hiding.squad/across the main checkout and all sibling worktrees when called from a linked worktree (#1850).- Watch's PID tracker cross-checks a live process's actual OS start time against
spawnedAtbefore killing it, preventing collateral kills after a crash + PID reuse (#1665).
fix(sdk): wire FSStorageProvider rootDir in resolveSquadState—resolveSquadState()now passesrootDir: paths.teamDirtoFSStorageProviderso the path-traversal guard validates state writes; also fixesresolveSquadPaths()treatingconfig.teamRoot: "."as remote mode, which pointedteamDirone level above.squad/; fixes #1555 (#1695).fix(sdk): decode URL-encoded segments in Azure DevOps remote parsing—parseAzureDevOpsRemote()decodes percent-encoded characters in org/project/repo segments for all three URL formats (dev.azure.com, SSH, legacyvisualstudio.com), fixingazCLI calls for projects with spaces in their names; fixes #1526 (#1637).fix(sdk): support command paths containing spaces in scheduler script tasks—LocalPollingProvidernow parsestask.refwith quote awareness and longest-match path resolution, fixing scheduler tasks on the default Windows Node.js install path (C:\Program Files\nodejs\node.exe). AddsTaskConfig.argvas the unambiguous alternative. Spawn failures now surface aspawnErrorcode instead of silently producing empty output; fixes #1794 (#1802).- Insider tag promotion now split by package so SDK and CLI are promoted independently (#1710).
- (cli) Ship GitHub Agentic Workflows (
gh-aw): an executable SDLC lifecycle for Squad with/squad research,/squad plan(split into scope/impl/activate phases),/squad cast, and phased plan activation/acceptance, plus program-level planning (initiatives, epics, milestones), a planning policy schema, native dependency edges, and body-metadata sizing (#1649-#1658, #1680, #1685). - (cli) Add standalone, npm-free distribution: Homebrew and winget packaging, a native
squad.exe, and npm-freesquad_stateMCP spec generation for standalone bundles (#1593, #1610, #1611). - (cli) Ship the
ralph-instructions.mdtemplate and install pipeline forsquad watch --execute(#1314). - (sdk+cli) Add category-based model cost policy with a live catalog/pricing refresh and
squad models refresh(#1080, #1183, #1445). - (cli) Support custom universes and descriptive default naming in casting, and add descriptive run-names to the Squad GitHub Actions workflow (#1635, #1643, #1646).
- (cli) Assign unique colors to squad member labels via deterministic hashing of slugified names (#1663).
- (cli) Add
squad update-check --jsonfor tooling/CI (#1440). - (sdk) Hydrate
WorkItem.bodyviagetWorkItemand route the two-pass scan through the platform adapter (#1414). - (cli) Default new VS Code chat sessions to Squad on
squad init. - (sdk+cli) Add Layer A/B/C dispatch-enforcement governance: coordinator tool-profile restriction plus Scribe DispatchGuard audit infrastructure, with an identity lock and routing guard in
copilot-instructions.md(#1537). - Docs: add Azure hosting guides (Dockerfile contract, ACA, AKS), a production security-hardening guide (threat model, prompt-injection defense, credential hygiene), a production-operations runbook (observability, state-backend selection, troubleshooting), and a Microsoft Agent Framework integration guide (#1574, #1575, #1578, #1579).
- (cli) Add
gh aw inittooling — skills, MCP config, and setup/maintenance workflows — for consuming gh-aw from a project (#1592). - (sdk) Expose
memory.*tools (classify, write, search, promote, delete, audit) through thesquad_stateMCP server so agents can manage tiered memory directly. - (cli) Add a Squad implementation mode:
/squad implementdispatches regular issues and ready epic tasks to an isolated implementation worker workflow, guarding dependency handling, duplicate-PR detection, concurrency, and PR file scope (#1682). - (cli) Ship an Auto-Cast pivot for gh-aw: when a repo has no team yet, workflows write a pending-intent marker, dedupe in-flight Cast PRs, and resume the original request once casting completes, so a single issue can guide resumable work end-to-end (#1690).
- (sdk) Add
"max"toSquadReasoningEffortandVALID_REASONING_EFFORTS, matching Copilot SDK 1.0.9'sReasoningEffort = "max"(#1693).
- (cli) Harden the Squad coordinator workflow prompt for gh-aw reliability: hard completion gates, atomic task-call contracts, configurable model selection, forward-ported safe-output hardening, and prompt-size compression (135KB → under the 100KB gh-aw limit) (#1669, #1678, #1680, #1683, #1685).
- (cli) Make the coordinator canary check three-state and add a HEAD canary to catch false positives (#1461, #1517).
- (cli) Warn before launching 2+ parallel background agents in a shared worktree (#1484).
- (cli) CI: pin GitHub Actions references to immutable commit SHAs across shipped workflow templates, and fail CI when unreleased changesets accumulate (#1475, #1481).
- Docs: restructure navigation and do a voice pass across get-started, concepts, and issue-truth content; add the agentic-SDLC demo walkthrough (#1570-#1573).
- Refresh dependencies across the workspace, including TypeScript, Vitest 4, Ink 7,
@github/copilot-sdk,@github/copilot, and OpenTelemetry, plus routine security/patch bumps. - Bump
@hono/node-serverto 2.1.0 and the workspace's minor-patch dependency group (@typescript-eslint/eslint-plugin,@typescript-eslint/parser,eslint,eslint-plugin-n,@types/node,@github/copilot-sdk,ws) (#1692, #1694).
- (cli) Pin the CLI's
squad-sdkdependency to the exact published version inpublish-cliso installs can no longer resolve a stale SDK (#1638). - (cli)
squad watch's self-pull capability no longer abandons stashed local changes whengit pull --ff-onlyfails (#1640). - (sdk) Normalize dotted
ToolRegistrynames at the Copilot external-tool boundary. - (sdk) Add a recursive
deleteDirand rename theexternalstub toexternal-stub(#1487). - (cli) Fix
squad externalize/internalizecorrupting non-UTF-8 files under.squad/(#1492). - (sdk+cli) Promote the insider dist-tag when
latestis newer (#1495). - (cli) Follow externalized state in
squad copilotandsquad rc(#1464). - (cli) Quote
GITHUB_OUTPUT/GITHUB_STEP_SUMMARYredirects (SC2086) and add anactionlintCI gate (#1557). - (cli) Downgrade the
issuespermission to read in the gh-aw workflow, and fix the gh-aw guide link in the README. - Docs: fix pre-existing broken links, correct platform-specific path examples, and add PATH-fix installation troubleshooting guidance (#1459).
- (cli)
ralph-triageno longer hardcodesapi.github.com; it resolves the GitHub API base fromGITHUB_API_URL/GITHUB_SERVER_URLso Squad Heartbeat triage works on GitHub Enterprise runners (#1142). - (cli)
squad exportnow resolves externalized state: aftersquad externalize, export reads from the external state directory instead of the stale local.squad/copy (#1396).
- (cli) Exclude nested/alumni agent history paths from the unsafe-git scanner so DispatchGuard audits don't false-positive on archived agent state (#1559).
- (cli) Add
squad preset install <source>for installing shared presets from GitHub URLs or local paths (#1224). - (cli) Add
squad registry add/list/removefor discovery-only peer squads, plus the bundled cross-squad communication skill. - (cli) Add
castterminology across help and docs while keepinghireas a silent compatibility alias (#1394). - (sdk+cli) Add Copilot App sub-session spawning for cast members and thread reasoning-effort settings through agent dispatch (#1385).
- (sdk+cli) Expose memory tools through the
squad_stateMCP server and improve Fact Checker auto-scaffolding/plumbing.
- (sdk+cli) Slim the bundled
squad.agent.mdby extracting long guidance into satellite skills (#1311). - (cli) Move bundled skills from
.copilot/skills/to.github/skills/so they are visible to all Copilot surfaces. - (cli) Rename user-facing ".NET Aspire" references to "Aspire" in CLI help and command output (#1239).
- (sdk+cli) Refresh the toolchain and integrations, including
@github/copilot-sdk1.0.4, TypeScript 6, Vitest 4, Ink 7, OpenTelemetry 2.x, and Node type updates.
- (cli) Pin CLI-to-SDK workspace resolution so local builds and runtime use the workspace SDK instead of a stale published package (#1406).
- (sdk+cli) Restore the green test suite by reconciling personal squad paths, stabilizing observer category handling, guarding storage case-insensitivity, and skipping environment-dependent tests when prerequisites are missing (#1416).
- (sdk+cli) Guard symlink-sensitive tests on Windows or restricted CI filesystems (#1418).
- (sdk+cli) Harden observer change resolution for directory events, symlinks, and filesystem scan errors.
- (sdk+cli) Fix state-backend handshake, SQUAD_HOME/SQUAD_PERSONAL_DIR resolution, preset apply wiring, routing example quote stripping, YAML escaping, and MCP config pollution regressions.
- (cli) Fix Windows command escaping, top-level help coverage for
externalize/internalize, slash-command discovery, and upgrade/self-repair flows. - (sdk) Export gitignore-state helpers, update OTel resource APIs for 2.x, and align the adapter client with
@github/copilot-sdk1.0.4.
First stable release since v0.9.4 (April 25). Consumes 97 changesets (sdk: 50, cli: 71).
- (cli) iter-9: inject
--yolo --additional-mcp-config @.mcp.jsonin all non-interactive copilot spawns; fix path regression from.copilot/mcp-config.json(iter-7) to.mcp.json(iter-8 canonical location); add fallback warning when.mcp.jsonis absent; add--yolodeduplication guard; document Copilot CLI 1.0.59+ folder-trust security gate
- (cli) Add /fleet hybrid dispatch mode for squad watch --execute (#775) — enables parallel issue analysis via Copilot CLI /fleet, 2.9x faster than sequential dispatch for read-heavy work
- (sdk) perf(agents): parallelize charter discovery with concurrency limit to reduce multi-agent load time
- (sdk+cli) perf(resolution): memoize squad-dir lookups; deduplicate squads.json reads to reduce filesystem I/O on repeated resolution calls
- (sdk) perf(scheduler): convert sequential async execution to concurrent with bounded concurrency to improve multi-agent dispatch throughput
- (sdk) Add rework rate OTEL metrics (#265) — tracks PR revision patterns as the emerging 5th DORA metric
- (sdk+cli) Add routing.md to squad export/import functionality
- (sdk) Add SkillScriptLoader, handler types, and applySkillHandlers for executable skill handler scripts
- (cli) feat: APM integration — squad skill publish/install + apm.yml in init
- (sdk) feat: Cooperative rate limiting with predictive circuit breaker
- (sdk+cli) Cross-squad orchestration — discovery, delegation, and manifest (#316). Adds manifest schema,
squad discover/squad delegatecommands, and runtime module for coordinating work across multiple Squad instances. - (cli) Add deprecation warnings for tunnel, rc, and REPL commands. The interactive shell (no-args),
squad start,squad start --tunnel,squad rc, andsquad rc-tunnelnow emit yellow deprecation notices pointing users to the GitHub Copilot CLI. No behavior changes — all commands still work. - (cli) docs: add fork contribution workflow to CONTRIBUTING.md
- (cli) Add user-facing documentation for state backends (local, orphan-branch, two-layer)
- (sdk) Add dual-mode deployment support for capabilities routing.
- (sdk+cli) feat: add error-recovery skill for standard agent failure recovery patterns
- (sdk+cli) Add external state storage — move .squad/ out of the working tree (#792)
- (sdk+cli) Add fact-checker as a built-in agent role (#789)
- (cli) Fix squad doctor and upgrade for insiders installs: add .squad/casting/ to ENSURE_DIRECTORIES, scaffold casting defaults from templates with permission-safe fallback, and clarify ESM warnings for global installs.
- (sdk) Sync squad.agent.md roster when agents added to team.md
- (cli) fix(ci): fix multiple CI test failures introduced by PR #1035 coordinator slimming
- (sdk+cli) Warn when squad.agent.md template is missing during upgrade or init instead of silently skipping file creation. Adds
warningsfield toInitResultfor structured error reporting. - (sdk+cli) feat(sdk): git-notes + orphan-branch state backends for .squad/
- (sdk+cli) feat: add iterative-retrieval skill for structured max-3-cycle agent spawning
- (cli) docs: Add KEDA external scaler template for GitHub issue-driven autoscaling
- (cli) feat(cli): Add
squad loopcommand — prompt-driven continuous work loop - (sdk+cli) feat: Machine capability discovery and
needs:*label-based issue routing - (sdk+cli) Add
squad init --mcp-frontmatterto write MCP server config into the Squad agent frontmatter instead of.copilot/mcp-config.jsonfor compatible agent harnesses. - (sdk+cli) feat: add notification-routing skill for pub-sub channel routing
- (sdk+cli) feat: add declarative plugin behavior context proof
- (cli) Add
--notify-levelto control watch round reporting noise (#803) - (sdk+cli) Add Rai as Squad's third built-in agent — a Responsible AI (RAI) reviewer
- (sdk+cli) feat: add reflect skill for in-session learning capture and mistake prevention
- (sdk+cli) Add
--repoand--branchflags tosquad exportandsquad importcommands, enabling users to push/pull Squad configuration directly to/from a GitHub repository via the GitHub Contents API. - (sdk+cli) Add retro enforcement skill with Test-RetroOverdue and ceremonies template update.
- (sdk) Add
.squad/.scratch/directory for organized temp file management (#790) - (sdk) Add SDK feature parity batch 2 — 64 tests covering manual ceremonies (#27), ceremony cooldown (#28), human team members (#36), constraint budget enforcement (#49 — rate limiter, file-write guards, shell restrictions, PII scrubbing), multi-agent artifact coordination (#50), and builder validation edge cases.
- (sdk) test: SDK feature parity batch 3 — 46 tests for #31, #47, #45, #46
- (cli) Add
squad upgrade --selfto upgrade the CLI package itself (#798) - (cli) feat: session init update check with extensible session-init reference
- (cli) feat: add squad-commands skill for in-chat command discovery
- (sdk+cli) feat: add SQUAD_HOME env var and preset system
- (cli) Fix Windows spawn EINVAL in watch capabilities by adding
shell: truetoexecFile()calls in monitor-teams, monitor-email, retro, and decision-hygiene capabilities. Add Copilot CLI preflight check tosquad doctorand monitor capabilities so missinggh copilotextension is flagged early. Improve team hire confirmation UX to show member names inline with the prompt. (closes #920, closes #880, closes #1107) - (sdk) Bump
@github/copilot-sdkfrom^0.1.32to^0.3.0to fix ESM module resolution error (ERR_MODULE_NOT_FOUND for vscode-jsonrpc/node). Add explicit GitHub repo config support in.squad/config.json({ "github": { "owner": "...", "repo": "..." } }) so platform adapter prefers user-specified repo over auto-detection from origin remote. (closes #1062, closes #905) - (sdk+cli) Add delete() and append() to StateBackend interface; add resolveSquadState() entry point; add StateBackendStorageAdapter; add git-notes agent protocol templates
- (sdk) feat(sdk): Add Microsoft Teams communication adapter
- (sdk+cli) feat: add tiered-memory skill for hot/cold/wiki agent context management
- (cli) feat(watch): circuit breaker integration for rate limit protection (#515)
- (cli) feat(watch): health check — show running watch instance status (#808)
- (cli) Add --verbose flag to squad watch for debugging empty boards and silent failures (#781)
- (sdk+cli) Fix hardcoded "Brady" in template files — LLMs now use actual git username instead of example name (closes #977)
- (cli) Fix changelog-gate CI to accept .changeset/ files as alternative to direct CHANGELOG.md edits
- (sdk+cli) fix: bump CLI version to 0.9.7-preview; align E2E skill and policy gate with CONTRIBUTING.md
- (sdk+cli) fix: context overflow sentinel and coordinator size reduction (retroactive for #1035)
- (sdk+cli) Fix coordinator and Scribe templates so spawned agents receive and write the resolved current datetime instead of placeholder text.
- (cli) fix(cli): revert detect-squad-dir to zero-dependency bootstrap
- (cli) fix: restore CI green on dev — 25 regression fixes + 6 test corrections
- (cli) Fix export/import producing blank decisions.md and team.md files. Export now includes these files in the manifest, and import restores their content.
- (cli) Fix runtime commands to correctly resolve externalized state paths
- (sdk+cli) Fix 5 bugs: dotted repo names, icon spacing, board owner, charter passing, missing playbooks
- (cli) fix:
/initwith no args now accepts follow-up message as cast prompt, andcreateTeamcorrectly createsteam.md/routing.mdin fresh projects - (cli) fix(nap): account for separator newlines in decision archival budget
- (cli) fix(cli): wire --team-root / SQUAD_TEAM_ROOT into squad resolution for nap, status, and cost commands (#734)
- (cli) fix: CLI no longer bails when configured is false; starts onboarding session instead (#843)
- (cli) fix(coordinator): resolve externalized state, teamRoot, stale work, and cleanup loops
- (sdk+cli) Fix permission handler to use
approve-onceinstead of deprecatedapprovedkind, aligning with Copilot CLI v1.0.54+ permission contract - (cli) Fix post-init message to recommend
copilot --agent squadinstead of deprecatedsquadcommand (closes #1034, closes #1007) - (sdk+cli) Fix state-backend and upgrade regressions (#1163, #1185, #1190, #1191, #1194)
- (cli) Fix
squad <command> --helpsilently running the command instead of showing help (#1201) - (cli) Extend SQUAD_TEAM_ROOT to all resolveSquad() call sites for subprocess compatibility
- (sdk+cli) Fix triage label slug derivation: use
slugify()instead oftoLowerCase()so multi-word agent names produce valid GitHub labels (e.g. "Steve Rogers" →squad:steve-rogersinstead ofsquad:steve rogers). - (cli) fix(watch): Windows shell:true, shared agent-spawn, round-level fetch (#920, #923)
- (sdk+cli) fix: use TEMPLATE_MANIFEST to drive skill installation instead of wholesale directory copy
- (sdk) Fix squad-commands skill routing and configuration for Copilot integration
- (sdk) State backend hardening: retry with exponential backoff for transient git errors, circuit-breaker to prevent cascading failures, read-only startup verification, and observable error surfacing replacing silent swallowing.
- (cli) fix(watch): 3 UX improvements — round timing output, --log-file tee flag, immediate startup feedback (#2141)
- (sdk+cli) Fix Windows Azure CLI execution and ADO state mapping in squad watch
- (sdk) fix(sdk): wire
squad_routetool handler to actually create target sessions
- Communications:
createCommunicationAdapteris now async. Downstream consumers building custom adapters mustawaitthe factory call. Not flagged as breaking per pre-1.0 SemVer. - (sdk) ADO configurable work item types, area paths, and iteration support (#240)
- (cli) Ship 8 built-in skills with squad init/upgrade (#788)
- (cli) Allow memory diagnostics log level to be configured from
.squad/config.json. - (sdk+cli) Enable persistent Ralph — heartbeat cron + healthCheck timer
- (sdk+cli) Squad coordinator now scans all 5 project skill directories: Copilot CLI's 3
- (sdk+cli) Generic, provider-agnostic scheduler for Squad (#296) — unified schedule.json manifest with LocalPolling and GitHubActions provider adapters, CLI commands (list, run, init, status), schema validation, and cron/interval trigger evaluation.
- (sdk+cli) Harden runtime state tools so write, append, and delete only mutate approved Squad runtime state paths, and refresh prompt templates to require state-tool persistence and literal datetime propagation.
- (cli) Widen changelog-gate coverage for template and scaffolding paths
- (cli) docs: point README migration guide links to the published docs site
- Added
Squad.Agents.AI, anet10.0Microsoft Agent Framework package that exposes a Squad team as anAIAgent. - Public surface:
SquadAgent,SquadAgentOptions,SquadConnectionFactory, andSquadServiceCollectionExtensions. - Added DI registration, PATH/URI connection-string parsing, GitHub token/provider options, and XML documentation for the public preview surface.
- Added README documentation for the
Squad.Agents.AIpackage insrc/Squad.Agents.AI/README.md.
- Personal Squad concept (#508) — isolated developer workspace with own team.md, routing.md, and agent roster
- Ambient discovery — automatic detection of personal squad at
~/.squad/via environment variables and fallback paths - CLI commands (#508) —
squad personal init,squad personal list,squad personal use,squad personal remove - Governance integration (#508) — hooks, ceremonies, telemetry isolated per personal squad
- Unit & integration tests (#508) — full test coverage for personal squad flows
- Worktree creation (#529) — coordinator spawns managed worktrees for parallel agent work via
squad worktree spawn - Cross-squad orchestration (#446) — agents coordinate work across multiple squads and worktrees
- Persistent Ralph — watch + heartbeat (#443) — long-running Ralph daemon with health monitoring
- Regression guard (#521) — worktree .git detection (file vs directory) with full test coverage
- Capability inference (#514) — automatic detection of available tools, models, and hardware specs at session start
- needs: Label Routing* (#514) — agents self-route based on discovered capabilities vs work requirements
- Predictive circuit breaker (#515) — model token budget forecasting to prevent runtime exhaustion
- Rate limit recovery (#464) — surface errors with actionable recovery options
- Circuit breaker for Ralph (#451) — graceful degradation under model quota pressure
- Cost-conscious model selection (#500) — automatic selection of cheaper models when quality thresholds permit
- Economy mode skill (#503) — governance proposals for balanced cost/quality tradeoffs
- Token usage tracking (#453) — visibility into per-agent token consumption and costs
- Auto-wire in initSquadTelemetry() (#281) — telemetry initialization no longer requires manual wiring
- OpenTelemetry integration — automatic context propagation across squad sessions
- Template document (#527) — standardized issue lifecycle workflow (creation → triage → assignment → completion)
- Integrated into squad init — available to all new teams via
.squad/templates/issue-lifecycle.md
- Agent autoscaling template (#516) — KEDA-based horizontal scaling for compute-intensive agent work
- Documentation (#519) — setup guide for Kubernetes-based squad deployments
- After Agent Work flow (#473) — gap analysis verification loop ensures all requirements are met before task completion
- Checklist-driven completion — structured validation to prevent incomplete deliverables
- Session recovery (#442) — find and resume lost sessions without restarting work
- Integration — available as a core team skill via
.squad/skills/session-recovery/SKILL.md
- Per-agent cost tracking (#453) — token consumption and estimated costs per agent
- Dashboard integration — visible in session UI for cost-conscious workflows
- Multi-account GitHub workflows (#470) — safely switch GitHub identities within a squad session
- Integration — available as
.squad/skills/gh-auth-isolation/SKILL.md
- 10 Astro feature items (#524) — implemented search tuning, section badges, test coverage indicators
- Autonomous agents guide (#492) — comprehensive guide for building autonomous agents with Squad SDK
- Blog posts (#029) — upgrade cross-testing at scale post
- Expanded search (#482) — Pagefind tuning with section badges for better discoverability
- CLI README expansion (#487) — detailed CLI reference with workflow examples
- Teams MCP integration refresh (#496) — updated Workflows webhook documentation
- Migration guide updates (#320, #468) — @latest installation instructions and heartbeat config
- ESLint with TypeScript support (#493) — static analysis for common runtime anti-patterns
- Integration — available in CLI pre-flight checks
- Eliminated scroll-to-top flicker caused by Ink's fullscreen
clearTerminalpath firing on every render cycle - Reduced re-render churn via memoized elapsed-time display (one-second granularity gate) and consolidated animation intervals
- Stabilized component keys (timestamp-based instead of shifting array indices) to prevent Ink remounts
- Pinned live viewport height to keep input prompt above fold on all terminal sizes
- P0 upgrade gaps (#544) — context-aware footer and EPERM handling for permission issues
- Gitignore parent coverage (#549) —
.gitignoreupdates for nested squad directories - ADO configurable work item types (#444) — flexible schema for Azure DevOps work items
- Template directory audit (#461) — all template references aligned with
.squad/templates/ - Package template sync (#462) — monorepo workspace templates now in sync
- Complete exports check — verify all ESM exports before applying patch
- Dual-layer ESM fix (#449) — Node 22/24 compatibility for vscode-jsonrpc resolution
- Node 24+ hard-fail (#502) — clear error message for Node <22.5.0 with upgrade guidance
- SIGINT/SIGTERM handling (#486) — graceful shutdown with 22+ tests for signal handling
- Read-modify-write race condition (#480) — fixed history-shadow.ts file access race
- az CLI timeout (#483) — 2s timeout for getAvailableWorkItemTypes to prevent hangs
- Memory safety caps (#259) — file watcher filtering and memory limits
- User model preference persistence (#284) — model selection now persists across sessions
- Repository auto-detection (#437) — auto-detect repo owner/name at session start
- CI hardening — stale lockfile handling, manual rerun workflow, merge ref fixes
- Casting universe alignment (#459) — align casting universe count with reality
- npm-only distribution — removed GitHub-native distribution channel
- Installation:
npm install -g @bradygaster/squad-cli(standard npm registry) - Verified upgrade path — tested at scale across 100+ projects
- Agent anatomy & hiring checklist (#439) — detailed guide for building team rosters
- Behavior documentation (#448) — nap, reskill, and compact behavior reference
- Content gap fill — 7 recent PRs documented
- PAO external communications (#426) — Phase 1 infrastructure for multi-channel squad updates
- Casting reference (#814133d) — comprehensive casting configuration guide
- 40+ commits merged since v0.8.25
- 6+ major features (Personal Squad, Worktree Spawning, Capability Discovery, Cooperative Rate Limiting, Economy Mode, Auto-wire Telemetry)
- 10+ docs site improvements via Astro
- 15+ stability & compatibility fixes
- Tested at scale — upgrade process verified across 100+ projects
- Governance layer — new Personal Squad feature enables distributed developer workflows
- PlatformAdapter interface — unified API for GitHub, ADO, and Microsoft Planner
- AzureDevOpsAdapter —
az boardsCLI for work items,az reposfor PRs - GitHubAdapter —
ghCLI wrapper implementing PlatformAdapter - PlannerAdapter — Microsoft Graph API for hybrid work-item tracking
- Cross-project ADO config via
.squad/config.json— work items can live in a different org/project than the repo
- Pluggable agent-human messaging — Scribe/Ralph can post updates through platform-appropriate channels
- Four adapters: FileLog (zero-config), GitHub Discussions, ADO Work Item Discussions, Teams Webhook (stub)
- Factory auto-detection —
createCommunicationAdapter(repoRoot)selects the right adapter
- Workstreams → SubSquads across CLI, types, and docs
- CLI:
squad subsquads(withworkstreamsandstreamsas deprecated aliases) - Old names preserved as
@deprecatedre-exports for backward compatibility
execSync→execFileSync(prevents shell injection)escapeWiql()helper (prevents WIQL injection in ADO queries)curl --config stdin(hides bearer tokens from process listing)- Case-insensitive URL detection for ADO remotes
- Cross-platform draft filter (
findstr→ JMESPath) - PR status mapping (
active→openforghCLI) gh issue createfix (parse URL from stdout, not--json)
- Runtime
Module._resolveFilenameintercept for Node 24+ ESM compatibility - 5-layer secret defense architecture
- 59 TDD security hook tests
.squad/skills/secret-handling/SKILL.mdteam reference
- Contributor Guide page in docs site Guide section
- Squad Contributors Guide page (36+ contributors honored)
- Concepts and Cookbook sections wired into docs build
- Broken links fixed across docs site
- 8 PRs merged (#191, #263, #268, #270, #272, #275, #277, #266)
- 153 new tests (92 platform + 15 comms + 46 SubSquads)
- 59 security tests
- 8 issues closed
- 3 new docs pages, 6+ broken links fixed
- Node 24+
squad initcrash fix (#XXX) — v0.8.23 resolvesERR_MODULE_NOT_FOUND: Cannot find module 'vscode-jsonrpc/node'crash that occurs on Node.js 24+ and GitHub Codespaces. Root cause: upstream ESM import issue in@github/copilot-sdk. Two-layer defense implemented:- Lazy imports — Commands
init,build,link,migrateno longer eagerly load copilot-sdk at startup - Postinstall patch — Automatically fixes broken ESM import at install time
- Side benefit: Faster CLI startup for non-session commands
- Lazy imports — Commands
- Comprehensive guide for
squad rc(Remote Control) covering:- ACP (Azure Communication Platform) passthrough architecture
- 7-layer security model for session isolation and encryption
- Mobile keyboard shortcuts and accessibility features
- Troubleshooting guide for common connection issues
- 2 issues closed
- 3 PRs merged
- 3,811 tests passing (3,840 total, 0 logic failures)
- 1 critical crash fix (Node 24+ compatibility)
- Builder functions — Type-safe team configuration with runtime validation
defineTeam()— Team metadata, project context, member rosterdefineAgent()— Agent definition with role, model, tools, capabilitiesdefineRouting()— Routing rules with pattern matching and prioritydefineCeremony()— Ceremony scheduling (standups, retros, etc.)defineHooks()— Governance hooks (write paths, blocked commands, PII scrubbing)defineCasting()— Casting configuration (universe allowlists, overflow strategy)defineTelemetry()— OpenTelemetry configurationdefineSquad()— Top-level composition builder
squad buildcommand — Compile TypeScript definitions to.squad/markdown- Generates
.squad/team.md,.squad/routing.md, agent charters, ceremonies - Supports
--check(validation),--dry-run(preview),--watch(file monitoring stub) - Protected files (decisions.md, history.md) never overwritten
- Generates
- SDK Mode Detection — Coordinator prompt includes SDK-First mode awareness
- Documentation
- New guide: SDK-First Mode — concepts, builder reference, examples
- Updated SDK Reference — builder function signatures and types
- README quick reference for SDK-First teams
Added — Remote Squad Mode (ported from @spboyer's bradygaster/squad#131)
resolveSquadPaths()dual-root resolver — project-local vs team identity directoriessquad doctorcommand — 9-check setup validation with emoji outputsquad link <path>command — link a project to a remote team rootsquad init --mode remote— initialize with remote team root configensureSquadPathDual()/ensureSquadPathResolved()— dual-root write guards
- Installation crash fix (#247) —
npx @bradygaster/squad-cliwas failing on fresh installs due to hard dependency on@opentelemetry/apithat couldn't resolve in isolated npm environments. Createdotel-api.tsresilient wrapper with full no-op fallbacks. Moved OTel to optional dependencies. Telemetry now gracefully degrades when absent. - CLI command wiring (#244) — Commands
rc,copilot-bridge,init-remote,rc-tunnelwere implemented but never wired into CLI entry point. Now properly connected and discoverable. - Model config round-trip (#245) —
AgentDefinition.modelnow acceptsstring | ModelPreferencefor structured model configuration. Charter compiler updated to emit and parse the new format correctly. - ExperimentalWarning suppression — Node's
ExperimentalWarningfornode:sqliteno longer leaks into terminal output. Suppressed via process.emit override in cli-entry.ts. - Blankspace fix (#239) — Idle blank space below agent panel removed. Conditional height constraint only active during processing.
- Windows race condition (EBUSY) —
fs.rmwith retry logic and exponential backoff. Tests now pass reliably on Windows. - Test hardening — Speed gate threshold adjustments for growing CLI codebase. 25 regression tests fixed (PR #221).
- CI stabilization — GitHub Actions pipeline fixed and green (PRs #232, #228).
- Distribution: npm-only distribution channel. No more GitHub-native distribution (
npx github:bradygaster/squad). Users now install vianpm install -g @bradygaster/squad-cliornpx @bradygaster/squad-clifrom npm registry. - Semantic Versioning fix (#692): Version format changed from
X.Y.Z.N-previewtoX.Y.Z-preview.Nto comply with semantic versioning spec (prerelease identifier after patch, build metadata after prerelease). Example:0.8.6-preview.1instead of0.8.6.1-preview. - Version transition: Public repo final version was
0.8.5.1. Private repo continues at0.8.xcadence (next publish after 0.8.17 is 0.8.18), following semver prerelease convention for development.
- Thanks to Shayne Boyer (@spboyer) for the original remote mode design.
- PR #199 (migration command) received, reviewed, and feedback captured as issue #231 for future implementation.
- PR #243 (blankspace fix) — community contribution cherry-picked and credited.
- 26 issues closed
- 16 PRs merged
- 3,724 tests passing (3,740 total, 13 known Windows timeout flakes, 0 logic failures)
- 8 builder functions shipped
- 4 CLI commands wired
- 1 critical crash fix (OTel dependency)
- 25 regression tests fixed
- Template path fix (#190): Corrected all references from
.squad-templates/to.squad/templates/to align with the project's directory structure. This ensures the CLI correctly resolves team member charters and other template resources. - Init test templates: Updated initialization tests to reference the corrected
.squad/templates/directory path.
Added — Remote Squad Mode (ported from @spboyer's bradygaster/squad#131)
resolveSquadPaths()dual-root resolver — project-local vs team identity directories (#311)squad doctorcommand — 9-check setup validation with emoji output (#312)squad link <path>command — link a project to a remote team root (#313)squad init --mode remote— initialize with remote team root config (#313)ensureSquadPathDual()/ensureSquadPathResolved()— dual-root write guards (#314)
- Distribution: Migrated from GitHub-native (
npx github:bradygaster/squad) to npm packages (npm install -g @bradygaster/squad-cli/npx @bradygaster/squad-cli) - Packages: Independent versioning via @changesets/cli —
@bradygaster/squad-sdkand@bradygaster/squad-clievolve on separate cadences - Structure: Monorepo layout with workspace packages (SDK + CLI)
- Directory:
.squad/directory structure (migration from.ai-team/) - Semantic Versioning: All versions now comply with semver spec (prerelease format
X.Y.Z-preview.N)
- CLI entry point moved from
dist/index.jstodist/cli-entry.js. If you reference the binary directly, update your path.npxandnpmbin resolution is unchanged. (#187) - CRLF normalization: All parsers now normalize line endings before parsing. Windows users with
core.autocrlf=trueno longer get\r-tainted values. (#220, #221) process.exit()removed from library-consumable functions. VS Code extensions can now safely import CLI functions without risking extension host termination. (#189)- Removed
.squadbranch protection guard (squad-main-guard.yml) — no longer needed with npm workspacefilesfield exclusions
- New utility:
normalizeEol()insrc/utils/normalize-eol.ts - New entry point:
src/cli-entry.ts(CLI bootstrap separated from library exports) - Migrated to npm workspace publishing (
@bradygaster/squad-sdk,@bradygaster/squad-cli) - Changesets infrastructure for independent package versioning