Skip to content

Every push names its author. "We don't know" is one of the answers.

When a commit is made through Kodela, the host records whether an agent or a person in the console made it. When the push goes out, the broker labels it, and a commit the host never saw is labelled "unattributed", not "human".

agent human-console unattributed human
Who made the tip commit?

push.authorshipsynthetic

repo
acme/payments
ref
feature/dev01/validation
tip
7be0d13
author_class
agent
model requests
economy 14
AI API connections
0
mac
hmac-sha256 · key on this host

The host recorded this commit being made by an agent.

Git cannot tell you who wrote it

Git records a name and an email, which anyone can set. A commit written by a model and one written by a person are indistinguishable. Customers' security questionnaires and the EU AI Act's transparency articles are starting to ask which is which, and the supply-chain standards (SLSA, Sigstore) do not carry the field.

Record the origin where the commit is made, on infrastructure you control, and attach it to the push. Report the unknown as unknown.

How a push gets its label

  1. The commit is made. An agent in Build mode commits, and the host writes commit_origins: agent for that SHA. A person committing through the console gets human-console.
  2. The push goes out. The developer, or the agent if allowed, pushes through the git broker.
  3. The broker looks up the tip. It finds the tip commit's origin. With no record, it writes unattributed.
  4. The event is written. A push.authorship event goes to the hash-chained audit trail, carrying the author class, the repository and ref, and ai_activity: the model requests by model and the AI API connections since the previous push.
  5. The event is authenticated. HMAC-SHA256 under a key held on the host. audit-log verify checks it.

The label describes the tip commit. Mixed histories are visible by walking the per-commit origins in the audit. The HMAC key lives in the audit directory with mode 0600, and a current pointer supports rotation. Nothing needs configuring: the record is on for every push through the broker.

push.authorship · synthetic
{
  "event": "push.authorship",
  "repo": "acme/payments",
  "ref": "refs/heads/feature/dev01/validation",
  "tip": "7be0d13",
  "author_class": "agent",
  "ai_activity": { "model_requests": { "economy": 14 }, "ai_api_connections": 0 },
  "mac": "hmac-sha256:…"
}

A synthetic sample. Field names are illustrative.

What you can do with it

  • Answer "which code did AI write?" per push, from your own records.
  • Give customers and auditors an honest artefact. It exports through the SIEM formats with the rest of the audit trail.
  • See model activity next to the code it produced.
  • Start an AI-use disclosure from a record rather than a survey.

What the record can and cannot prove

  • It records what this host saw. It cannot see a laptop.
  • It is a MAC with a host key. An auditor verifies it on your host; a third party cannot verify it independently; the host's root user could forge it.
  • It is not SLSA or Sigstore provenance. Publicly verifiable provenance is planned, not built.

Questions

Is this provenance in the SLSA sense?

No. It is a host-signed record. Third-party-verifiable provenance is on our roadmap.

What if someone commits on their laptop and pushes from the workspace?

That commit reads unattributed.

Has it run against a live GitHub push?

It is deployed. A live push has not yet been recorded. We will update this page when it is.

Does it make us EU AI Act compliant?

No product can do that for you. The authorship record and audit trail are records you may find useful.

What it does not do yet

  • Third-party-verifiable signatures. The record is an HMAC under a key on the same host.
  • A recorded live GitHub push. The record is deployed; a live push has not yet been recorded.
  • Protection against the host's root user. Nothing ships off the host for you.
  • Pushes outside the broker. Only pushes through the git broker are labelled.
  • GitLab, Bitbucket, Azure DevOps.

Keep the record on your own host

Run Kodela on your hardware, or talk to us about a pilot.