[BUG] Cowork: expose execution mode (Local/Remote) as a visible per-project setting, and document what leaves the machine
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
Where this happened: Cowork tab, desktop app on macOS (Apple Silicon), project-based workflow
Summary
Cowork projects run in two different execution modes, the mode is visible only as an after-the-fact badge on the project card, and there is no setting anywhere in the Cowork UI that lets a user choose it.
What I observe
- A project I created earlier displays a
Localbadge on its card in the Projects list. - Projects created since come up remote. Nothing in the creation flow offers a choice, and nothing explains that the two behave differently.
- At least one session started inside the project that carries the
Localbadge still executed in a cloud container. So the badge does not reliably describe where the current session runs — which makes it worse than no indicator, because it reads as a guarantee. - The only candidate control is Settings → Cowork → "Only on this computer" ("Stops when the app closes or this computer sleeps"). That description matches local-execution behavior, but the setting never uses the words local, remote, cloud, or execution, and it appears in no help-center article. I could not confirm what it actually governs without turning it on and inferring from behavior.
Why this matters
I do advisory work on a client's files through a connected folder. "Where does this run, and what leaves my machine" is a question I have to be able to answer plainly — to myself and to the client. Right now the honest answer requires reverse-engineering the product's behavior, and the one indicator the UI does give me (the Local badge) is not dependable.
The Code tab already solves this exact problem: "Environment: choose where Claude runs. Select Local for your machine, Remote for Anthropic-hosted cloud sessions." Cowork has the same underlying distinction and exposes none of it.
Prior art
#76143 reported the silent switch to remote-by-default in July and asked for execution mode as a visible per-project setting. It was closed as not planned and carries a stale label; the underlying request was never addressed. I'm filing rather than commenting there because the thread is closed, and because the transparency half of this — documenting what data crosses in each mode — was not part of that report.
Requested changes
Three specific, small items:
- Surface execution mode as a per-project setting in Cowork, matching the Code tab's Environment picker (Local / Remote). Show it at project creation and in project settings, not only as a badge after the fact.
- Document "Only on this computer." If it is the local/remote control, name it as such in the UI and in the help center. If it is not, say what it does.
- State plainly what data crosses in each mode — what stays on the device, what transits Anthropic's servers, and what a connected folder does or does not upload. One paragraph in the architecture overview would settle it.
Item 1 is the one that matters most; items 2 and 3 are cheap and would have saved me the diagnosis entirely.
Environment
- Claude for Mac version: 1.46388.4 (50e62f)
- macOS: 26.6.2 (25G83)
- Apple Silicon
- Date of report: 2026-09-08
What Should Happen?
Cowork should let me choose where a project runs, and should tell me the truth about where it is running.
Concretely:
- Execution mode is a visible per-project setting — Local / Remote, shown at project creation and in project settings, matching the picker the Code tab already has ("Environment: choose where Claude runs").
- The badge on the project card reflects the actual execution location of sessions in that project. If a project is marked
Local, sessions in it run locally. If the badge can't guarantee that, it shouldn't be shown. - "Only on this computer" states what it governs. If it is the local/remote control, name it that way in the setting and document it. If it isn't, say what it does.
- The docs state plainly what crosses the network in each mode — what stays on the device, what transits Anthropic's servers, and whether a connected folder's contents are uploaded.
Today none of these hold: the mode is unchosen, the badge is unreliable, the one candidate setting is unnamed and undocumented, and the data-flow question can only be answered by inference.
Item 1 is the one that matters most; items 3 and 4 are cheap and would have saved me the diagnosis entirely.
Error Messages/Logs
Steps to Reproduce
- Open Claude for Mac → Cowork → Projects. Observe that some project cards carry a Local badge and others carry none, with nothing in the UI explaining the difference.
- Create a new project. Observe that no step in the creation flow offers a choice of execution mode, and no project setting exposes one afterward.
- Open a project that carries the Local badge, connect a folder, and start a session.
- Ask the session where it is executing. In my case it reported running in a cloud container, not on this machine — despite the project's Local badge.
- Open Settings → Cowork. Observe that the only related control is "Only on this computer," described as "Stops when the app closes or this computer sleeps." It never uses the words local, remote, cloud, or execution.
- Search the help center for "Only on this computer." No article documents it.
Claude Model
Opus
Is this a regression?
I don't know
Last Working Version
_No response_
Claude Code Version
2.1.74 (Claude Code)
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
Terminal.app (macOS)
Additional Information
_No response_
Showing cached comments. Read the full discussion on GitHub ↗
3 Comments
FOLLOW-UP COMMENT — test result, 2026-09-08
Follow-up with a test result, since the one candidate control turned out not to be one.
Setup: Settings → Cowork → "Only on this computer" toggled on.
Localbadge.Localbadge.Local, unchanged by the toggle in either direction.So "Only on this computer" is not the local/remote execution control, and there is no control anywhere in Cowork that sets it. The
Localbadge appears to be a property of when a project was created, not something a user can choose or change.This also means the badge can't be read as a statement about the current session: the project that carries it had a session running in a cloud container while the badge was displayed.
Net: a user who wants local execution has no path to it, and no reliable way to tell which mode they're in. That's the whole of the request in the original report.
Follow-up: I tested this behaviorally, and it contradicts part of my original report
In the original report I noted that the deterministic check — quit or sleep the machine and see whether execution stops — had not been run, and that I was reporting a session's self-report rather than asserting a mechanism. I've now run it. The result corrects one of my claims and sharpens the rest.
Correction
Steps to reproduce, item 4 stated that a session in a
Local-badged project reported running in a cloud container. That was the session's own account of itself. Behavioral testing contradicts it: in that project, code execution is local. The sandbox suspends when the machine sleeps, which a remote container would not do.I'm retracting that item. The badge described execution location accurately in the project I tested.
Method
Reproducible in about ten lines. Log wall-clock and the monotonic clock together, force a sleep mid-run, then compare how much monotonic time actually elapsed.
In a Cowork session:
In Terminal, immediately after starting it:
Wake the machine after ~2 minutes and read the log. Expect the tool call to hit its timeout if execution is local — the suspension pushes total wall time past the limit. The log on disk is the evidence, not the tool call's return value.
The discriminator: compare wall-clock elapsed against
/proc/uptimeaccrued.Cross-check the deficit against
pmset -g log | grep -E "Entering Sleep|Wake from".Results
Two projects, same machine, same evening.
macOS26.6.2, Apple Silicon, Claude for Mac 1.46388.4.| Run | Project state |
pmsetsleep | Wall-clock jump in loop | Missing/proc/uptime| Verdict ||---|---|---|---|---|---|
| A | conversation-level "Only on this computer" ON | (outside the
tail -4window I captured) | 73 s | 70.9 s | local || B | intermediate run | 38 s | 38.6 s | ~35 s | local |
| C | project carrying the
Localbadge | 91 s | 91 s | 88.4 s | local |Run C in detail — entries 7 and 8, straddling the sleep:
Wall clock advanced 91 s. The monotonic clock advanced 2.00 s — exactly one
sleep 2. Every other interval in the run ticked at a clean 2.00–2.01 s on both clocks, so this is one discrete freeze, not a general slowdown.pmsetindependently logs a 91-second sleep in that window.Three clocks agreeing on the same interval. The sandbox is a VM on the local machine and it suspends with the host.
Why the session's self-report was wrong, and why that's worth fixing
A local sandbox presents a cloud-shaped interior: Linux
aarch64,/sessions/...paths, NVMe block devices, acoworkdcgroup, no network interface at all with egress through an allowlist proxy. Asked where it is running, a session reads those signals and answers "a cloud container" — confidently, and wrongly.I made that inference myself before running the test, from the same evidence.
So there are two distinct problems, and only one of them is the badge:
The second one is arguably worse, because a wrong badge is at least checkable against documentation, whereas a wrong self-report arrives with the model's apparent authority behind it. My original report existed because of it.
Revised asks
1. Execution mode as a visible per-project setting — unchanged, and still the main request. There is still no user control; mode appears to be a property of when a project was created. The Code tab already solves this ("Environment: choose where Claude runs. Select Local for your machine, Remote for
Anthropic-hosted cloud sessions").2. Verify the badge against behavior rather than remove it. Softened from the original. In the project I tested the badge was accurate. One project on one evening isn't proof it's reliable everywhere — particularly across the migration to cloud-by-default — but I can no longer say it's false, and I'm not going to assert more than I measured.
3. Document what crosses the network in each mode. This is now the primary ask.
Local execution does not mean local data, and nothing in the product distinguishes them. Even with execution confirmed on-device:
Anthropic's servers regardless of mode;mountoutput, not something the docs state.A user asking "what leaves my machine" cannot answer it from the interface today, and the answer they'd guess from a
Localbadge is wrong in an important way. One paragraph in the help center resolves it.4. There are three separate control surfaces using three vocabularies, and none says local, remote, cloud, or execution:
Localbadge;Consistent naming across those three would prevent most of this.
Incidental finding
While diagnosing why a clamshell close wasn't sleeping the machine,
pmset -g assertionsshowed:The app had held a no-idle-sleep assertion for over seven hours. It's user-toggleable and I've since turned it off. Worth noting only because it interacts with the "Stops when … this computer sleeps" wording: a machine held awake by the app won't reach the state that stops the session.
Modal Text
I don't have the modal text from the dialog box shown today announcing cloud execution. This abrupt modal message began the hours of my investigation.
Beyond usability: a persistent affirmative indicator that misstates where processing occurs is a disclosure problem, not only a UX one. Users make data-handling decisions -- including decisions they've represented to their own clients -- in reliance on that badge. Documentation elsewhere doesn't cure a prominent on-screen claim that contradicts it. Provide a reliable badge and consistent, coherent framework.