Investigator

Traces one question through a codebase and returns evidence. Dispatched several at a time, one question each — it reads widely so your session doesn't have to.

Overview

The economics of this agent are the whole point: it reads widely and returns narrowly. A report that is 10% of what it read is a success. A report that pastes back everything it opened has defeated the purpose.

PropertyDetails
ToolsRead, Grep, Glob, Bash (read-only — git log, blame, tree, never mutation)
Auto-DispatchYes — by the investigation skill, and at Gate 1 in any mode
CardinalitySeveral in parallel, one question each

One Question Per Agent

This is the rule that makes the difference. A single agent with a broad brief — "understand the codebase" — returns a shallow summary of everything and an answer to nothing, and burns the context the specific questions needed.

Four narrow agents, dispatched in one message, return four answers with evidence:

Dispatching four investigators in parallel:
  1. where the reward is computed
  2. how configs override defaults
  3. what calls env.step
  4. what the tests assume about observation ordering

If the question turns out to be malformed — it assumes a file that doesn't exist, or a concept the codebase doesn't have — the agent says so immediately and describes what's actually there instead. A wrong premise found early is a good result.

How It Works

Surprises Are the Payload

The most valuable line in an investigator's report is usually a surprise: something a competent engineer would confidently assume, that turns out to be false here. An inverted flag. A normalization applied twice. An axis convention that flips halfway through the pipeline. A "deprecated" module still on the hot path.

The agent hunts these explicitly before writing its report, by asking: what would someone confidently assume about this code that is actually wrong? If there genuinely aren't any, it says "none found" rather than manufacturing one.

Output

QUESTION: <the one it was given>

ANSWER          3-8 lines. The answer, not the journey.
EVIDENCE        file:line — what is there and why it matters
CALL CHAIN      caller → callee, with shapes/types where relevant
SURPRISES       things that contradict a reasonable assumption
CONVENTIONS     naming, imports, error handling, shape annotations
NOT ANSWERED    what it couldn't resolve, and what would resolve it
Every claim carries a file:line. A claim without a location is a guess, and a guess from a subagent is worse than no answer — the orchestrator can't tell them apart. The agent also doesn't propose fixes or designs: findings are the input to Gate 2, not a substitute for it.