conflibot v2.0.0
Major release: more accurate conflict detection, fork PR support, a security fix, and new configuration options.
Breaking changes
- Runner requirements: a runner with node24 support and git 2.38+ (all current GitHub-hosted runners qualify; only older self-hosted runners may need an upgrade).
- Detection engine: conflicts are found with an in-memory
git merge-treeagainst the test merge commit GitHub already computed, instead of testing patch application. Edits that merely touch nearby lines are no longer reported as false conflicts, renames and already-merged changes behave like a real merge, and the working tree is never modified — follow-up steps see the checkout exactly asactions/checkoutleft it. - Report format: conflicts are reported per file and link to the file in the other PR (v1 linked to line numbers produced by the patch-based detection).
Security
- git commands no longer pass through a shell. Branch names are attacker-controlled under
pull_request_target, which previously allowed command injection in a job holding a write token. All git invocations now use argument arrays, and PRs are referenced by number viarefs/pull/<n>/head. - The pull-ref change also makes PRs from forks work correctly (v1 silently skipped or failed on them).
New features
fail-on-conflictinput: report the check asfailureand fail the step when conflicts are found.max-retries/retry-intervalinputs: control polling for GitHub's test merge commit.conflictsoutput: detected conflicts as JSON for follow-up steps (comments, chat notifications).- Pagination: repositories with more than 30 open PRs are now fully checked.
Fixes
- Conflict links past line 9 no longer lose their anchor (single-digit regex bug).
- Check-run updates are awaited; errors are reported with their message and stack instead of
{}. - A PR with no commits beyond the base no longer fails the whole run.
Upgrading from v1
Point your workflow at wktk/conflibot@v2. Existing configurations keep working; see the Upgrading from v1 section of the README for details.
🤖 Generated with Claude Code