Behavioral evidence for agent operations
Investigate what your AI agent did.
GMAN turns observed agent activity into a source-aware session record of tools, files, decisions, denials, and delegation — demonstrated today on Claude Code, built for custom agents across models and frameworks. Facts, inference, and unknowns stay separate.
Developer preview · Claude Code demonstrated today · Metadata-only cloud record
2026-08-22 · 04:58:35 → 15:34:22 UTC
635 recorded activity rows over 10h 36m · 321 tool calls · 1 write with success status · 1 denied decision · 2 observed failures · outcome not derivable
Observed decisions
- accepted
- 228
- denied
- 1
co-occurrence only, not causality
Observed actions
- tool calls
- 321
- writes with success status
- 1
Bash ×305 · Edit ×6 · +6 more
- llm.requestclaude-opus-5 · 627 out tok05:00:38success
- tool.callBash · decision accept05:00:39success
- tool.callBash · decision deny05:00:39denied
task outcome not derivable from cloud evidence
One real session, accounted for.
- recorded activity rows
- 635
- tool calls
- 321
- denied decisions
- 1
- observed failures
- 2
Task outcome is not derivable from cloud evidence.
One sanitized Claude Code session. Every figure on this page comes from it.
See how the evidence is modeled.Investigation
Follow a signal to the exact events.
Attention appears only when there is something to look at. Related moments cluster by kind and time span, then expand to the individual events.
Anchored events, in recorded event time
largest interval between anchored events · 10h 14m · 97% of the anchored span · recorded event time, not arrival time
146 of the rows on this rail carry no recorded time and cannot be placed on the timeline at all — including, possibly, inside that interval
1 tool denial · 05:00:39 UTC
- tool denial·
- llm.requestclaude-opus-5 · 627 out tok05:00:38success
- tool.callBash · decision accept05:00:39success
- tool.callBash · decision deny05:00:39denied
- tool.callBash · decision accept05:00:41success
- llm.requestclaude-opus-5 · 17 out tok05:00:41success
showing 627 of total 635 · crop centred on the denied decision
Denied is a decision, not a failure.
A denial renders indigo. Red is reserved for an observed execution failure — a different state, counted separately. This session records 1 denied decision and 2 observed failures. The record keeps them apart because they mean different things.
Co-occurrence only, not causality.
The cluster groups moments that share a kind and a time span. It does not claim they share a cause, and nothing here explains why the decision was denied.
Evidence
Fact, inference, and unknowns stay separate.
GMAN keeps execution, decisions, normalization, source provenance, time anchoring, arrival finality, conflicts, and delegation as eight independent readings. It does not fuse them into a grade.
Provenance
which capture channels observed the row
- otel and hook
- 229
- otel only
- 259
- hook only
- 147
an independent dimension; it is not the time-anchoring count
one of eight independent dimensionstwo of eight independent dimensionsthree of eight independent dimensions
Eight independent readings. Never fused into a grade.
Each dimension answers one question about the record. A high count in one is not evidence about another, so they are never averaged, scored, or reduced to a health colour.
Four distinct states that are not failures
- unsupported adapter coverage
- degraded normalization
- incomplete correlation
- independently established absence
Read the methodology.GMAN does not make the record look complete. It makes the record explainable.
Precise evidence
See what the record kept out.
Cloud-facing evidence is metadata-scoped. Previews and paths are absent, and the fields removed before delivery are listed on the event itself.
What was kept out
- content_scope
- metadata_only
- preview_state
- absent
- paths
- absent
stripped_fields
- organization.id
- terminal.type
- user.account_id
- user.account_uuid
- user.email
- user.id
Full event detail
What this is
- occurred_at
- 05:13:01
- observed_at
- 05:13:06
- normalization
- parsed
Why we believe it
- otel
- true
- hook
- false
- normalizer
- 0.1.0
attributed by the OTel channel only
Measured
- model
- claude-opus-5
- output_tokens
- 25485
- input_tokens
- 2
- cache_read
- 179964
- cache_create
- 5290
- cost_usd
- duration_ms
- 309775
Kept local by design.
The cloud record carries metadata about the event, not the event's content. Previews and paths are absent because they are never sent, and the fields removed before delivery are named on the event itself.
A formatted number never hides its exact value.
The cost reads $0.7800. Focus it, or copy it, and the canonical value is there in full.
Stripped fields show construction, not discovery.
This is a list of fields the recorder removes before delivery. It is not a scan, not detection, and not a claim about what the local source material contains.
Delegation
Delegation, on the record.
GMAN recorded 54 subagent lifecycle moments in this session, 5 starts and 49 stops. None of them carries a known time, so they are labelled and listed last rather than placed in a sequence the evidence does not support.
- subagent.lifecycle · starttime unanchored
- subagent.lifecycle · starttime unanchored
- subagent.lifecycle · starttime unanchored
- subagent.lifecycle · stoptime unanchored
- subagent.lifecycle · stoptime unanchored
- subagent.lifecycle · stoptime unanchored
- 48 further lifecycle moments are recorded and counted, and are not listed here
Lifecycle moments
5 subagent start · 49 subagent stop
no known time on any of them
Agent tool
5 Agent tool calls
calls to the tool named Agent · not a count of subagents
Time anchoring
unanchored time present · 147
informational · a separate dimension of the record
three independent readings · not summed, not paired, not mapped onto one another
Lifecycle observed. Time absent, and labelled.
A start and a stop are events the record captured. They do not say a subagent is running, how long it ran, how deep the delegation went, or that every subagent's stop was observed.
Identity is withheld, not missing.
Agent attribution is recorded for this session. An agent id is a real identifier, so it is not published here. That is a sanitization decision, and it is a different thing from a gap in the evidence — the record knows, this page does not say.
What a reader can reconstruct
- that 5 subagent starts were recorded
- that 49 subagent stops were recorded
- that the session made 5 calls to the Agent tool
- that none of the 54 moments can be placed on the timeline
What a reader cannot conclude: how many distinct subagents ran, which lifecycle moment belongs to which Agent tool call, or which start pairs with which stop. The record does not evidence any of the three, so the page does not draw them.
How it works
Two sources, one record.
Evidence reaches GMAN from the machine the agent runs on. Nothing is scraped from a model provider, and no prompt or response text leaves the machine.
Capture fails open: if delivery is unavailable the agent keeps working. Delivery fails closed: an unauthenticated record is not accepted.
Observe. Native Claude Code hooks and OpenTelemetry both report activity from the machine the agent runs on. Two sources, so a row can be evidenced by one, the other, or both.
Hold locally. A durable local journal keeps what was captured. If delivery is unavailable, the agent keeps working and the record waits.
Deliver and normalize. Authenticated delivery sends a metadata-scoped record. Normalization states are recorded, not smoothed.
What arrives is metadata about the event, not its content. Which source evidenced each row stays on the row, so a reader can tell a joined record from a single-source one.
Read the methodology.Scope
Today, next, and where this is going.
Claude Code is the integration GMAN can demonstrate today, and the record it produces is the one this page has been showing. The system is being built for custom agents across models, providers, frameworks, and enterprise environments.
Today
What operators can use or see now.
- Investigate demonstrated Claude Code sessions.
- Inspect activity, decisions, actions, provenance, timing, and where the evidence stops.
- Read a metadata-scoped cloud record that discloses removed fields per event.
Next
Actively being built.
- A guided path from signup to a first recorded session.
- Recorder access beyond internal operation.
- Investigation summaries an operator can hand to a teammate.
North star
Where GMAN is going.
- Reconstruct custom-agent journeys across models and frameworks.
- Connect actions, delegation, evidence, and outcomes across enterprise systems.
- Give operators defensible answers about what an agent did, what the evidence behind it is, and what remains unknown.
A capability moves into Today when a session on this page can demonstrate it. That is the whole rule, and it is the one every claim on this site is written against.
Read the record for yourself.
Open the session account, then follow one moment to the event behind it.