GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — feat(ai): detect Mistral Vibe and Qwen Code default signatures by shenxianpeng · Pull Request #659 · commit-check/commit-check

Conversation

@shenxianpeng

@shenxianpeng shenxianpeng commented Nov 8, 2026 •
edited by coderabbitai Bot
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Member

What

Two AI coding tools sign their commits by default, and ai_attribution let both signatures through under forbid and disclose:

Tool Default signature Where it comes from
Mistral Vibe Generated by Mistral Vibe. + Co-Authored-By: Mistral Vibe <[email protected]> vibe/core/system_prompt.py, on unless include_commit_signature = false
Qwen Code Co-authored-by: Qwen-Coder <[email protected]> packages/core/src/config/config.ts, on unless gitCoAuthor.commit is off

Both are added to the signature catalog the same way Continue was.

Before / after

$ printf 'Fix parser\n\nGenerated by Mistral Vibe.\nCo-Authored-By: Mistral Vibe <[email protected]>\n' > msg
$ CCHK_AI_ATTRIBUTION=forbid CCHK_CONVENTIONAL_COMMITS=false commit-check -m msg --compact
Message Before (main) After
Mistral Vibe signature, forbid exit 0 [FAIL] CC013 ai-attribution: Mistral Vibe
Mistral Vibe signature, disclose exit 0 CC014 + CC015, suggests Assisted-by: Mistral Vibe
Co-authored-by: Qwen-Coder <[email protected]>, forbid exit 0 [FAIL] CC013 ai-attribution: Qwen Code
Assisted-by: Qwen Code, disclose passes, named Generic AI passes, named Qwen Code
Co-authored-by: Vibe Smith <[email protected]> exit 0 exit 0 (unchanged)

False positives

"Vibe" alone is a common word, so only "Mistral Vibe" or the [email protected] address counts. A person at @mistral.ai and a human "Qwen Li" are not flagged. Tests cover each case.

Checks

pytest: 1498 passed. The one failure, test_load_config_file_permission_error, also fails on main when run as root. ruff check and ruff format are clean. README pins are already on v2.19.5.

Summary by CodeRabbit

  • New Features
    • Added recognition for Mistral Vibe and Qwen Code signatures in commit metadata, including co-author, sign-off, and disclosure trailers.
    • Mistral Vibe’s “Generated by” marker is also recognized.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@shenxianpeng
feat(ai): detect Mistral Vibe and Qwen Code default signatures
336c27f
Both tools sign their commits by default, and both signatures passed
forbid and disclose:

- Mistral Vibe's system prompt asks the model to end each commit with
  "Generated by Mistral Vibe." and
  "Co-Authored-By: Mistral Vibe <[email protected]>"
  (on unless include_commit_signature = false).
- Qwen Code appends
  "Co-authored-by: Qwen-Coder <[email protected]>"
  (on unless gitCoAuthor.commit is off).

"Vibe" alone stays unflagged: only "Mistral Vibe" or Vibe's own address
names the tool.
@shenxianpeng
shenxianpeng requested a review from a team as a code owner November 8, 2026 03:11
@github-actions github-actions Bot added the enhancement New feature or request label Nov 8, 2026
@coderabbitai

coderabbitai Bot commented Nov 8, 2026 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Contributor

Explain Change →

Walkthrough

The signature catalog adds Mistral Vibe and Qwen Code detection. Tests cover their identity patterns, signature roles, name lookup, and false-positive cases.

Changes: AI signature catalog additions

Layer / File(s) Summary
Add and validate tool signatures
commit_check/ai_signatures_data.py, tests/ai_signatures_test.py
The catalog defines and registers Mistral Vibe and Qwen Code signatures. Tests check identity matching, signature roles, tool-name lookup, and false positives.

Estimated code review effort: 2 (Simple) | ~10 minutes

Change: Feature

Possibly related issues

  • commit-check/commit-check#495 requests new known AI tool coverage in the same catalog and test files. This change adds coverage for two tools, though the issue asks for one tool per PR.

Suggested labels: enhancement

Suggested reviewers: invictustitan2

Merge Risk: Minimal · up to 336c2

The documented default signatures are covered by the new patterns. No actionable merge-blocking risk is established beyond normal checks.

Pre-merge checks: Passed 5

Check name Status Explanation
Description Check Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check Passed The title names the main change: adding detection of Mistral Vibe and Qwen Code default signatures. The summary confirms new MISTRAL_VIBE and QWEN_CODE signature constants in commit_check/ai_signature…
Docstring Coverage Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentat…
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Title check

Explanation

