Tracks upstream paperclipai/paperclip#6371 (merged 2026-05-19).
Problem
Today there is no constraint stopping a "cheap recovery model" run from writing production deliverables. When a primary model fails and Paperclip falls back to a cheaper model (e.g., Kimi K2.6 in our case), that cheaper run can author PRs, modify files, comment on issues, etc. — exactly the failure mode reported upstream in #6698 ("Failure when using cheap model when primary fails due to limit").
Why this matters for Levi
Levi's PR #26 introduces exactly the kind of cross-model fallback this guard is designed to constrain. Without it, the Kimi fallback could write production deliverables on what was meant to be a recovery-only model. We need the guard BEFORE the cheap-fallback footprint grows.
What the upstream PR adds
- Separates status-only cheap recovery from normal source-work continuations
- Route guards: cheap-recovery runs cannot write deliverables (commit, PR, document mutations)
- 529 additions across heartbeat/recovery + route guards
Effort
M — recovery state machine is one of the most-touched files upstream; conflicts with Levi's #26 path are likely.
Risk
M — recovery state machine is failure-sensitive. Mitigate with a focused regression test on the Claude→Kimi fallback case ensuring it cannot post commits/PRs.
Levi-specific implementation note
Re-target the guard to also cover the Kimi-via-env-swap (or kimi-CLI-delegate) path: the fallback should mark the run as recovery_only and inherit the same write restrictions. Coordinate with the PR #26 rework to wire the recovery_only flag in the same change.
Acceptance criteria
Surveyed by the Levi planning agent on 2026-05-26.
Tracks upstream paperclipai/paperclip#6371 (merged 2026-05-19).
Problem
Today there is no constraint stopping a "cheap recovery model" run from writing production deliverables. When a primary model fails and Paperclip falls back to a cheaper model (e.g., Kimi K2.6 in our case), that cheaper run can author PRs, modify files, comment on issues, etc. — exactly the failure mode reported upstream in #6698 ("Failure when using cheap model when primary fails due to limit").
Why this matters for Levi
Levi's PR #26 introduces exactly the kind of cross-model fallback this guard is designed to constrain. Without it, the Kimi fallback could write production deliverables on what was meant to be a recovery-only model. We need the guard BEFORE the cheap-fallback footprint grows.
What the upstream PR adds
Effort
M — recovery state machine is one of the most-touched files upstream; conflicts with Levi's #26 path are likely.
Risk
M — recovery state machine is failure-sensitive. Mitigate with a focused regression test on the Claude→Kimi fallback case ensuring it cannot post commits/PRs.
Levi-specific implementation note
Re-target the guard to also cover the Kimi-via-env-swap (or kimi-CLI-delegate) path: the fallback should mark the run as
recovery_onlyand inherit the same write restrictions. Coordinate with the PR #26 rework to wire the recovery_only flag in the same change.Acceptance criteria
recovery_onlycannot POST to/api/issues/:id/comments, PATCH issue body, or invoke git/PR toolsrecovery_onlyby defaultadapterConfig.fallback.allowDeliverables: truelets operators opt inSurveyed by the Levi planning agent on 2026-05-26.