Allow retrying git commits without signing when signing fails#4219
Allow retrying git commits without signing when signing fails#4219tim-smart wants to merge 5 commits into
Conversation
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
ApprovabilityVerdict: Needs human review This PR introduces a new feature with user-facing dialogs and recovery workflows for commit signing failures. The changes span mobile, web, and server layers with new error classification logic and a You can customize Macroscope's approvability policy. Learn more. |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit a48b520. Configure here.
- Detect commit signing failures across server and client - Let stacked git actions retry once with signing disabled - Preserve unsigned commit behavior in commit, push, and PR flows
- Prevent stale action controls from appearing on Git progress toasts
61e9467 to
2de8119
Compare

Previously, when git signing failed (due to non-interactive environments etc),
the git commit would be aborted.
With this change, it allows you to retry with signing disabled.
Note
Medium Risk
Touches core commit/git execution and error classification across server and clients; behavior changes on failure paths but is scoped to signing retries with tests.
Overview
Adds commit-signing failure detection and a one-shot unsigned retry path for stacked git actions when GPG/SSH signing fails (common in non-interactive environments).
The server classifies signing errors via stderr patterns and surfaces
failureKind: commit_signing_failedonGitCommandErrorandaction_failedprogress events (defaulting tounknownfor older clients). Commits can passdisableCommitSigning, which adds--no-gpg-signfor that attempt only. Hook progress attribution is tightened so multi-hook output is not mislabeled, and failed hooks are not mistaken for signing failures.Web shows a toast action Retry without signing; mobile shows the same via
Alert.buildUnsignedCommitRetryInputrebuilds the request with signing off while keeping action, message, and file paths; feature-branch retries avoid creating a second branch and can sync thread branch state after success. Unsigned retries do not offer another signing retry if they still fail.Reviewed by Cursor Bugbot for commit 2de8119. Bugbot is set up for automated code reviews on this repo. Configure here.
Note
Allow retrying git commits without signing when commit signing fails
isCommitSigningFailuredetection by matching GPG, pinentry, and SSH signer error patterns in commit stderr output in GitVcsDriverCore.ts.failureKindfield ('unknown'|'commit_signing_failed') onGitCommandErrorandaction_failedprogress events, with a default of'unknown'for backwards compatibility.buildUnsignedCommitRetryInputconstructs a retry payload withdisableCommitSigning: truewhile preserving the original action, commit message, and file paths.--no-gpg-signto the git commit invocation whendisableCommitSigningis set, propagated from the contract layer through the server to the git core.Macroscope summarized 2de8119.