{"slug": "agentic-commits", "title": "Agentic Commits", "summary": "A new specification called Agentic Commits v0.1 defines a single `Assisted-by:` footer that records which agent and model produced a git commit, extending Conventional Commits rather than replacing it. The convention is enforced by a git `commit-msg` hook that reads four environment variables — `AGENT_NAME`, `AGENT_VERSION`, `AGENT_MODEL_PROVIDER_SLUG` and `AGENT_MODEL_SLUG` — and writes a trailer such as `Assisted-by: omp 18.18.0 (opencode-go/deepseek-v4.1-flash)`; all four variables must be set or the commit fails, and `ASSISTED_BY=0` opts a single commit out. The project argues `Co-authored-by:` is unsuitable because it is a human authorship trailer requiring a real `Name <email>`, citing anthropics/claude-code issue #1653 where an invented agent address was registered by an unrelated person and mis-attributed commits.", "body_md": "Conventions for commits made with AI agents.\n\nv0.1 defines **attribution**: a small, enforceable convention for recording the\nagent and model that produced a commit — without an agent-specific extension\nand without abusing `Co-authored-by:`.\n\n[Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) defines\nthe message shape: `<type>[optional scope]: <description>`, an optional body,\nand footers that follow git trailer syntax. **Agentic Commits is an extension\nof that specification, not a replacement.** It keeps every Conventional Commits\nrule and adds agent-specific requirements:\n\n- one `Assisted-by:` footer identifying the agent and model;\n- an environment contract (`AGENT_*` ) that fills that footer.\n\n`Assisted-by` is a valid Conventional Commits footer token — footer tokens use\n`-` in place of whitespace — so an Agentic Commits message is still a valid\nConventional Commits message. Enforcing the Conventional Commits shape stays\nwith existing tooling; this project only adds the attribution layer.\n\nOriginal project: [conventionalcommits.org](https://www.conventionalcommits.org/)\n· [conventional-commits/conventionalcommits.org](https://github.com/conventional-commits/conventionalcommits.org)\n\n```\nfeat: reject duplicate idempotency keys\n\nBody as usual.\n\nAssisted-by: omp 18.18.0 (opencode-go/deepseek-v4.1-flash)\n```\n\nThe trailer is written by a git `commit-msg` hook, so it works for **any**\nagent that exports four environment variables before running `git commit`.\nThe normative contract is in [SPEC.md](https://github.com/grushetsky/agentic-commits/blob/main/SPEC.md).\n\n- `Co-authored-by:` is a human authorship trailer. It needs a real`Name <email>` , and GitHub links it to an account. Agents invent addresses\nfor it; at least one such address was registered by an unrelated person and\nmis-attributed commits ([claude-code#1653](https://github.com/anthropics/claude-code/issues/1653) ).\n- Existing `Assisted-by:` uses incompatible values:`<tool>` ,`<tool>:<model>` ,`<agent>/<model>` ,`Name <email>` .\n- Agent extensions only cover their own agent. A git hook covers all of them, including agents that do not exist yet.\n\n```\nAssisted-by: <AGENT_NAME> <AGENT_VERSION> (<AGENT_MODEL_PROVIDER_SLUG>/<AGENT_MODEL_SLUG>)\n```\n\n| Variable | Example | Grammar | \n|---|---|---|\n| `AGENT_NAME` | `omp` | lowercase dash-case | \n| `AGENT_VERSION` | `18.18.0` | `[0-9A-Za-z][0-9A-Za-z.+-]*` | \n| `AGENT_MODEL_PROVIDER_SLUG` | `opencode-go` | lowercase dash-case | \n| `AGENT_MODEL_SLUG` | `deepseek-v4.1-flash` | lowercase dash-case; dots allowed in version segments | \n\nRules that matter:\n\n- All four variables or none. None means \"human commit\" and produces no trailer. A partial set is a broken integration and fails the commit.\n- Values are verified runtime metadata. Do not ask the model to name itself.\n- One `Assisted-by:` trailer per commit. Merges, cherry-picks, reverts, and\nrebases are skipped.\n- The hook is idempotent: if the message already has an `Assisted-by:` trailer,\nit does nothing.\n- `ASSISTED_BY=0` opts a single commit out.\n\n```\ngit clone <this repo> agentic-commits\ncd agentic-commits\nmise install            # hk 2.11.1\nhk install              # register the commit-msg hook\n```\n\nTo adopt it in an existing repository, copy `hk.pkl` and `hooks/` into it (or\nmerge the `commit-msg` hook into your `hk.pkl`) and run `hk install`.\n\nPrefer plain git? The script is a normal `commit-msg` hook:\n\n```\nln -s ../../hooks/assisted-by-commit-msg .git/hooks/commit-msg\n```\n\nOr, with Git ≥ 2.54, install it globally without touching repositories:\n\n```\ngit config --global hook.assisted-by.event commit-msg\ngit config --global hook.assisted-by.command ~/path/to/assisted-by-commit-msg\n```\n\nExport the four variables into the environment of every tool subprocess that\ncan run `git`, and update them when the model changes:\n\n```\nexport AGENT_NAME=omp\nexport AGENT_VERSION=18.18.0\nexport AGENT_MODEL_PROVIDER_SLUG=opencode-go\nexport AGENT_MODEL_SLUG=deepseek-v4.1-flash\ngit commit -m \"feat: ...\"\n```\n\nAgents that do not set these variables can still be attributed by an adapter,\nbut the standard itself is the environment contract. Do not add\n`Co-authored-by:` for the agent; do not fabricate values the runtime cannot\nprovide.\n\n```\ngit log -1 --format=%B\ngit log -1 --format='%(trailers:key=Assisted-by,valueonly)'\nSPEC.md                          normative specification\nhk.pkl                           hk commit-msg hook\nhooks/assisted-by-commit-msg     reference hook (also usable as a git hook)\nexamples/hk-config.pkl           user-level hk configuration\ntests/run.sh                     hook and hk integration tests\n```\n\nRun the tests with `./tests/run.sh`.\n\nDraft 0.1.0. The trailer key and variable names are stable; the value grammar may still change before 1.0.0. Changes are versioned with SemVer.\n\nPrior art and the disagreements between projects (Fedora, LLVM, OpenInfra,\nHyperSpy, the Linux kernel, Kubernetes, Apache) are summarized in\n[SPEC.md §12](https://github.com/grushetsky/agentic-commits/blob/main/SPEC.md#12-prior-art).", "url": "https://wpnews.pro/news/agentic-commits", "canonical_source": "https://github.com/grushetsky/agentic-commits", "published_at": "2026-11-12 20:27:49+00:00", "updated_at": "2026-11-12 20:52:04.427344+00:00", "lang": "en", "topics": ["ai-agents", "developer-tools", "ai-tools"], "entities": ["Agentic Commits", "Conventional Commits", "anthropics/claude-code", "GitHub", "omp", "opencode-go", "deepseek-v4.1-flash", "hk"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/agentic-commits", "markdown": "https://wpnews.pro/news/agentic-commits.md", "text": "https://wpnews.pro/news/agentic-commits.txt", "jsonld": "https://wpnews.pro/news/agentic-commits.jsonld"}}