AUDIT AN AGENT
LIKE A GIT BRANCH.
A process is a named sequence of steps. Some run on humans, some on agents. Each step reads and writes to the graph, each transition is logged, each run is replayable. You see what the agent read, what it wrote, what it cost — and who approved it.
AUTOMATION YOU CANNOT INSPECT IS A LIABILITY.
Most CRM-to-AI workflows today are a Zapier hop and a lot of Python. They run, mostly. When the renewal note comes out wrong, nobody can say which input the agent read, which version of the account it saw, or whether a human ever looked at it before it went out. The results are inconsistent, and the inconsistency is invisible.
That is tolerable for a demo. It is not tolerable for client work, for regulated teams, or for anyone who has to explain afterwards why an agent wrote what it wrote.
CMP42 makes agent work reviewable. A process answers four questions for every run: what did it read, what did it write, at what token cost — and would the answer have been different against last month’s snapshot?
STEPS. HOOKS. RUNS.
Agents and humans, in sequence
A process is a named sequence of steps. Some run on humans — a partner reviews a case note. Some run on agents — Claude drafts the follow-up. You decide which is which.
Every step reads and writes the graph
Steps do not pass loose text to one another. They read from and write to the same Context graph, validated against your Models, so each step works from the same source of truth.
Human-in-the-loop hooks
Put a human approval step wherever judgement matters. The process waits for a person to approve before the next step runs — nothing an agent drafts has to go further unreviewed.
Full run history
Every transition is logged. Open any past run and follow it step by step: inputs, outputs, decisions, who or what acted at each point.
Every write has an author
Every write records the human or agent that produced it. “The system changed it” is never the answer.
Token spend per process, per run
Token spend is visible per process and per run, so the cost of an automated step sits next to the work it produced.
Human approvals are the same event on four channels. A step configured as approve notifies the responsible person through whichever channel the workspace has configured: the admin data table with an approve/reject button, the MCP tool process.approve(runId, decision) that an agent can call on someone else’s behalf, a signed approval link emailed to an external manager who is not a CMP42 user, or a chat-client callback (Slack or Teams bot posts the decision into a channel, the button click calls back into CMP42). No embedded widget on this site, no cookies for any of these paths.
DRAFTED BY AN AGENT.
APPROVED BY A PARTNER.
A product-led B2B team wants an agent to read a real customer’s history before it drafts the renewal note — not a generic summary that gets the account name wrong. The process on the right describes that workflow.
- An agent gathers context from the graph: the deal, the company, the people involved, the latest documents.
- The agent drafts the renewal note and writes it to the deal.
- A partner reviews it. They can request changes — the agent revises — or approve.
- Only the approved note moves on.
The run log shows what that looks like afterwards. Definition format, step names and figures are illustrative; how processes are declared ships with the Alpha and is shaped together with the Design Partners.
process: renewal_note
steps:
- id: gather
run: agent # e.g. Claude via MCP
reads: [deal, company, contact, doc]
- id: draft
run: agent
writes: note -> deal
- id: review
run: human # role: partner
approve: required # approval hook
- id: hand_off
run: humanrun renewal_note · deal: "Aspen · Q4 renewal"
gather agent:claude read 7 objects 1,840 tok
draft agent:claude wrote note v1 2,310 tok
review human:partner changes requested
draft agent:claude wrote note v2 1,120 tok
review human:partner approved ✓
hand_off human:partner done
─────────────────────────────────────────────────────────
total 5,270 tokREPLAY AGAINST LAST MONTH.
Every object in the graph is versioned, so a process run is not a one-off event you can only read about. You can replay any process against a past snapshot and check whether the answer would have been different.
That turns vague worries into questions you can answer: Did the note go wrong because the data was wrong, or because the agent was? If we switch the model or change the step, does last month’s output improve? What exactly did the agent know on the day it wrote this?
If you know how to review a branch, you already know how to review an agent:
| In git | In a CMP42 process |
|---|---|
| Commit with an author | A write attributed to the human or agent that produced it |
| Diff | What a run read and what it changed in the graph |
| Pull-request review | A human-in-the-loop approval step |
| Log | The full run history, transition by transition |
| Checking out an old commit | Replaying a process against a past snapshot |
$ cmp42 replay renewal_note --run <run-id> --snapshot 2026-08-31
↺ replaying 6 steps against snapshot 2026-08-31
Δ draft note differs from original run → open diffKNOW WHAT A RUN COSTS.
Agents are not free, and “the AI bill went up” is not a useful finding. Because CMP42 records token spend per process and per run, you can see which workflows are worth automating, which steps are expensive, and what a single approved renewal note actually cost to produce.
CMP42 does not ship its own model — you bring the one you trust. Cost accounting makes its spend visible where the work happens, next to the output and the human who approved it.
Token counts come from two sources. The MCP client itself reports usage on every tool response — that is the primary signal, captured in the run history the moment the tool call completes. In parallel, CMP42 reconciles once a day against the model provider’s usage endpoint (OpenAI, Anthropic, Google) so the numbers survive a client-side drop. Costs are shown two ways: input and output tokens separately, and in euro converted at the pricing snapshot taken at run time — later price changes never distort the historical figures.