Leah & Yehudit · One agent, two harnesses

A weekend trip planner,
built twice.

The same agent, tools and scenario on the raw Messages API (hand-written harness) and on the Claude Agent SDK (Claude Code runs the harness). Same model (, effort ), same 7 turns, clean state each run.

The route

Seven stops over two sessions. Session 2 is a brand-new agent instance that only knows what it reads from disk. Each stop shows the tools both versions called and what the turn cost.

Where the tokens went

Input-side tokens per turn, split into fresh input, cache reads and cache writes, plus output. Cache reads are cheap ($0.20/M) and cache writes are expensive ($5/M on our API, $8/M with Claude Code's 1-hour cache).

input cache read cache write output

Lines of harness code

API: non-blank, non-comment lines per harness file. SDK: lines marked # replaces: <name>.

APISDK

Passport stamps

Nine pass/fail checks. Seven of them read saved state (memory.json, trips.json, tool log), not the reply text.

What we learned