Proposals
How the propose mode works — agents suggest changes, humans review and accept or reject.
Overview
When an AI agent updates a section, it can choose between two modes:
- Commit (default) — the change is applied immediately
- Propose — the change is saved as a proposal for human review
Proposals let you stay in control while still leveraging AI agents for generating and improving spec content.
How It Works
Creating a Proposal
When an agent calls update_section with mode: "propose":
- A new version is created with
type: "proposal"andproposalStatus: "pending" - The section's current content is NOT changed
- The proposal appears in the revision log and the proposals page
Example prompt:
"Review the Architecture section in Optimus and suggest improvements, but don't overwrite it directly."
The agent will call:
{
"tool": "update_section",
"params": {
"project": "optimus",
"section": "architecture",
"content": "... improved content ...",
"message": "Suggest WebSocket layer for real-time sync",
"description": "Current architecture misses real-time collaboration...",
"mode": "propose",
"agent_name": "cursor"
}
}
Reviewing Proposals
Proposals appear in two places:
- Section sidebar — a badge showing "2 proposals" next to sections with pending proposals
- Proposals page — a dedicated view listing all pending proposals across the project
Each proposal shows:
- Which agent suggested it
- The commit message and description
- A diff against the current section content
- Accept / Reject buttons
Accepting a Proposal
When you accept a proposal:
- The proposal's content replaces the section's current content
- The proposal's
proposalStatuschanges to"accepted" - An activity entry is logged
You can also Edit & Accept — modify the proposed content before applying it.
Rejecting a Proposal
When you reject a proposal:
- The section content remains unchanged
- The proposal's
proposalStatuschanges to"rejected" - You can optionally provide a reason
- An activity entry is logged
Proposals in the Revision Log
Proposals live in the same timeline as commits. The revision log shows both:
v5 | Cursor | "Suggest WebSocket layer" [PROPOSAL - pending]
v4 | Claude Code | "Add caching strategy"
v3 | Claude Code | "Restructure components"
v2 | Cursor | "Add deployment diagram"
v1 | Yurii | "Initial draft"
This unified timeline means you see the complete history of a section — every change, whether committed or proposed — in one place.
Via MCP Tools
Agents can interact with proposals through these MCP tools:
update_sectionwithmode: "propose"— create a proposallist_proposals— list all pending proposals in a projectaccept_proposal— accept a pending proposalreject_proposal— reject a pending proposal with optional reason
When to Use Proposals
Proposals are useful when:
- You want to review agent output before it takes effect
- Multiple agents are working on the same section and you want to compare suggestions
- You're using an agent you haven't tested yet and want a safety net
- You want to maintain a review workflow similar to pull requests
For trusted agents doing routine updates, direct commits are usually faster.