Review a change with a panel
Ask two reviewers different questions about the same uncommitted change. Each gets a project copy, so an unexpected agent edit stays out of your working tree.
Use a Git repository with a change visible in git diff HEAD, and finish the Quickstart first. Both reviewers below use Claude and the same Anthropic credential. The review covers staged and unstaged changes to tracked files; it does not include untracked files.
Run the panel
At the marsh prompt:
split {
security: claude -p 'Review git diff HEAD for security defects. Do not edit files or start other agents. For each finding, give the file, line, and a concrete failure scenario. Say when you found none.'
coverage: claude -p 'Review git diff HEAD for changed behavior that tests do not cover. Do not edit files or start other agents. Point to the behavior and the missing test; distinguish guesses from findings.'
} | join --keep
Both reviewers start from the same project snapshot, including uncommitted work. The prompts name the same diff and assign different concerns. If you want a committed branch reviewed instead, change both prompts to the same base comparison, such as git diff main...HEAD when your base is main.
Check each finding against the source and existing tests before making a fix.
If a reviewer edited files, join also shows that diff. Inspect it separately from the findings and leave it unapplied unless you want the change.
Run checks without copies
Run the repository's real checks alongside the review or afterward. The following recipe assumes your project already has working make lint and make typecheck targets; substitute its documented commands if not. Verify they work on Linux arm64 before using them here.
fanout {
lint: make lint
types: make typecheck
} | collect
fanout uses your real files. Only use this form when the commands can safely share a directory: checks that rewrite the same cache, fixture, or generated file may interfere with each other. collect prints results in declaration order and reports a nonzero status if a branch fails. These checks run as you in the shell VM, without confinement to the project.
Finish the review
Make or request the intended fix, run the relevant checks, and review the resulting diff. Remove the saved panel with the split ID printed by join:
marsh splits rm YOUR_SPLIT_ID
Limits and failure modes
This panel starts two billed agent runs. If a reviewer fails, join reports the failure and keeps the copies. Ctrl-C stops the foreground panel and its child jobs. For copy restrictions and capture limits, see Split and join.
Next
Make independent changes in parallel uses split for edits. Let an agent farm out work starts a review from inside another job. See Split and join for capture limits and full patch paths.