Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions docs/changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ below and to the page that documents the feature properly.

| Version | What changed | Documented in |
|---|---|---|
| [2.19.4](#v2194) | `agents/` branches accepted by default; Cursor's `Made-with: Cursor` trailer recognised | [CC201](rules.md#cc201) · [CC013](rules.md#cc013) |
| [2.19.3](#v2193) | A quoted `"false"` for a true/false setting refused instead of read as true | [Every option](configuration.md#every-option) |
| [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) |
| [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) |
Expand All @@ -34,6 +35,29 @@ below and to the page that documents the feature properly.
| [2.5.0](#v250) | Organization-wide config with `inherit_from` | [Across an organization](guides/organization.md) |
| [2.0.0](#v200) | Configuration moved from YAML to TOML — breaking | [Migrating from v1](migration.md) |

## v2.19.4 (2026-10-29) { #v2194 }

### Changed

* **`agents/` branches are accepted by default** — VS Code's Agents window
names its branches `agents/<description>`, and its users cannot change the
prefix, so [CC201](rules.md#cc201) failed them unless `allow_branch_types`
listed `agents`. It is now in the default list. The Conventional Branch
specification plans to accept it as an alias of `ai`
([conventional-branch#196](https://github.com/conventional-branch/conventional-branch/issues/196)).
This only widens what passes.
See PR [#645](https://github.com/commit-check/commit-check/pull/645).

### Fixed

* **[CC013](rules.md#cc013)–[CC016](rules.md#cc016) recognise Cursor's
`Made-with: Cursor` trailer** — Cursor marks the commits it writes with it,
and every policy let it through. It now counts as Cursor's own mark, like
the Copilot coding agent's `Agent-Logs-Url:`: `forbid` rejects it, and under
`disclose` the correction appends `Assisted-by: Cursor`. Other `Made-with:`
values are left alone.
See PR [#643](https://github.com/commit-check/commit-check/pull/643).

## v2.19.3 (2026-10-21) { #v2193 }

### Fixed
Expand Down
4 changes: 2 additions & 2 deletions docs/configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -274,7 +274,7 @@ Used from a hook definition, with no config file anywhere in the repository:
```yaml title=".pre-commit-config.yaml"
repos:
- repo: https://github.com/commit-check/commit-check
rev: v2.19.3
rev: v2.19.4
hooks:
- id: check-message
args:
Expand Down Expand Up @@ -404,7 +404,7 @@ the same thing twice, so read the description rather than the cell:
| commit | ai_disclosure_trailers | list[str] | ["Assisted-by", "Generated-by"] | The trailers that disclose AI assistance under `"disclose"`. The first one is what a correction is written with. Listing `Co-authored-by` says the project accepts the tool as a co-author, and CC015 then passes. `Signed-off-by` is refused: only a person can certify the DCO. |
| commit | ai_disclosure_pattern | str | "" (any value) | A regex the disclosure trailer's value must match under `"disclose"`, e.g. `'^\S+/\S+$'` for an `agent/model` format. Empty accepts any value, but a trailer with no value at all is reported whatever the pattern is. |
| branch | conventional_branch | bool | true | Enforce Conventional Branch specification. |
| branch | allow_branch_types | list[str] | ["feature", "bugfix", "hotfix", "release", "chore", "feat", "fix", "build", "ci", "docs", "perf", "refactor", "style", "test", "ai", "claude", "codex", "copilot", "cursor", "dependabot", "renovate"] | Allowed branch types when `conventional_branch` is true. The default is a superset of the [Conventional Branch spec](https://conventionalbranch.org/): the spec's types (`feature`, `bugfix`, `hotfix`, `release`, `chore`, their aliases `feat` and `fix`, and the AI agent prefixes `ai`, `claude`, `codex`, `copilot`, `cursor`) plus the other Conventional Commit types (`build`, `ci`, `docs`, `perf`, `refactor`, `style`, `test`) and bot prefixes (`dependabot`, `renovate`). For strict spec-only validation, set this option explicitly to the spec's types; [CC201](rules.md#cc201) has the full config. |
| branch | allow_branch_types | list[str] | ["feature", "bugfix", "hotfix", "release", "chore", "feat", "fix", "build", "ci", "docs", "perf", "refactor", "style", "test", "ai", "claude", "codex", "copilot", "cursor", "agents", "dependabot", "renovate"] | Allowed branch types when `conventional_branch` is true. The default is a superset of the [Conventional Branch spec](https://conventionalbranch.org/): the spec's types (`feature`, `bugfix`, `hotfix`, `release`, `chore`, their aliases `feat` and `fix`, and the AI agent prefixes `ai`, `claude`, `codex`, `copilot`, `cursor`) plus the other Conventional Commit types (`build`, `ci`, `docs`, `perf`, `refactor`, `style`, `test`), `agents` (the prefix VS Code's Agents window uses) and bot prefixes (`dependabot`, `renovate`). For strict spec-only validation, set this option explicitly to the spec's types; [CC201](rules.md#cc201) has the full config. |
| branch | require_description_grammar | bool | false | Also hold the description after `<type>/` to the Conventional Branch grammar: lowercase letters and digits, words joined by single hyphens, dots only inside a word. Off by default, because bot branches such as `dependabot/npm_and_yarn/lodash-4.17.21` do not follow it. See [CC201](rules.md#cc201). |
| branch | allow_branch_names | list[str] | [] (empty list) | Additional standalone branch names allowed when conventional_branch is true (e.g., ["staging", "production"]). By default, main, master, develop, HEAD, and PR-* are always allowed. |
| branch | require_rebase_target | str | "" (no requirement) | Target branch for rebase requirement. If not set, no rebase validation is performed. |
Expand Down
2 changes: 1 addition & 1 deletion docs/example.md
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ pushed:
```yaml title=".pre-commit-config.yaml"
repos:
- repo: https://github.com/commit-check/commit-check
rev: v2.19.3
rev: v2.19.4
hooks:
- id: check-no-force-push
stages: [pre-push]
Expand Down
4 changes: 2 additions & 2 deletions docs/guides/policies.md
Original file line number Diff line number Diff line change
Expand Up @@ -135,8 +135,8 @@ Recognised signatures are co-author and sign-off lines naming Claude Code,
GitHub Copilot, Codex, Gemini, Cursor, Devin, Aider, Windsurf, Tabby, Amp,
OpenHands, Factory Droid and Jules, the disclosure trailers `Assisted-by:` and
`Generated-by:`, vendor marks such as `🤖 Generated with Claude Code`, Amp's
`Amp-Thread-ID:` and the Copilot coding agent's `Agent-Logs-Url:`, and generic
AI model names. This is the
`Amp-Thread-ID:`, the Copilot coding agent's `Agent-Logs-Url:` and Cursor's
`Made-with: Cursor`, and generic AI model names. This is the
position [Kubernetes](https://www.kubernetes.dev/docs/guide/pull-requests/)
takes — no AI trailers in the history, disclosure in the pull request
instead.
Expand Down
6 changes: 3 additions & 3 deletions docs/guides/pre-commit.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ Add Commit Check to `.pre-commit-config.yaml`:
```yaml title=".pre-commit-config.yaml"
repos:
- repo: https://github.com/commit-check/commit-check
rev: v2.19.3
rev: v2.19.4
hooks:
- id: check-message
- id: check-branch
Expand Down Expand Up @@ -68,7 +68,7 @@ Options can be passed as hook arguments, which keeps everything in one file:
```yaml title=".pre-commit-config.yaml"
repos:
- repo: https://github.com/commit-check/commit-check
rev: v2.19.3
rev: v2.19.4
hooks:
- id: check-message
args:
Expand All @@ -90,7 +90,7 @@ colon, and lets the commit through:
```yaml title=".pre-commit-config.yaml"
repos:
- repo: https://github.com/commit-check/commit-check
rev: v2.19.3
rev: v2.19.4
hooks:
- id: check-message
args: [--fix]
Expand Down
11 changes: 6 additions & 5 deletions docs/rules.md
Original file line number Diff line number Diff line change
Expand Up @@ -565,9 +565,9 @@ Rejects a commit whose message carries any AI attribution: a co-author or
sign-off line naming Claude Code, Copilot, Codex, Gemini, Cursor, Devin,
Aider, Windsurf, Tabby, Amp, OpenHands, Factory Droid or Jules, a disclosure
trailer such as `Assisted-by:` or `Generated-by:`, a vendor's own mark such
as `🤖 Generated with Claude Code`, Amp's `Amp-Thread-ID:` trailer or the
`Agent-Logs-Url:` trailer the Copilot coding agent adds, and generic AI model
names. Copilot is also recognised by its account's
as `🤖 Generated with Claude Code`, Amp's `Amp-Thread-ID:` trailer, the
`Agent-Logs-Url:` trailer the Copilot coding agent adds or Cursor's
`Made-with: Cursor`, and generic AI model names. Copilot is also recognised by its account's
`N+Copilot@users.noreply.github.com` address, so the coding agent's
`copilot-swe-agent[bot]` co-author line counts under any display name.

Expand Down Expand Up @@ -827,8 +827,9 @@ feature/role-caching
a superset of the specification: the spec's types (`feature`, `bugfix`,
`hotfix`, `release`, `chore`, their aliases `feat` and `fix`, and the AI
agent prefixes `ai`, `claude`, `codex`, `copilot` and `cursor`), plus the
other Conventional Commit types and the bot prefixes `dependabot` and
`renovate`. Set it explicitly for strict spec-only validation.
other Conventional Commit types, `agents` (the prefix VS Code's Agents
window uses) and the bot prefixes `dependabot` and `renovate`. Set it
explicitly for strict spec-only validation.
* `branch.require_description_grammar` — set to `true` to hold the
description to the specification's grammar, so `feature/Add_Login`,
`feature/new--login` and `feature/a/b` are rejected. Off by default,
Expand Down