Grey Box agent monitoring

Monitor your own agent

Import your agent's logs (OpenAI or Anthropic tool-calling format), label some of its actions, and train a monitor that scores each new action before it runs. Then put it in your agent's loop. Everything here runs in this browser tab: the page does not upload your logs.

What this monitor is. It is the word-count monitor (TF-IDF and logistic regression) from our preregistered tests, the same model as graybox.monitor.TextMonitor in the Python SDK. The browser and Python give identical results (identical text on 302 real agent steps; with the privacy filter, identical vocabularies and held-out AUROC, 0.9915 in both; trained on the same data, the two give scores within 0.01 and the same review decisions). On the tools and policies that it was trained on, it is equal to a much larger reader model, also on closed agents. It does not transfer to a new type of policy or task: on a different benchmark it was at chance. For robustness to new tasks, use the reader monitor (self-hosted).

1. Load your agent's actions

…or paste

No data loaded yet.

Which formats work
  • OpenAI Chat Completions: one conversation per line, {"messages": [...]}, with assistant messages that have tool_calls and tool messages with the results.
  • Anthropic Messages: {"system": "...", "messages": [...]}, with tool_use blocks and tool_result blocks.
  • Steps: {"instructions", "task", "history", "action": {"tool", "args"}, "label"}, or {"context", "action", "label"}.

Each tool call becomes one action. The monitor sees what it would see before the call runs: the system prompt, the first user message, the earlier calls with their results, and the call. An optional "labels": {"call_id": 1} field on a conversation gives labels (1 = violation). Python reads the same formats: graybox.guard.conversation_steps.

2. Label actions

Load your agent's actions first (step 1).

3. Train and evaluate

% of actions to a human