Engineering Metrics That Actually Matter in 2026
A practical guide to engineering metrics: which ones to track, which to ignore, how to measure them, and how to use them without creating a surveillance culture.
·13 min read·
Gitmore TeamTo measure AI coding agents, count the work that actually merged, not the suggestions that were offered. Attribute each pull request and commit to an agent using the signals agents leave in Git (co-author trailers, bot accounts, branch prefixes), then track AI share of merged work, merge rate and time to merge per agent, and how much review load the agents create for your team.
Most engineering teams now use more than one AI tool. One engineer runs Claude Code in the terminal, another lives in Cursor, the organization pays for GitHub Copilot, and someone is trying OpenAI Codex or Devin on the backlog. Leadership asks a simple question: how much of what we ship is written by AI, and is it working? Measuring AI code assistants and agents turns out to be harder than it sounds, because each vendor only reports on its own tool, and none of them report on what reached production.
This guide is written for engineering managers and CTOs who want a vendor-neutral answer. It covers what each vendor dashboard can and can't tell you, how to attribute code to an agent from Git data, the metrics worth tracking, the mistakes to avoid, and a setup you can run manually or automate.
Key takeaways: Vendor dashboards measure usage, not outcomes. Git metadata is the only place where every agent's work meets. Attribution from Git gives you a floor, not an estimate. Track AI share alongside merge rate, time to merge and review coverage, at the team level, never as a per-person leaderboard.
Every major AI coding tool ships some kind of admin analytics. The problem is that each one sees only its own slice of the work, and what it sees is activity inside the tool rather than code that shipped.
Add the autonomous agents that open pull requests on their own (GitHub's Copilot coding agent, Devin, Google Jules, OpenAI Codex) and you have four or five dashboards, each with its own definitions, none of which answer the question leadership actually asked: how much AI-generated code is in production, and what is it doing to our delivery?
There is one place where all of that work ends up in the same format: your Git history. Every agent, whatever the vendor, eventually produces commits and pull requests. That is where outcome measurement has to start.
It helps to separate two families of numbers. Both are legitimate. They answer different questions and belong to different conversations.
| Usage metrics | Outcome metrics | |
|---|---|---|
| Examples | Seats, active users, suggestions accepted, tokens, spend | AI share of merged PRs, merge rate, time to merge, review load |
| Source | Each vendor's admin console | Git provider (GitHub, GitLab, Bitbucket) |
| Question answered | Are people using the tool we pay for? | Is AI-written work shipping, and at what cost to reviewers? |
| Covers other vendors | No | Yes, if the agent leaves a signal in Git |
| Typical audience | Procurement, finance, tool owners | Engineering managers, CTOs, the board |
Copilot adoption metrics tell you whether a license is being used. They don't tell you whether the pull requests it helped produce were merged, how long they took, or whether a human looked at them. A team can have high acceptance rates and a growing pile of AI-assisted pull requests that nobody has time to review. Only outcome metrics expose that.
If you already track engineering metrics such as cycle time and review time, outcome metrics for AI agents are the same numbers, split by who (or what) wrote the change.
AI code attribution means deciding, for each commit and pull request, whether an agent wrote it and which one. You can't do that by inspecting the code: once it's formatted and reviewed, model output and human output look the same. You can do it from the metadata agents leave behind.
A commit trailer is a Key: value line at the end of a commit message. Claude Code adds a co-author trailer to the commits it creates by default:
feat(billing): retry failed webhook deliveries
Co-Authored-By: Claude <noreply@anthropic.com>Recent versions may put the model name in the trailer (for example "Claude Opus"), so match on the noreply@anthropic.com address rather than the name. GitHub renders these trailers as co-authors, and they are easy to search for. They are the strongest signal you have, because they are attached to the commit itself and survive rebases and merges.
Some tools also add a footer to the pull request description or commit message, such as "Generated with Claude Code". When a commit is squash-merged and the trailer is lost, the pull request description often still carries the footer.
Autonomous agents usually open pull requests under their own identity rather than a person's. The Copilot coding agent, Devin, Google Jules and OpenAI Codex each act through a bot or app account, so the pull request author identifies the agent directly. This is the cleanest signal for fully agent-written work.
Several agents name their branches with a fixed prefix, such as copilot/, cursor/ or codex/. A branch prefix is a useful supporting signal, especially combined with a bot author, but on its own it's weaker than a trailer because anyone can create a branch with any name.
Pull requests are the unit most teams care about. A practical rule: treat a pull request as agent-written when it was opened by an agent account, or when most of its commits carry an agent signal. A human pull request with one AI-assisted commit out of ten is still a human pull request.
Git-based attribution only counts work that carries a signal. If an engineer pastes code from a chat window, strips the trailer, or uses an editor that doesn't add one, that work is counted as human. So the AI code share you measure is a lower bound: the real share is at least this high. That's a feature. A floor is honest and repeatable, and its trend over time is meaningful even if the absolute number is conservative.
Resist the urge to "improve" coverage with name heuristics. Matching on a branch called claude/ or a commit author named Claude, Devin or Jules will misattribute real people with those names, and some engineers name branches after themselves. A false positive is worse than a miss, because it erodes trust in the whole number. When in doubt, count it as human.
Skip the scripting
Want this attribution done for you across every repo?
Gitmore's AI agent ledger labels PRs and commits from Claude Code, Copilot, Cursor, Codex, Devin, Jules, Aider and Windsurf on GitHub, GitLab and Bitbucket. Metadata only, on every plan.
Once every pull request and commit is labelled, a small set of metrics covers what managers need to know. Calculate them per agent and per repository, over rolling windows such as 7, 30 and 90 days.
| Metric | How to calculate | What it tells you | Watch for |
|---|---|---|---|
| AI share of merged PRs | Agent-written merged PRs ÷ all merged PRs | How much shipped work comes from agents | Sudden spikes in one repository |
| AI share of commits | Commits with an agent signal ÷ all commits on the default branch | AI assistance inside human-led work | Squash merges hiding trailers |
| Merge rate per agent | Merged PRs ÷ (merged + closed without merge) | Whether an agent's output is worth reviewing | An agent whose PRs are mostly closed |
| Time to merge per agent | Median of merged time minus opened time | How much friction agent PRs meet in review | Agent PRs much slower than human PRs |
| Agent PRs waiting on a human | Open agent PRs with no review after N hours | Review queue pressure created by agents | A growing backlog nobody owns |
| Review coverage of agent PRs | Merged agent PRs with at least one human review ÷ merged agent PRs | Whether AI generated code in production was checked by a person | Anything below your policy (often 100%) |
| AI share trend vs review capacity | AI share over time, next to reviews completed per week | Whether reviewers can keep up with agents | Share rising while reviews stay flat |
Agents can open pull requests far faster than people can review them. The bottleneck moves from writing code to reading it. Two numbers make that visible: how many agent pull requests are waiting on a human right now, and what share of merged agent pull requests had a human review at all. If the first is growing and the second is slipping, AI generated code in production is outrunning your review process, whatever the usage dashboards say.
Agent metrics don't replace DORA metrics; they explain them. If deployment frequency rises while change failure rate also rises, the AI share trend and review coverage tell you whether agents are part of the story. Read them together.
"Lines accepted" and "suggestions accepted" measure interaction with a tool. Accepted code is often edited, rewritten or deleted before it merges, and some never leaves a local branch. Use these numbers for adoption, and use merged pull requests for impact.
AI makes it cheap to produce large changes, and large changes are expensive to review. Jellyfish found that AI-assisted pull requests are about 18% larger than other pull requests. When you compare time to merge between agents and humans, keep size in mind: slower reviews on bigger pull requests may be a size problem rather than a quality problem, and the fix may be asking agents for smaller changes.
Ranking engineers by AI usage or AI share creates two bad incentives at once: some people tag everything as AI to look modern, others strip trailers to avoid scrutiny. Either way, your data stops meaning anything. Keep these metrics at the team and repository level, the same principle that applies to developer productivity metrics in general.
Adding Copilot's "acceptance rate" to Cursor's "AI lines" to Claude Code's "lines accepted" produces a number with no meaning, because each vendor defines its metrics differently. If you need one figure across tools, compute it from one source with one definition: merged work in Git.
"Get AI share to 50%" is a target that can be hit by lowering the bar for review. AI share is context. Merge rate, review coverage and change failure rate tell you whether that context is healthy.
You can get a first answer this week without buying anything. Here is the manual approach, followed by the automated one.
ai-agent label (or one per agent) to pull requests opened by bot accounts or carrying agent trailers. A small CI job or webhook can apply it automatically.# Commits on main in the last 30 days with a Claude co-author trailer
git log main --since="30 days ago" -i --grep="Co-authored-by: Claude" --oneline | wc -l
# All commits on main in the same window
git log main --since="30 days ago" --oneline | wc -lFor pull requests on GitHub, the gh CLI can list merged pull requests whose branch uses an agent prefix:
gh pr list --state merged --limit 500 \
--json number,headRefName,createdAt,mergedAt \
--jq '.[] | select(.headRefName | startswith("copilot/") or startswith("cursor/") or startswith("codex/"))'This works for one or two repositories on one provider. It gets painful when you have many repositories, more than one Git provider, or agents that each leave a different kind of signal.
Gitmore's AI agent ledger does the attribution and the maths for you:
agent_ledger tool), so you can ask for it from an AI assistant.The ledger is included on every plan, including Free. See pricing for what each plan adds.
Start from merged work in Git, not from each vendor's usage dashboard. Look for the signals agents leave behind: Co-authored-by trailers (Claude Code adds one for Claude by default), "Generated with Claude Code" footers, pull requests opened by agent bot accounts, and branch prefixes such as copilot/, cursor/ and codex/. Count the merged pull requests and commits that carry those signals and divide by the total. The result is your AI code share.
There is no benchmark worth chasing. AI code share is a context metric, not a target. A rising share is healthy when merge rate, time to merge and review coverage hold steady. It is a warning sign when it rises faster than your team's capacity to review what the agents produce.
It is enough to measure Copilot adoption: seats, active users, suggestions and acceptances. It does not tell you what share of merged pull requests came from Copilot's coding agent versus Claude Code or Cursor, and it cannot see the other tools at all. For that you need a view built from Git data across every provider.
Not reliably. Code written by a model and code written by a person look the same once they are formatted and reviewed. The dependable signals are in the metadata around the code: commit trailers, bot authors, branch names and pull request descriptions. That is why Git-based attribution gives you a floor rather than an exact figure.
Avoid it. Per-person AI leaderboards push people to tag everything as AI or to hide their usage, and both corrupt the data. Report AI share, merge rate and review load at the team or repository level, and use the numbers to plan review capacity, not to rank engineers.
No. Gitmore's AI agent ledger works from metadata only: commit trailers, authors, branch names and pull request details. Detection is conservative, so a pull request with no agent signal is counted as human-written.
See how much of your shipped code comes from AI agents
Connect GitHub, GitLab or Bitbucket and get AI share, merge rate and time to merge per agent. Included on every plan, including Free.
Explore the AI agent ledgerExplore git reporting for your platform
Automated git reports for your engineering team. Set up in 2 minutes, no credit card required.
Get Started Free