How I Manage 20-30 AI Agent Sessions in VS Code

Today I normally have something between 20 and 30 terminal tabs open inside VS Code. Codex sessions, Claude Code sessions, servers, tests, CI watchers... the normal and completely healthy amount of tabs hahaha.

There are already many tools for working with multiple agents and sessions. Some help you orchestrate agents, some give you a new interface, some try to put Claude and Codex in the same place. Then you still need to review the diffs, check Git, understand what changed, go back to GitHub, and so on.

I tried looking at some of those options, but honestly, I didn't want to adapt my whole workflow to another tool. I already know VS Code. I already have my shortcuts there. I like using Git Graph to follow what is happening in Git. My projects and terminals are already there too.

So I stayed with VS Code.

I still want to use the CLI

Another important part of this setup is that I want to keep using the CLI versions of these agents. I don't want a separate desktop app, another editor, or even one of the agent interfaces already available inside VS Code.

For me, the command line is simply better for this kind of work. It gives me more freedom to arrange things the way I want and makes it faster to jump between different types of tasks. An agent is just another terminal tab beside my server, tests, logs, or a regular shell. I don't have to change how I work depending on which tool is running there.

I've been working this way for a while and it has worked really well. The only thing missing was a way to keep all those CLI tabs organized and restore their sessions automatically.

This probably doesn't sound like the most exciting problem in the world, and that is kind of the point. I wasn't looking for a new system to learn and fight with. I just wanted better tabs.

Of course, my solution to having too many tabs was to build more infrastructure around the tabs. Very normal developer behavior.

I navigate almost everything with the keyboard

This workflow started before the AI agents. I already use Chrome mostly through the keyboard, moving left and right between tabs without thinking much about it.

I use a split keyboard with a Hyper key. Hyper+Left and Hyper+Right let me zap through tabs very quickly. I still use the mouse a lot, but for navigation I really don't want to keep reaching for it every few seconds.

I also have some Hammerspoon scripts to move between macOS windows. I don't use that many desktops, probably three or four, but I use a lot of windows.

On my first desktop alone I can have three or four Chrome windows open with different profiles. Then another three or four VS Code workspaces. I need to move between all of them fast or I completely lose the context of what I was doing.

This already looked a little chaotic, but it worked.

The problem was not opening the sessions. It was getting them back

Having 20-30 tabs is fine until VS Code needs to restart. Or the Mac gets painfully slow because I'm running too many tests. Or something leaks memory and I need to close a few windows before the machine starts asking for mercy.

When I opened everything again, my setup didn't come back the way I left it. The terminal tabs weren't always restored with the right sessions, the order was gone, and I had to remember which Codex or Claude conversation belonged to which task.

If it happened once, whatever. But after rebuilding the same setup a few times, it started to get really annoying.

I wanted to reopen VS Code and get the same tabs, in the same order, connected to the same sessions. I also wanted to see which agent was still working and which one was waiting for me, without opening every terminal like some kind of agent babysitter.

So I built AI Terminal Sessions.

What the extension does

Each managed VS Code tab owns a private tmux session. This means the process can stay alive when VS Code reloads, and the tab can reconnect to it afterward.

The extension saves the tabs and their order, restores Codex and Claude sessions, and shows a small status marker when an agent is working or needs attention. I can also pin important processes, like a server or CI watcher, into a small Session Monitor.

For my daily use, the important parts are simple:

  1. Hyper+Left/Right moves between my sessions like browser tabs.
  2. I can see which agent needs me without checking every tab.
  3. Reloading VS Code brings the tabs back in the same order.
  4. If I restart the machine, the saved Codex and Claude sessions can be resumed.

It also keeps a history of closed tabs and recovers drafts, because apparently losing a prompt that I spent ten minutes writing is how I learn that I need another feature.

The extension is still a macOS preview and it is not on the VS Code Marketplace yet. It works for my setup, which is the honest support promise for now. You can install it from source or build the VSIX from the GitHub repository.

How it looks in practice

This setup has been working well for me. There are more complete agent dashboards out there, and maybe one day I'll move to one of them. For now, VS Code plus ordinary terminal tabs feels like a simple solution to a complicated problem.

I can keep using the CLI, stay close to the code and Git history, and avoid learning another workflow when all I wanted was well-organized tabs. VS Code already had almost everything I needed. It just didn't know how to keep dozens of command-line sessions organized and bring them all back after a restart. That was the missing part.

Still chaotic? Yes. But now it is restorable chaos, which is much better.