Agents - andreaderuvo/argus GitHub Wiki

Claude, Codex, Gemini and the rest compared

Argus does not care what runs in a session: if it runs in a terminal, it works โ€” you see it, type into it, hand it prompts and read the files it writes. That part has no matrix.

What does differ is the handful of things where the agent has to meet Argus halfway: it has to tell us something no amount of watching from outside can work out: when a turn starts, when it finishes or wants you, and which folder it is in. This is who can do them.

Claude Code Codex Gemini CLI a shell
Terminal, files, documents, prompts yes yes yes yes
Prompts, with the Enter pressed for you yes yes yes yes
Teams yes yes yes โ€”
In a team: team_task/team_done, and the Stop guard that sends it back to report yes (plugin) yes (plugin) the tools only, no guard โ€”
Says when a turn starts yes โ€” UserPromptSubmit yes โ€” UserPromptSubmit (0.160 and later) no no
Rings when it finishes or wants you yes โ€” Stop, Notification yes โ€” Stop, PermissionRequest; notify before its hooks are reviewed yes, on versions with hooks โ€” AfterAgent, Notification no
Says which folder it is in yes โ€” the status line hook no no not needed
Folder shown with nothing wired where it started where it started where it started where it is, live
Argus as MCP tools yes yes yes โ€”
The Argus plugin (hooks + tools in one install) yes yes tools only (an extension) โ€”

The bold rows come from two switches in Settings, which write into the agent's own configuration file: Let your agents ring (the first two rows) and Let your agents say where they are (the third). They keep a copy of the file as it was before Argus first touched it, they report a hook you wrote yourself rather than replacing it, and turning them off takes back only what carries Argus's own marker. The plugin is the other way to the same hooks, installed from the agent instead.

Hooks come first, the pane is the fallback. An agent that says when it starts and stops is believed over its pane: Argus no longer has to guess "working" from the screen redrawing, which a long command's silence used to fool. Without hooks the pane is still watched, and still right most of the time. A wired Codex counts as hooked only once its hooks have actually been heard, because Codex runs them only after you have reviewed them (below).

Codex: one review, then it speaks for itself

Codex 0.160 has Claude Code's hooks โ€” the same file shape (~/.codex/hooks.json), the same event names, the same JSON on stdin โ€” measured on an isolated Codex with every event logged. Codex runs a hook only after a person has reviewed it, so the first time it starts after you turn the bell on (or install the plugin) it asks you to approve the Argus hooks. Until then notify rings at the end of each turn, as before, and its pane is watched like any agent's without hooks. Argus cannot see that review, so it waits until a hook speaks.

Gemini

Recent Gemini CLI versions have hooks (AfterAgent, Notification) and Let your agents ring wires them. Early ones (0.1.x) have none: there the bell is the only thing missing, and the pane is still watched.

Why "says which folder it is in" is only Claude Code

An agent never chdir()s its own process. It runs your commands in children, and keeps its own idea of where it is working โ€” so tmux, /proc and everything built on them go on naming the folder the session was started in, however far the work has moved. Measured: a claude working elsewhere still reported its start directory from both pane_current_path and /proc/<pid>/cwd.

The only cure is the agent saying so, and Claude Code has the place to say it: its status line hook is handed workspace.current_dir on every turn, and the script Argus installs writes that into a tmux pane option that Argus prefers over anything it can observe. Three options, in fact, and each is a thing nothing outside the agent can work out:

@argus_cwd the folder it considers current
@argus_model the model it is running โ€” the process is called claude whatever is behind it, and a model named in a config is the one it started with
@argus_agent its own name, which matters on a board: a tile has no process tree to read and no business running ps on somebody else's machine

Anything can write them โ€” tmux set -p @argus_cwd /the/folder โ€” so a wrapper script or a shell prompt can do for another agent what the hook does for Claude Code.

They reach a board too. Panoptes shows the agent's name on the session chip and the model in its tooltip, taken from what the session declared and never inferred: what a session says is what a tile shows, and one that says nothing shows nothing.

Codex has no equivalent, so its window shows where it started and says "started in" rather than pretending. See Sessions and the terminal.

What none of them need

Nothing has to be installed inside the agent for the ordinary work: no wrapper. The rest is optional. The Argus plugin puts the hooks and the MCP tools in one install. argus-mcp alone is for an agent that should be able to ask you things and start other agents on its own (see An agent driving Argus). The two switches above are hooks in a config file you can read. Agents working on one goal are a team: the server directs them through a markdown file they all read, TEAM.argus.md. (The Two agents sheet that did this before was removed on 2026-10-06.) That is the whole integration surface, on purpose โ€” it is why an agent that changes next month does not take Argus with it.

โš ๏ธ **GitHub.com Fallback** โš ๏ธ