Skip to main content
LangGraph, as a callback handler.
That is the whole integration. From here every call the client makes is recorded on the open trajectory.

What is distinctive

Node transitions are recorded as well as model and tool calls, so a trajectory shows the path the graph actually took — which is the thing a reviewer asks about when a graph reached an outcome nobody expected.

In context

The witness block opens the trajectory and closes it on exit, including when the body raises — an episode that ended badly is exactly the one worth having a record of.

Recording without content

Shape and metadata only: model, latency, token counts, tool names. No prompt or response text. The governed facts are unchanged.
Authority is never asked for by an adapter. It stays an explicit trajectory.authorize(...) call, so importing a middleware can never become a spend decision. See authorise an action.