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:
| Agent | Version | Signs in with | Key in Settings | Resumes |
|---|---|---|---|---|
| Claude Code | 2.1.268 | Claude Pro or Max (/login) | ANTHROPIC_API_KEY | Yes |
| Codex | 0.154.0 | ChatGPT Plus or Pro (device code) | OPENAI_API_KEY | Yes |
| opencode | 1.18.30 | ChatGPT Plus or Pro (/connect) | ANTHROPIC_API_KEY | Yes |
| Gemini CLI | 0.59.0 | Google account (link and code) | GEMINI_API_KEY | No |
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:
| Agent | Auto | Ask |
|---|---|---|
| Claude Code | auto mode: each action is checked before it runs, safe ones go ahead, risky ones are refused and Claude looks for another way | asks before every write and command |
| Codex | never asks | asks when the model decides an action needs approval |
| opencode | approves what its permissions do not forbid | asks as its permission settings say |
| Gemini CLI | approves every tool call | asks 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
| Status | Meaning |
|---|---|
starting | The process is up and its screen is not recognised yet. Input waits. |
working | Thinking, running tools, writing. |
blocked | Waiting for you: a permission, a question, a sign-in code. |
idle | At its prompt, done with its turn. |
error | Its provider refused it - usually a missing or wrong key, or a usage limit. |
suspended | Stopped on purpose with its conversation kept: the workspace slept, or a question went unanswered for 6 hours. |
exited | The 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).