It proposes. You approve. Nothing lands until you've read the diff.
Every agent starts in plan mode: it reads, writes a plan, and waits. You approve, steer, or reject — and its finished work sits on its own branch until you have read every hunk. You keep it sharp by curating what it knows, not by nagging it.
- Plan firstevery agent reads, proposes, then waits for you
- Permission dialhow much it may do unattended, per turn
- Land or discardone button each; nothing lands by surprise
The plan is the contract
Before it edits anything, the agent shows which files it will touch and what it will do to each. Approve it and the plan becomes a to-do list you watch.
- Thinking, tool calls and to-dos stream as they happen, never summarised after the fact
- Steer mid-turn: a message lands in the running turn instead of queuing behind it
- The same conversation on your phone — an agent that stops at 11pm is one tap from unblocked
Permission is a dial, not a switch
The same conversation can be strict on a migration and loose on a changelog — the composer's mode pill sets how much the agent may do unattended, per turn. An approved plan is the exception: you have read what it intends, so it runs the lot.
Reviewed by file, not by wall of text
Finished work is grouped by repo with per-file line counts, so a 400-line change reads as six decisions. Comments attach to a hunk, and unread files stay marked until you have looked at them.

The review boundary is a real branch
Landing replays the agent's delta onto your tree as ordinary git changes you can stage, amend or revert. Discarding removes the worktree and leaves your tree untouched. A land conflict comes back as an Attention card the agent can resolve.
untouched until you land, and still yours to amend or revert afterwards
Steer it by what it knows, not by nagging
You can't make the model smarter; you can make it better equipped. Open the context it loads every turn — skills, runbooks, house style — and the systems it may reach, and the same prompt does a better job.
A prompt
a system prompt and a few .md files- Describes your tools. None are installed.
- No reach into your codebase, data, or services.
- Starts from the same blank context every run.
- Hands you generic output you finish by hand.
The whole environment
a sandbox you can open and change- Its dev-tools and libraries are really installed.
- Wired to your repos, databases, and services.
- Curated context loads every single run.
- Does the job end to end, shows its work as diffs.
One workspace, two operators
The editor, file tree, search and terminal aren't a viewer bolted onto the chat — they are the same surfaces the agent works through, so what it edits is what you open. Nothing reconciles your view with the agent's, because there is only one.
One implementation per row. Nothing synchronises the two columns, because there is only one thing behind them.