Journal

Field notes, written as I ship. Newest first.

73 posts

AI dev workflow

Claude Opus vs Sonnet: what breaks when you swap the model string

Comparisons of Claude Opus, Sonnet and Haiku score capability, speed and price per token. None of them mention that the model string is part of your request contract. Swap it and thinking can turn itself on, your answer can move out of content[0], and a max_tokens you never touched can start truncating. Eight measured differences, September 2026.

13 min read12
AI dev workflow

Claude Code behind a proxy: which safety nets stop running (2026)

A proxy changes where Claude Code's requests go. It also changes which of its own safety nets are still running. The credential variable is a header choice, the base URL alone does not move your billing, and a gateway context limit turns off auto compact recovery. Field log, September 2026.

10 min read28
AI dev workflow

Claude Code model: which setting actually wins (2026)

I went looking for which model was answering me and found three separate precedence orders, fourteen documented inputs, and two environment variables that resolve in opposite directions. Read from Anthropic's own docs on 9 September 2026, with the version numbers.

8 min read55
AI dev workflow

llms.txt in 2026: I measured who actually reads it

Eleven of fifteen documentation sites serve a real llms.txt. Zero of the five major AI crawler operators document reading yours. Measured on 8 September 2026 with a plain HTTP client, including the commands, plus the one part of the file that does pay off.

9 min read60
AI dev workflow

Agent Client Protocol and MCP are not the same layer (2026)

ACP and MCP sit on opposite sides of the agent: MCP connects an agent to tools, ACP connects an editor to the agent. The spec calls itself MCP-friendly and passes your MCP servers inside session/new. The catch is the transport floor: stdio is mandatory, HTTP and SSE are optional capabilities.

9 min read66
AI dev workflow

ccusage in 2026: what the Cost column actually measures

The Cost column in ccusage is a counterfactual: what your tokens would have cost at pay-per-use list prices, computed locally. On a Claude subscription it is not your bill, and ccusage's own introduction and Anthropic's own docs both say so. A field log on what the number measures, where the caveat is written, and where it is missing.

11 min read81