Large changes, reviewed in small, proven steps.
Cleave turns an oversized pull request into a stack of small ones. Every layer passes your tests on its own, and the stack matches the original change byte for byte.
Live proofIBM/galaxium-travels #1: Loyalty tiers & seat upgradesLatest public proofIBM/galaxium-travels #1 · Loyalty tiers & seat upgrades
Open the proofOn 3 constructed diffs, Cleave made a valid stack on 3 and the one-prompt baseline on 0. See the results

Every layer passes on its own
Each prefix of the stack is built in its own worktree and runs your test command.
Identical to the original
The top layer's git tree hash matches the pull request's. Nothing lost, nothing added.
No code written by the AI
Bob can only move existing hunks between layers. A hook blocks every source edit.
How it works
Map. Layer. Prove.
Map
Cut the change into atoms.
Cleave splits the diff into its smallest hunks and maps which ones depend on which, using the code itself.
Layer
Group atoms into ordered layers.
Bob groups related atoms into named layers. It can move atoms between layers, and nothing else.
Prove
Check every layer on its own.
Each layer runs your tests in a clean worktree. The final layer must match the original tree exactly.
Runs in IBM Bob
The AI can only move hunks.
Cleave ships as a mode for IBM Bob. Bob decides how a change should be layered; Cleave checks every decision in code.
- A custom mode
- No edit and no shell access. The mode's only write path is Cleave's MCP tools.
- Lifecycle hooks
- A PreToolUse hook blocks any write outside the plan. Every call lands in an audit log.
- Parallel subagents
- Read-only subagents study slices of the diff at once, so large changes stay readable.

Start with your largest open pull request.
Analyze it, check the proof, and publish a stack your reviewers can actually read.