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.comdecide 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 confirmshows 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:
| Key | What it does |
|---|---|
c | confirm it as your team's decision |
s | supersede: it replaces an existing decision (you give the reason) |
r | reject it, with a reason |
k | skip it for now |
e | edit the wording first (sent when you press c) |
a | accept its proposed checks along with the confirm |
h | share it with the repository; it stays a proposal |
q | quit; 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.