I run my AI agent in a terminal split inside my IDE. Most of the time, it's a good arrangement. The DX beats the dedicated editor extensions, since the AI companies release console-first and the CLI is where new features land. The agent edits files, I watch the diffs and see what it's doing and why, and everyone stays in their lane.

Then the agent decides it needs a dev server. It runs pnpm dev with its shell tool, the way it runs everything else, and at that moment a process comes into existence that my editor knows nothing about. It's not in my task list. <leader>ow shows my overseer tasks, humming along with their output buffers and their proper lifecycle — and this thing is not among them. I can't stop it from the editor. I can't tail it. If the agent's session dies, the process doesn't die with it; it just loses its parent and keeps listening on port 3000, along with whatever child processes it spawned along the way.

I found this out the usual way: a fresh pnpm dev refusing to bind, a ps aux | grep node full of processes whose sessions had ended an hour ago, and me killing PIDs at some hour when I should have known better.

The irritating part is the asymmetry. The tasks I start go through overseer.nvim, which is the piece of my config I'd defend in a fight. My tasks appear in a list. They have output I can open. When I stop one, its whole process tree gets torn down properly. The agent, sitting in a terminal buffer inside the same editor, gets none of that. It has a shell and a prayer.