The title names the main change: adding detection of Mistral Vibe and Qwen Code default signatures. The summary confirms new MISTRAL_VIBE and QWEN_CODE signature constants in commit_check/ai_signatures_data.py and matching tests. The title is specific, follows the conventional feat(ai) form, and is 62 characters long.

Full details: Docstring Coverage

Explanation

Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentation-only edits and deletions within surviving functions are included; unchanged diff context and fully deleted functions are excluded. Analyzed 1 functions across 2 files.

Finishing Touches

Generate docstrings

  • Commit to this branch
  • Create a new PR
Generate unit tests (beta)

  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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.

Share

  • X
  • Mastodon
  • Reddit
  • LinkedIn
All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@shenxianpeng shenxianpeng self-assigned this Nov 8, 2026
@sonarqubecloud

sonarqubecloud Bot commented Nov 8, 2026

Copy link
Copy Markdown

Quality Gate Passed Quality Gate passed

Issues
0 New issues
0 Accepted issues

Measures
0 Security Hotspots
0.0% Coverage on New Code
0.0% Duplication on New Code

See analysis details on SonarQube Cloud

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@codecov

codecov Bot commented Nov 8, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (67ad6e3) to head (336c27f).

Additional details and impacted files
@@            Coverage Diff            @@
##              main      #659   +/-   ##
=========================================
  Coverage   100.00%   100.00%           
=========================================
  Files           14        14           
  Lines         2458      2460    +2     
  Branches       477       477           
=========================================
+ Hits          2458      2460    +2     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

coderabbitai[bot]
coderabbitai Bot reviewed Nov 8, 2026
View reviewed changes

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Additional comments: 1

commit_check/ai_signatures_data.py: 1

399-401: Trivial · Functional Correctness · Low value

Unverified finding
Verification ran but could not confirm this finding. It is shown for review, not as a verified issue.

The Generated by Mistral Vibe body marker is case-sensitive and may not match what the model writes.

_body_marker compiles without IGNORECASE. The comment says the model writes the signature itself, so output such as "generated by mistral vibe" or a different case would not be detected. The identity trailers and the name pattern are case-insensitive, so this behavior is inconsistent. The Continue and Claude markers have the same property, so this may be intentional.

If case-insensitive matching is wanted, build the marker with an inline flag:

Proposed change

         _body_marker(
-            r"^Generated by Mistral Vibe\b", "``Generated by Mistral Vibe`` body marker"
+            r"(?i:^Generated by Mistral Vibe)\b",
+            "``Generated by Mistral Vibe`` body marker",
         ),
Review info

Run configuration

  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 39ac02b0-3c61-4447-a0ca-68dfdf815d48
Commits

Reviewing files that changed from the base of the PR and between 67ad6e3 and 336c27f.

Files selected for processing: 2

  • commit_check/ai_signatures_data.py
  • tests/ai_signatures_test.py

Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@shenxianpeng
shenxianpeng merged commit 38f1a1e into main Nov 8, 2026
33 checks passed

Uh oh!

There was an error while loading. Please reload this page.

@shenxianpeng
shenxianpeng deleted the feat/detect-mistral-vibe-qwen-code branch November 8, 2026 03:22
@codspeed

codspeed Bot commented Nov 8, 2026

Copy link
Copy Markdown

Merging this PR will not alter performance

1 warning

⚠️ 136 benchmarks are dominated by system calls

System calls cannot be simulated consistently and are left out of the measure. The reported value understates the real cost. Switch to the Walltime instrument to measure them.

Learn more about system calls

See affected benchmarks

✅ 660 untouched benchmarks
🆕 5 new benchmarks
⏩ 126 skipped benchmarks1

Performance Changes

Benchmark BASE HEAD Efficiency
🆕 test_mistral_vibe_default_signature N/A 387 µs N/A
🆕 test_vibe_word_in_body_not_flagged N/A 311.6 µs N/A
🆕 test_bare_human_name_not_detected[Co-authored-by: Jane Dev <[email protected]>] N/A 416.3 µs N/A
🆕 test_bare_human_name_not_detected[Co-authored-by: Qwen Li <[email protected]>] N/A 417 µs N/A
🆕 test_bare_human_name_not_detected[Co-authored-by: Vibe Smith <[email protected]>] N/A 423 µs N/A

Comparing feat/detect-mistral-vibe-qwen-code (336c27f) with main (67ad6e3)

Open in CodSpeed

Footnotes

  1. 126 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports. ↩

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@coderabbitai coderabbitai[bot] coderabbitai[bot] left review comments

Uh oh!

There was an error while loading. Please reload this page.

Assignees

@shenxianpeng shenxianpeng

Labels

enhancement New feature or request

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

1 participant

@shenxianpeng
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You are visitor 01402520 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.