Skip to main content

Overview

The approval system lets each squad declare what agents can do automatically vs. what requires human sign-off. That declaration lives in plain YAML in SQUAD.md — it’s read by critic agents doing PR review, and (if you run a companion API + Slack app) by an interactive approve/reject flow. The two are independent: the policy is useful as documentation and as a critic-agent gate even if you never wire up Slack.
This is a different mechanism from governance, which protects goals.md/directives.md/SQUAD.md themselves from autonomous edits via native Claude Code permission rules. Approvals gate what an agent does; governance gates what an agent can rewrite.
Four levels of autonomy:

Configuration

Each squad’s SQUAD.md contains an approvals: section:

Action Categories

Auto Actions

Agents execute immediately without human intervention:

Notify Actions

Posted to the channel, but the agent proceeds without waiting:

Approve Actions

Require async approval via Slack:

Confirm Actions

Require synchronous confirmation before proceeding:

Thresholds

Automatic escalation based on impact:

How Thresholds Work

  1. Spend Threshold: Agent tracks cumulative spend. When approaching threshold, pauses for approval.
  2. Bulk Actions: Creating >5 issues? Closing >5 PRs? Requires approval.
  3. Files Changed: Large PRs automatically require squad lead review.

Approval Flow

Interactive Slack approve/reject buttons require a running companion API (SQUADS_API_URL) with a Slack app configured — that’s part of the hosted platform, not something the standalone local CLI spins up for you. Without it, squads approval send records a request but nothing decides it. What works standalone: squads add auto-creates a #squad-<name> Slack channel if SLACK_BOT_TOKEN is set, and critic agents can enforce the same policy: tiers directly on a PR without any Slack integration at all.

CLI Approval

squads approval cancel <id> exists in the CLI but isn’t implemented yet server-side — sending it is currently a no-op.

Escalation

Some actions escalate to higher-level channels:
When an action is in confirm, it escalates from the squad channel to the company channel, requiring explicit confirmation before proceeding.

Timeout Behavior

Approvals have configurable timeouts:

Per-Squad Examples

Engineering Squad

Company Squad


Best Practices

1. Start Restrictive

Begin with most actions in approve, move to auto as trust builds.

2. Use Thresholds

Don’t make everything require approval. Use thresholds to catch outliers.

3. Clear Channels

Each squad should have a dedicated approval channel. Don’t mix with general chat.

4. Timely Responses

Blocked agents waste compute. Respond to approvals quickly or adjust policies.

5. Document Exceptions

If you approve something unusual, note why in the approval response.

Monitoring Approvals

Slow approval times indicate policies may be too restrictive.