<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>Commit Check</title><id>https://deploy-preview-75--commit-check.netlify.app/blog/feed.xml</id><link rel="self" href="https://deploy-preview-75--commit-check.netlify.app/blog/feed.xml"/><link href="https://deploy-preview-75--commit-check.netlify.app/"/><updated>2026-10-24T00:00:00+00:00</updated><entry><title>&quot;No LLM bots in Co-authored-by&quot;: checking the rule before the squash merge</title><link href="https://deploy-preview-75--commit-check.netlify.app/blog/2026/10/24/no-llm-co-authors/"/><id>https://deploy-preview-75--commit-check.netlify.app/blog/2026/10/24/no-llm-co-authors/</id><published>2026-10-24T00:00:00+00:00</published><updated>2026-10-24T00:00:00+00:00</updated><author><name>Xianpeng Shen</name></author><category term="commit-check"/><category term="ai"/><category term="github-app"/><summary type="html">&lt;h1 id=&quot;no-llm-bots-in-co-authored-by-checking-the-rule-before-the-squash-merge&quot;&gt;&quot;No LLM bots in Co-authored-by&quot;: checking the rule before the squash merge&lt;a class=&quot;headerlink&quot; href=&quot;#no-llm-bots-in-co-authored-by-checking-the-rule-before-the-squash-merge&quot; title=&quot;Link to this section&quot;&gt;&amp;para;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Some projects have written down a short, strict rule about AI tools. The AI
policy that &lt;a href=&quot;https://github.com/pypa/pip/blob/main/AI_POLICY.md&quot; rel=&quot;external&quot;&gt;pip&lt;/a&gt; and
&lt;a href=&quot;https://github.com/python-attrs/attrs/blob/main/.github/AI_POLICY.md&quot; rel=&quot;external&quot;&gt;attrs&lt;/a&gt;
use puts it in one line:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;No LLM bots in &lt;code&gt;Co-authored-by:&lt;/code&gt;s.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;A pull request that lists an LLM product as a co-author &quot;can't be merged and
will be closed without further discussion&quot;. Using AI tools is still allowed,
but contributors &quot;must remove any LLM co-author tags and take full ownership
of every line.&quot;&lt;/p&gt;
&lt;p&gt;A machine can check that rule. Unless one does, a reviewer has to open every
commit of every pull request and read its trailers.&lt;/p&gt;
</summary></entry><entry><title>Your AI agent signs your commits. Does your project have a policy for that?</title><link href="https://deploy-preview-75--commit-check.netlify.app/blog/2026/10/11/ai-commit-attribution-policy/"/><id>https://deploy-preview-75--commit-check.netlify.app/blog/2026/10/11/ai-commit-attribution-policy/</id><published>2026-10-11T00:00:00+00:00</published><updated>2026-10-11T00:00:00+00:00</updated><author><name>Xianpeng Shen</name></author><category term="commit-check"/><category term="ai"/><category term="governance"/><summary type="html">&lt;h1 id=&quot;your-ai-agent-signs-your-commits-does-your-project-have-a-policy-for-that&quot;&gt;Your AI agent signs your commits. Does your project have a policy for that?&lt;a class=&quot;headerlink&quot; href=&quot;#your-ai-agent-signs-your-commits-does-your-project-have-a-policy-for-that&quot; title=&quot;Link to this section&quot;&gt;&amp;para;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Ask Claude Code or Cursor to commit for you and, by default, the commit comes
out stamped:&lt;/p&gt;
&lt;div class=&quot;language-text highlight&quot;&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span id=&quot;__span-0-1&quot;&gt;&lt;a id=&quot;__codelineno-0-1&quot; name=&quot;__codelineno-0-1&quot; href=&quot;#__codelineno-0-1&quot;&gt;&lt;/a&gt;fix: resolve race condition in the cache
&lt;/span&gt;&lt;span id=&quot;__span-0-2&quot;&gt;&lt;a id=&quot;__codelineno-0-2&quot; name=&quot;__codelineno-0-2&quot; href=&quot;#__codelineno-0-2&quot;&gt;&lt;/a&gt;
&lt;/span&gt;&lt;span id=&quot;__span-0-3&quot;&gt;&lt;a id=&quot;__codelineno-0-3&quot; name=&quot;__codelineno-0-3&quot; href=&quot;#__codelineno-0-3&quot;&gt;&lt;/a&gt;Co-Authored-By: Claude Opus 5 &amp;lt;noreply@anthropic.com&amp;gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Whether that line belongs in your history is a policy question, and open
source has already given three different answers.&lt;/p&gt;
</summary></entry><entry><title>AI Attribution Governance: Enforcing AI Disclosure Policies at the CI Level</title><link href="https://deploy-preview-75--commit-check.netlify.app/blog/2026/07/06/ai-attribution-governance-enforcing-ai-disclosure-policies-at-the-ci-level/"/><id>https://deploy-preview-75--commit-check.netlify.app/blog/2026/07/06/ai-attribution-governance-enforcing-ai-disclosure-policies-at-the-ci-level/</id><published>2026-07-06T00:00:00+00:00</published><updated>2026-07-06T00:00:00+00:00</updated><author><name>Xianpeng Shen</name></author><category term="commit-check"/><category term="ai"/><category term="governance"/><category term="compliance"/><summary type="html">&lt;h1 id=&quot;ai-attribution-governance-enforcing-ai-disclosure-policies-at-the-ci-level&quot;&gt;AI Attribution Governance: Enforcing AI Disclosure Policies at the CI Level&lt;a class=&quot;headerlink&quot; href=&quot;#ai-attribution-governance-enforcing-ai-disclosure-policies-at-the-ci-level&quot; title=&quot;Link to this section&quot;&gt;&amp;para;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;The open-source ecosystem is converging on a hard question: &lt;strong&gt;when a commit is
written with AI assistance, how do we know — and how do we enforce the
disclosure policy?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Python's discourse, Linux kernel's &lt;code&gt;Assisted-by&lt;/code&gt; trailer, Fedora's AI policy,
Apache's disclosure guidelines — every major project is grappling with this.
But until now, there has been &lt;strong&gt;no tool at the CI level&lt;/strong&gt; to enforce whatever
policy a project chooses.&lt;/p&gt;
&lt;p&gt;Commit Check v2.11.0 introduces &lt;strong&gt;AI Attribution Governance&lt;/strong&gt; — a
new feature that detects known AI tool signatures in commit
messages and lets projects decide whether to forbid them outright.
To our knowledge, no existing tool enforces this kind of policy at the CI
level.&lt;/p&gt;
</summary></entry><entry><title>AI-native: JSON output and a Python API</title><link href="https://deploy-preview-75--commit-check.netlify.app/blog/2026/06/21/ai-native-json-output-and-a-python-api/"/><id>https://deploy-preview-75--commit-check.netlify.app/blog/2026/06/21/ai-native-json-output-and-a-python-api/</id><published>2026-06-21T00:00:00+00:00</published><updated>2026-06-21T00:00:00+00:00</updated><author><name>Xianpeng Shen</name></author><category term="commit-check"/><category term="automation"/><category term="ai"/><summary type="html">&lt;h1 id=&quot;ai-native-json-output-and-a-python-api&quot;&gt;AI-native: JSON output and a Python API&lt;a class=&quot;headerlink&quot; href=&quot;#ai-native-json-output-and-a-python-api&quot; title=&quot;Link to this section&quot;&gt;&amp;para;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;More and more commits are written — or at least drafted — by AI agents and
automation. So Commit Check is also built for machines — not just humans reading
terminal output. This post covers the two
features that make that possible: machine-readable JSON output and an
import-friendly Python API.&lt;/p&gt;
</summary></entry><entry><title>From zero-config to org-wide policy</title><link href="https://deploy-preview-75--commit-check.netlify.app/blog/2026/06/21/from-zero-config-to-org-wide-policy/"/><id>https://deploy-preview-75--commit-check.netlify.app/blog/2026/06/21/from-zero-config-to-org-wide-policy/</id><published>2026-06-21T00:00:00+00:00</published><updated>2026-06-21T00:00:00+00:00</updated><author><name>Xianpeng Shen</name></author><category term="commit-check"/><category term="configuration"/><summary type="html">&lt;h1 id=&quot;from-zero-config-to-org-wide-policy&quot;&gt;From zero-config to org-wide policy&lt;a class=&quot;headerlink&quot; href=&quot;#from-zero-config-to-org-wide-policy&quot; title=&quot;Link to this section&quot;&gt;&amp;para;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Commit Check works the moment you install it, but its real strength shows up
when you start shaping the policy to fit your team. This post covers everything from the default behavior to organization-wide
shared configuration.&lt;/p&gt;
</summary></entry><entry><title>One policy file for your Git history</title><link href="https://deploy-preview-75--commit-check.netlify.app/blog/2026/06/21/one-policy-file-for-your-git-history/"/><id>https://deploy-preview-75--commit-check.netlify.app/blog/2026/06/21/one-policy-file-for-your-git-history/</id><published>2026-06-21T00:00:00+00:00</published><updated>2026-06-21T00:00:00+00:00</updated><author><name>Xianpeng Shen</name></author><category term="commit-check"/><summary type="html">&lt;h1 id=&quot;one-policy-file-for-your-git-history&quot;&gt;One policy file for your Git history&lt;a class=&quot;headerlink&quot; href=&quot;#one-policy-file-for-your-git-history&quot; title=&quot;Link to this section&quot;&gt;&amp;para;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Most teams have a wiki page titled something like &quot;How we write commit
messages.&quot; It covers commit conventions, branch naming, sign-offs, and
author email consistency — and then nobody reads it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Commit Check&lt;/strong&gt; exists to turn that wiki page into something Git actually
enforces.&lt;/p&gt;
</summary></entry></feed>
