Skip to content

Proposals and confirming

Nothing enters your team's ledger until a person confirms it. Models propose; people confirm.

Where proposals come from

  • Your agent sessions. After a session, ALIGN reads what was kept from it and proposes the decisions it finds. Each proposal carries a receipt: an exact quote from your transcript, checked again by the database. A proposal from your sessions is visible only to you until you confirm it, share it, or it appears in your own pull request.
  • Your agent, through MCP. When you state a decision in a session, your agent can call record_decision. That makes a proposal visible only to you, never a confirmed decision.
  • Pull requests, and Slack and Linear (add-ons), can surface or record decisions too: see the PR check and Slack and Linear.

Two commands skip the proposal step because a person is typing them:

align decide "Invoices are emailed from a queue, never inline" --why "Retries without blocking checkout"
align ask "Who owns the currency tables?" --owner lead@example.com

decide records a confirmed decision with you as its author, after you type y. Its options: --why, --rejected (repeatable), --paths (comma-separated), and --commitment with --owner and --due. The statement is 12 to 280 characters. ask opens a question the whole repository can see. Keys look like AL-12 for decisions and commitments and Q-3 for questions.

Confirming in the terminal

align confirm

shows your waiting proposals one card at a time, most consequential first. A card shows the statement, why, the alternatives rejected, up to three receipts (location: “quote”), any conflict with a decision already confirmed, and proposed checks. Keys:

KeyWhat it does
cconfirm it as your team's decision
ssupersede: it replaces an existing decision (you give the reason)
rreject it, with a reason
kskip it for now
eedit the wording first (sent when you press c)
aaccept its proposed checks along with the confirm
hshare it with the repository; it stays a proposal
qquit; progress is saved

Keys typed in the first moment after a card appears, held-down repeats and pasted text are ignored, so a stray keystroke never confirms anything. align confirm --list prints the waiting proposals; align confirm AL-3 AL-4 confirms named ones after you type y (with --reject "<reason>" it rejects them). The y is read from your terminal, so a piped script cannot answer it, and every writing command refuses to run inside an agent's own shell: only you confirm.

Confirming in the console

The console's Inbox lists the proposals you can see, contradicted ones first, with Confirm, Reject, Edit and, for your private ones, Share with the team. While a row has focus, j and k move, c confirms, r rejects, s supersedes, e edits and u undoes. Every confirm or reject waits 10 seconds behind an Undo before it is sent. If someone changed the entry after you opened it, nothing is confirmed and the console asks you to read it again. An entry's own page also lets you revise a confirmed decision (with a reason), supersede it, answer or dismiss a question, dismiss a conflict, and accept or disable checks.

Confirming in a pull request

The ALIGN comment on a pull request lists New decisions in this change with a checkbox each: ticking a box confirms that decision at the wording shown. Commands go on the first line of a PR comment, for example /align confirm AL-1 AL-2 (see the PR check for the full list). Ticks and commands count only from a GitHub account linked to a member who can read the repository.

Confirming in Slack (add-on)

With the Slack add-on, confirm AL-12 in a mention or a direct message confirms it, once your Slack account is linked. See Slack and Linear.