Claude Cloud Added in 0.9.7
A Claude Cloud chat runs Claude Code in a sandbox at Anthropic instead of on your relay host. The sandbox works on its own clone of a GitHub repository. It sees what is pushed to GitHub and nothing on your machine, and its results come back as branches the agent pushes. The chat is billed to the Claude account the relay host's Claude CLI is logged in to.
In OAR it is a conversation like the others: the reply streams in, questions arrive as cards, and it works from your phone.
Experimental, and off by default
Claude Cloud uses the login the Claude CLI keeps on the relay host to call API endpoints that the Claude CLI itself uses. These endpoints are not a documented public API. Anthropic can change them without notice; cloud chats and the live usage figures then fail with a note until OAR is updated. If you are not comfortable with a program other than the CLI using its login this way, leave the provider off.
What it needs #
- The Claude CLI on the relay host, logged in with a claude.ai account
(Settings → Providers → Claude → Relogin, or run
claudeon the host). The same login serves Claude chats. - GitHub connected to that Claude account: claude.ai/connect-github.
- The Claude GitHub app allowed on every repository a cloud chat should work on (GitHub → Settings → Applications → Claude → Configure).
- An environment on the Claude account. An account without one gets its default one when you open claude.ai/code once.
Switching it on #
Open Settings → Providers → Claude Cloud.
| Control | Default | What it does |
|---|---|---|
| Enable Claude Cloud for New Chat | off | Offers Claude Cloud in New Chat and turns on the live account figures in Check Usage. It is refused while the host has no Claude login. |
| Claude login | Jumps to the Claude tab, where the login is changed. | |
| Cloud environment | the account's first active environment | The environment new cloud sessions run in. With none saved, the relay takes the first active one and saves it. |
| Default model | claude- |
The model a new cloud chat starts with. The list is the Claude provider's models without their [1m] variants, plus the default. |
| Save Claude Cloud settings | Saves the environment and the default model. The switch takes effect at once. |
The tab also shows the account the chats are billed to, and where the relay reads the login from and until when it is valid.
Switching the provider on is your consent to the use of the Claude login described above:
- The relay and its cloud workers only read the access token. It is sent to
https://and to no other host.api. anthropic. com - It is held in memory only. It is not written to the database or to a log, not sent to the browser and not put into an error message.
- OAR never refreshes it and never uses the refresh token. The CLI keeps its own login fresh. When the token has run out, the relay reads the file again and, at most once in five minutes, has the CLI check its own login. A login that is still expired ends the turn with a note to log in again.
- While the switch is off, the relay asks Anthropic for nothing with this login: it lists no environments and reads no account usage.
Switching Claude Cloud off takes it out of New Chat. Cloud conversations that already exist keep working.
Starting a cloud chat #
Choose + New Chat → Provider → Claude Cloud. The Working directory stays, but here it only fills in two fields, which you can also pick from a list or type yourself. There is no reasoning effort to choose. The cloud session itself is created by your first message. The dialog is described in Starting a conversation.
Repository #
Read from the folder's origin remote, or the remote of its upstream branch.
With the field focused, OAR lists the repositories the Claude GitHub app can
reach for the account. The list is read from Anthropic and kept for a minute;
↻ next to the label reads it again. If it cannot be read, the reason is
shown under the repositories used before. Repositories used in earlier cloud
chats on this relay come first and are marked "used here"; other marks are
"private", "public", "archived" and "no access". Typing filters the list by
owner/; the arrow keys and Enter pick, Escape closes it.
You can also type or paste owner/ or a GitHub URL, https or ssh. Only
GitHub repositories are accepted.
Branch #
The folder's current branch; a repository picked from the list brings its
default branch. With the field focused, OAR offers the repository's branches as
the relay host's git sees them (git ls-, with the host's own GitHub
login). When the host cannot read them, the field is a plain text field. Leave
it empty for the repository's default branch.
Warnings #
Under the fields OAR warns about what the cloud clone will not have:
| Warning | Meaning |
|---|---|
1 commit not pushed — the cloud clone will not have it. |
The folder's branch is ahead of its upstream. Shown with a count for several commits. |
Branch main has no upstream — push it first, the cloud clone only sees Git |
The branch was never pushed. |
Uncommitted changes stay local. |
The folder has changes that are not committed. |
This folder is not a git repository — enter the repository by hand. |
The folder gave nothing to fill in. |
No Git |
Shown as The remote of this folder is not on Git when there is a remote, but not a GitHub one. |
Could not read git details for this folder — enter the repository by hand. |
The relay could not read the folder. |
The Claude Git |
The cloud would refuse the first message. |
No cloud environment is set — choose one in Settings → Providers → Claude Cloud. |
Choose an environment in the settings. |
The first two warnings only appear while the fields still name the folder's own repository and branch.
If Start chat is refused, an error line under the fields says why: for
example Enter a Git, Not a Git, Not a valid branch name., Claude Cloud is not enabled on this relay, or No cloud environment is set. with the advice to pick one
in the settings.
Working in a cloud chat #
The reply streams in as the agent writes it, with thoughts, tool activity and
subagent bubbles. While the sandbox starts, the tool activity shows its steps
as lines starting with Cloud:, then Claude Code running in the cloud with
the model.
- The cloud line. Above the composer: the repository, the branch, a claude.ai ↗ link to the session, one ⇡ branch link per branch the agent pushed (the newest 20), and what the session has cost so far as Anthropic reports it. A pushed branch opens GitHub's comparison with the branch the chat started from (the branch itself, when the agent pushed to it).
- Open on claude.ai. ☁️ Open on claude.ai in the chat's
⋯menu opens the session on claude.ai, once the session exists. - Questions. The agent's questions (
Ask) arrive as question cards, multi-select included. A tool that asks for permission gets an Allow / Deny card. A card you answer on claude.ai closes in OAR.User Question - Stop. Stop interrupts the cloud turn. If the cloud does not confirm within 30 seconds, the turn ends in OAR with a note that the agent may still be working there, with the link to the session.
- Images. JPEG, PNG, GIF or WebP, up to 5 MB each, sent inline. Other attachments are refused: the sandbox cannot read the relay host's files.
- Follow-ups. A message goes into the same cloud session, also after it has been idle for a long time. A message sent during a turn waits for the turn to end.
- Changing the model. The model can be changed between turns in the composer, as in a local Claude chat. The sandbox switches before the next message.
- Commit attribution. Commits and pull requests the agent makes in the
sandbox end with the lines the Claude tab's attribution setting says; see
Commit attribution. The commit's
author is still the sandbox's git identity (
Claude). - Background work. A turn stays open while the agent's background work (a subagent, a long command) runs, so the closing reply arrives in the same turn.
- Turns the session starts by itself. When the agent's background work outlives the turn, or when you send a message on claude.ai, the answer appears in the chat as a continuation reply, with a line saying where it came from.
- Archiving and deleting. Archiving or deleting the conversation archives the cloud session at Anthropic; unarchiving brings it back. Nothing is deleted there.
When the browser or the relay is away #
The agent keeps working in the cloud. A restart of the relay or of the conversation's worker in the middle of a turn does not send your message twice: the new worker finds the turn in the session's event log and follows it, and a turn that finished in the meantime is answered from the log. A dropped connection to the session is reopened where it broke off. See Restarts and resume for the same in general.
At the usage limit #
A turn the cloud refuses at the Claude usage limit is paused like a local
Claude turn: a note with the reset time, the banner, and the work carries on by
itself after the reset. See
When a usage limit is reached. The warning
before the limit is a line in the tool activity, Claude usage limit warning (..., not a banner.
What a cloud chat does not have #
Nothing from the relay host reaches the sandbox.
- Relay tools. No
preview, norelay_, and no media embedded by host path. See By provider.tool - Folders. No working directory to change (Change CWD is missing from
the
⋯menu) and no Session folder to browse. - Relay modes. No relay modes, no reasoning effort and no context size: the three selectors are hidden.
- Steering and tasks. No mid-turn steering and no background task panel.
- Attachments. Only images.
Usage #
With Claude Cloud on, Check Usage has a Claude Cloud card:
- a meter per dollar credit the account holds, with what is used, what is left and when it expires;
- Cloud spend (OAR sessions): the cost Anthropic reports for the cloud sessions this relay still has, with this conversation's own cost when you open the modal from a cloud chat;
- the latest cloud session report: its cost, and cost and tokens by model.
These figures are Anthropic's reported cost, not a billing statement, and sessions started elsewhere are not counted. A credit that is offered but not yet claimed is mentioned with a link to claude.ai. Cloud turns spend the cloud credit first; without a credit they count against the Claude limits.
The Claude card in Check Usage also reads its limits live from the account while Claude Cloud is on. The 🧠 button shows how much of the session's context window is used, without categories. No usage line is attached to the replies.
Starting a cloud session from an agent #
An agent can start a cloud chat with create_, using
provider: "claude-, a repo and optionally a branch; see
create_session. It
works for an agent on a paired relay (under the rules for starting any session
from there) and for an agent on this relay once
agent sessions are switched on. The
same checks apply as in New Chat: the provider is on, an environment is
set, the repository is on GitHub. A chat without a requested model starts with
the tab's default model. An agent can also read, prompt, wait for and stop a
cloud chat you created.
Environment variables #
| Name | What it does |
|---|---|
CLAUDE_ |
A Claude login token used instead of the CLI's credentials file, by the relay and by its cloud workers. Added in 0.9.17 Only Claude Cloud and Claude workers get it, with or without tmux; under tmux it goes through a file only the relay's user can read, which the worker's shell reads once and deletes. |
CLAUDE_ |
The Claude configuration directory, instead of ~/.. The CLI's login (.) is read from it. |
OAR_ |
Set to off on the relay host to stop the branch list in New Chat from asking git. The branch field is then a plain text field. |
If it does not work #
If Claude Cloud is missing from New Chat, enable it in Settings → Providers → Claude Cloud.
When a failure has a known cause, the reply is a system note that says what happened and what to do. Then send the message again.
| What you see | Why, and what to do |
|---|---|
The switch is refused: Claude Cloud needs the Claude CLI login on this host. Log in on Settings → Providers → Claude, then switch it on. |
Log in on the Claude tab first. |
Claude Cloud needs the Claude login of this relay host, and there is none. |
Log in on Settings → Providers → Claude. |
The Claude login of this relay host has expired. |
Log in again on Settings → Providers → Claude. The API refusing the login gives the same note. |
Git |
Connect it at claude.ai/connect-github. |
The Claude Git |
Add the repository to the app's repository access (GitHub → Settings → Applications → Claude → Configure). |
The cloud environment of this conversation is missing. |
Choose an environment in Settings → Providers → Claude Cloud. If the list is empty, open claude.ai/code once with this account. |
Claude Cloud refused the request because of a rate limit. |
Wait a little. If the cloud names a wait, the note says Wait about N s. |
The cloud session of this conversation was not found. |
It may have been deleted on claude.ai, or the relay host is logged in to another Claude account. Start a new Claude Cloud chat. |
Claude Cloud takes images only, sent inline (JPEG, PNG, GIF or Web |
Remove the attachment, or put what the agent needs into the repository or the message. The message was not sent. |
the Claude Cloud turn failed (... |
A failure the relay cannot name, for example after Anthropic changed its interface. Retry or send a new message; if it keeps failing, update OAR. |
The environment list says Could not list the cloud environments: ... |
The relay could not read the list from Anthropic. The saved environment stays selectable. |
A connection problem that may pass does not fail the turn: the message goes back into the queue and is delivered again.