Writer’s Brief
The Hook
When your tool doesn’t have a config option you need, sometimes you just read the binary.
Main Points to Cover
- Using
stringson a compiled Go binary to extract TOML/JSON struct tags and discover undocumented config fields - The two-layer fix: global default via config.toml
argsfield + bulk SQLite update for existing sessions - The detective work - tracing from “Chrome mode” display string to
use_chromeJSON field to discovering there’s no TOML equivalent, then findingtoml:"args"as the backdoor
The Angle
You hit a wall with a tool you use daily. There’s no docs, no GitHub issue, no Stack Overflow answer. But the binary itself IS the documentation if you know how to read it.
Target Reader
People who use CLI tools daily and sometimes need to go deeper than the docs. Developers who’ve never thought to strings a binary. Agent-deck users specifically.
Tone Notes
Story-driven with technical payoff. The fun is in the detective work, not the solution. Lean into the absurdity of “I asked Claude to change a setting and it started doing binary forensics.”
Raw Material / Moments to Write From
These are notes for Alex to write from. Not prose.
- Asked Claude to “make chrome the default” - simple request. Claude’s response: send an agent to crawl the entire .agent-deck directory, read SQLite schemas, check the binary type. Massive recon for a config change.
- The breakthrough was literally
strings binary | grep toml- extracting Go struct tags from a compiled binary. Binary archaeology to find a config field. use_chromeonly has ajsontag, not atomltag. The developers stored it per-session but never made it a global config option. Theargsfield was the undocumented backdoor.- 37 sessions across 3 profiles (default: 18, ai-course: 13, itw: 6). All updated in one bash loop. The
oatprofile existed but was a ghost - zero Claude sessions. - The binary had
Chrome modeas a display string next toClaude Options- meaning the TUI Settings screen probably has this toggle too. But we solved it from the CLI because that’s more fun. - The escalation path: check docs (nothing) -> check CLI help (nothing) -> check config file (nothing) ->
stringsthe binary (found it). Classic “when all else fails, read the source.” - The two completely different solutions needed for one problem: TOML config for the future, SQLite for the past.
- Also fixed the /capture command itself during this session - it was delegating to a subagent that had no conversation context, and it was writing blog prose instead of just giving writing prompts.