Why Coding Agents Keep Ending Up in the Terminal
If you zoom out for a minute, it’s hard to miss a pattern.
A lot of the serious “agent harness” projects are converging around terminal-first workflows: OpenAI’s Codex CLI, Anthropic’s Claude Code, OpenCode, and similar tools. Even when there’s a GUI, the terminal ends up being the control plane.
I don’t think this is nostalgia. I think it’s a practical response to the real constraints of agent work. The first constraint is trust.
Agents can propose changes fast. They can run commands fast. If you can’t inspect what they did and why, you don’t have “automation.” You have an anxiety generator.
Terminals are unusually good at making actions legible. You get explicit commands, explicit file paths, explicit diffs, and a tight feedback loop. Those artifacts are the raw materials of trust.
The second constraint is review bandwidth. The bottleneck for most knowledge work isn’t execution anymore. It’s review. A terminal workflow naturally encourages small, reviewable units: run a command, see output, apply a patch, run a check, stop.
That structure scales better than big, opaque actions. You can keep the system moving without needing to “believe” anything. The third constraint is composability.
CLI tools chain. Search flows into edit flows into test flows into packaging flows. Agent harnesses can sit on top of that ecosystem instead of reinventing it. The harness doesn’t need to be a full IDE to be useful. It needs to orchestrate a few predictable steps across tools that already exist.
The fourth constraint is bounded execution. A big part of using agents safely is controlling blast radius. Terminals make it easier to say:
- only touch these directories
- only run these commands
- require explicit approval for anything risky
- log what happened
Those constraints aren’t “extra.” They are the difference between a tool you can keep using and a tool you use once, get burned, and quietly abandon. I also think the terminal plays nicely with the way people actually work.
You can run it locally. You can run it over SSH. You can run it in a restricted environment. You can log it. You can paste exact reproduction steps into a ticket or a worklog. You can do all of that without taking screenshots of UI state.
That’s why terminal-first agent harnesses feel inevitable. They aren’t trying to be magical. They are trying to be inspectable. If you want the short version, it’s this: terminals are where actions become artifacts, and artifacts are what make agent work trustworthy. Further reading: