Agents

Overnite runs the official command-line agents, unmodified, in a terminal on your workspace's machine - the same program you would run on your laptop, with nobody at the keyboard. Four are installed in every workspace:

AgentVersionSigns in withKey in SettingsResumes
Claude Code2.1.268Claude Pro or Max (/login)ANTHROPIC_API_KEYYes
Codex0.154.0ChatGPT Plus or Pro (device code)OPENAI_API_KEYYes
opencode1.18.30ChatGPT Plus or Pro (/connect)ANTHROPIC_API_KEYYes
Gemini CLI0.59.0Google account (link and code)GEMINI_API_KEYNo

Versions are pinned: an agent that upgraded itself mid-task would change the screens Overnite reads to tell whether it is working, waiting or done. They move together with Overnite releases.

Which one to pick

  • Claude Code for most work, and for anything you want to watch step by step: start it on Ask and every edit and command waits for your tap.
  • Codex for a task you can describe completely and check at the end: migrations, test fixes, refactors with a clear finish line.
  • opencode when you want a ChatGPT subscription or an Anthropic key behind an open-source agent.
  • Gemini CLI for a large context and a Google account you already have. It cannot pick a conversation back up after the workspace sleeps.

Several agents can work in one workspace at once, each on its own branch, and one agent can start and supervise others with ovn.

Signing in

Every agent gets its credentials one of two ways, and the choice is per agent, not per workspace.

A key in Settings → Agents reaches only that kind of agent, as the variable in the table above, in every workspace. It is encrypted at rest and shown again only as its last four characters. A key is the right choice for unattended work: nothing expires, nothing has to be typed after a wake. When an agent has both a key and a login, the key wins - every CLI prefers its environment - so remove the key to use the subscription.

A subscription login is typed once, inside the agent's own terminal. Overnite keeps what the CLI writes - only the sign-in file, never your conversations - encrypted, and puts it back into every workspace you open before any agent starts. Settings then shows Signed in (subscription).

Claude Code

Start a claude agent with no key and type /login. Follow what it prints: choose your Claude subscription, open the link on any device, sign in, and paste the code it gives you back into the terminal.

Codex

A codex agent without a login opens on a menu. Choose Sign in with Device Code, open the link on any device, and enter the code. Not Sign in with ChatGPT: that one redirects a browser to the workspace's own localhost, which your browser cannot reach.

opencode

In an opencode agent, type /connect, choose OpenAI (ChatGPT Plus/Pro or API key), then ChatGPT Pro/Plus (headless) for a link and a code. opencode offers Anthropic by API key only - put that key in Settings instead.

Gemini CLI

A gemini agent with no key opens straight on Please visit the following URL to authorize the application. Open it, sign in with Google, and paste the code at Enter the authorization code. With a Gemini key in Settings it uses the key and asks nothing.

A sign-in waiting for its code counts as blocked: the cockpit shows a text box for the code, and your phone is notified like for any other question.

Approvals

Every agent starts with an autonomy, chosen in the new agent form:

  • Auto (the default): the agent works on its own and stops only for a real question - a choice it cannot make for you, a sign-in code. An agent that waited for a tap on every edit would not be working while you sleep.
  • Ask: the agent asks before every command, file change and tool call. The cockpit turns each question into buttons - Yes, Yes, and don't ask again for …, No - that press exactly the key you would have pressed at the terminal, and your phone is notified.

What each one means for each agent:

AgentAutoAsk
Claude Codeauto mode: each action is checked before it runs, safe ones go ahead, risky ones are refused and Claude looks for another wayasks before every write and command
Codexnever asksasks when the model decides an action needs approval
opencodeapproves what its permissions do not forbidasks as its permission settings say
Gemini CLIapproves every tool callasks before each tool call

Agents started from GitHub with @overnitedev always run on Auto, and ovn spawn does unless you pass --ask. A suspended agent resumes with the autonomy it started with.

Claude Code's auto mode costs a little more per session: its checks are model calls too. Codex never uses its own sandbox, in either mode: it cannot be set up inside a workspace, so it would fail every command.

Running on Auto is reasonable because of where agents run: the workspace itself is the sandbox - a gVisor machine of its own, with no route to other workspaces or to Overnite's servers, and a git token for one repository (Security). An agent can still do anything to that repository its token allows: push branches, open pull requests, comment on issues. Review what it opens before you merge.

Statuses

StatusMeaning
startingThe process is up and its screen is not recognised yet. Input waits.
workingThinking, running tools, writing.
blockedWaiting for you: a permission, a question, a sign-in code.
idleAt its prompt, done with its turn.
errorIts provider refused it - usually a missing or wrong key, or a usage limit.
suspendedStopped on purpose with its conversation kept: the workspace slept, or a question went unanswered for 6 hours.
exitedThe process ended.

A suspended agent is resumed - automatically when its workspace wakes, unless you turned that off in Settings - under the same id, in the same terminal: claude --continue, codex resume --last, opencode --continue. Gemini CLI cannot resume, and starts a new session.

Worktrees

Every agent gets its own git worktree, /workspace/wt-<agent id>, on a branch named ovn/<agent id>, cut from the workspace checkout. Two agents never edit the same files underneath each other, and each agent's changes are one branch: the workspace's Changes panel shows them per agent, with the commits it has not pushed yet.

Pushing and gh pr create work in any worktree without signing in: the workspace already has a token for its repository (GitHub App).