You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit de4ba0e
Browse filesBrowse the repository at this point in the historyBrowse files
Copy file name to clipboardExpand all lines: docs/blog/posts/ai-commit-attribution-policy.md
+3-2Lines changed: 3 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -36,7 +36,7 @@ source has already given three different answers.
36
36
| Position | Who takes it |
37
37
|---|---|
38
38
| No AI trailers in the history; disclose in the pull request instead |[Kubernetes](https://www.kubernetes.dev/docs/guide/pull-requests/)|
39
-
| AI is welcome, but say so with a trailer, and never credit the tool as a person |[Linux kernel](https://docs.kernel.org/process/coding-assistants.html) and [Fedora](https://docs.fedoraproject.org/en-US/council/policy/ai-policy/) (`Assisted-by:`) |
39
+
| AI is welcome, but say so with a trailer, and never credit the tool as a person |[Fedora](https://docs.fedoraproject.org/en-US/council/policy/ai-policy/) (`Assisted-by:`), and the [Linux kernel](https://docs.kernel.org/process/coding-assistants.html) until its maintainers decided in October 2026 to drop the tag|
40
40
| The tool can be credited as a co-author |[pytest](https://docs.pytest.org/en/stable/contributing.html) (`Co-authored-by:`) and the [ASF](https://www.apache.org/legal/generative-tooling.html) (`Generated-by:` or `Co-authored-by:`) |
41
41
42
42
The kernel adds one hard rule on top: an AI agent must never add a
@@ -99,7 +99,8 @@ The detection covers co-author and sign-off lines that name Claude Code, GitHub
99
99
Copilot, Codex, Gemini, Cursor, Devin, Aider, Windsurf, Tabby or a model, and
100
100
vendor marks such as "Generated with Claude Code";
101
101
[v2.19.0](../../changelog.md#v2190) added Amp, OpenHands, Factory Droid and
102
-
Jules. It matches the tools'
102
+
Jules, and [v2.19.2](../../changelog.md#v2192) the Copilot coding agent's
103
+
`Agent-Logs-Url:` trailer. It matches the tools'
103
104
noreply addresses, so a human co-author who happens to be called Claude is left
104
105
alone. [CC013](../../rules.md#cc013) keeps the current list.
Copy file name to clipboardExpand all lines: docs/changelog.md
+54Lines changed: 54 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -11,6 +11,7 @@ below and to the page that documents the feature properly.
11
11
12
12
| Version | What changed | Documented in |
13
13
|---|---|---|
14
+
|[2.19.2](#v2192)| Copilot coding agent commits recognised; config values of the wrong type refused; commit text printed inert |[CC013](rules.md#cc013) · [Every option](configuration.md#every-option) · [Color and links](example.md#color-and-links)|
14
15
|[2.19.1](#v2191)|`develop` accepted by default; stricter merge-subject, fixup, WIP and sign-off checks |[CC201](rules.md#cc201) · [CC001](rules.md#cc001) · [CC009](rules.md#cc009)|
15
16
|[2.19.0](#v2190)| Branch descriptions held to the Conventional Branch grammar; Amp, OpenHands, Factory Droid and Jules recognised |[CC201](rules.md#cc201) · [CC013](rules.md#cc013)|
16
17
|[2.18.3](#v2183)|`--fix` corrects a message in place; `--branch` reads GitLab, Bitbucket, Azure and Jenkins variables |[Fixing a message in place](example.md#fixing-a-message-in-place) · [Other CI](guides/other-ci.md)|
@@ -32,6 +33,59 @@ below and to the page that documents the feature properly.
32
33
|[2.5.0](#v250)| Organization-wide config with `inherit_from`|[Across an organization](guides/organization.md)|
33
34
|[2.0.0](#v200)| Configuration moved from YAML to TOML — breaking |[Migrating from v1](migration.md)|
34
35
36
+
## v2.19.2 (2026-10-18) { #v2192 }
37
+
38
+
### Changed
39
+
40
+
***A config value of the wrong type stops the run** — `message_pattern = 5`
41
+
crashed, `subject_max_length = true` became a one-character limit,
42
+
`subject_max_length = "50"` turned the rule off without a word, and
43
+
`allow_commit_types = "feat,fix"` was read letter by letter, so `f: x`
44
+
passed. A pattern, a subject length, or a type or name list of the wrong
45
+
type is now a configuration error (exit 2) that names the setting. A
46
+
comma-separated string in `allow_commit_types`, `allow_branch_types` or
47
+
`allow_branch_names` is split the way `--allow-commit-types` splits it. A
48
+
config that relied on the old reading now stops with that error, so check
49
+
yours when you upgrade.
50
+
See PR [#624](https://github.com/commit-check/commit-check/pull/624) and
51
+
[Every option](configuration.md#every-option).
52
+
53
+
***[CC202](rules.md#cc202) skips when the rebase target does not resolve** —
54
+
a `require_rebase_target` that matched no branch, because of a typo or a
55
+
shallow clone without `origin/main`, reported a pass without comparing
56
+
anything. It is now a skip, and the JSON `reason` names the missing target.
57
+
The exit code stays 0.
58
+
See PR [#617](https://github.com/commit-check/commit-check/pull/617).
59
+
60
+
***[CC401](rules.md#cc401) checks the tag name the remote receives** — in a
61
+
`pre-push` hook, `git push origin v1.0.0:refs/tags/bad-name` was checked as
62
+
`v1.0.0`, so `bad-name` reached the remote. The remote name is checked now.
63
+
See PR [#615](https://github.com/commit-check/commit-check/pull/615).
64
+
65
+
### Fixed
66
+
67
+
***[CC013](rules.md#cc013)–[CC016](rules.md#cc016) recognise the Copilot
68
+
coding agent** — its commits carry an `Agent-Logs-Url:` trailer, and a
69
+
squash merge of its pull request adds a `copilot-swe-agent[bot]` co-author
70
+
line. Both passed `forbid` and `disclose`. They are now read as GitHub
71
+
Copilot, and under `disclose` the correction appends
72
+
`Assisted-by: GitHub Copilot`.
73
+
See PR [#632](https://github.com/commit-check/commit-check/pull/632).
74
+
75
+
***Commit text is printed inert** — a failing message, branch or tag name was
76
+
printed as written, so escape sequences reached the terminal, and a body
77
+
line starting with `::` reached a GitHub Actions runner as a workflow
78
+
command. Text output now shows control characters as `\xNN` and puts a
79
+
backslash before such a `::`. `--format json` is unchanged.
80
+
See PR [#620](https://github.com/commit-check/commit-check/pull/620) and
81
+
[Color and links](example.md#color-and-links).
82
+
83
+
***Three patterns run in linear time** — the CC001 header correction and the
84
+
AI trailer matching could take seconds on a line padded with spaces.
85
+
Verdicts are unchanged, except that a `Co-authored-by:` line with an empty
86
+
name before `(aider)` no longer counts.
87
+
See PR [#626](https://github.com/commit-check/commit-check/pull/626).
Copy file name to clipboardExpand all lines: docs/troubleshoot.md
+2-1Lines changed: 2 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -107,7 +107,7 @@ broken policy from a bad commit. Commit Check keeps them apart:
107
107
|---|---|
108
108
|`0`| Every enforced check passed, or every check was skipped. |
109
109
|`1`| A check failed. This is a verdict on the commit. |
110
-
|`2`| The run could not start, so nothing was validated: bad usage, a `--rev` that does not resolve, a setting whose regex does not compile, or a config file that is missing, is not valid TOML, or names an unknown rule. |
110
+
|`2`| The run could not start, so nothing was validated: bad usage, a `--rev` that does not resolve, a setting whose regex does not compile or whose value has the wrong type, or a config file that is missing, is not valid TOML, or names an unknown rule. |
111
111
112
112
A configuration error names the file it came from:
113
113
@@ -120,6 +120,7 @@ instead, and echoes the value it could not use:
120
120
121
121
```text
122
122
Error: [commit] message_pattern is not a valid regex: '^(unclosed' (missing ), unterminated subpattern at position 1)
123
+
Error: [commit] subject_max_length must be a whole number, got '50'
0 commit comments