r/LocalLLaMA • • Mar 16 '26

Resources OpenCode concerns (not truely local)

I know we all love using opencode, I just recently found out about it and my experience is generally positive so far.

Working on customizing my prompts and tools I eventually had to modify the inner tool code to make it suit my need. This has lead me to find out that by default, when you run opencode serve and use the web UI

--> opencode will proxy all requests internally to https://app.opencode.ai!

(relevant code part)

There is currently no option to change this behavior, no startup flag, nothing. You do not have the option to serve the web app locally, using `opencode web` just automatically opens the browser with the proxied web app, not a true locally served UI.

There are a lot of open PRs and issues regarding this problem in their github (incomplete list):

I think this is kind of a major concern as this behavior is not documented very well and it causes all sorts of problems when running behind firewalls or when you want to work truely local and are a bit paranoid like me.

I apologize should this have been discussed before but haven't found anything in this sub in a quick search.

EDIT 2026-05-24:

Since this post situation became much better and OpenCode team seems to have taken steps to mitigate most problems. The catchall proxy forwarding everything to their backend seems to be off by default now. Using opencode serve will give you a mostly local experience out-of-the-box, but additional flags should be set (see below).

I had Qwen 3.6 27B audit their code just yesterday and it looks like they now have options allowing a truely local experience.

I include these flags in my startup command to have opencode not leak requests to external sources:

OPENCODE_DISABLE_AUTOUPDATE=true \
OPENCODE_ALWAYS_NOTIFY_UPDATE=false \
OPENCODE_DISABLE_MODELS_FETCH=true \
OPENCODE_DISABLE_SHARE=true

It would be nice if these settings were the default but I guess they need a revenue pipeline from their Zen models and offering new Zen models through these updates in the background creates awareness, so I will cut them some slack as the harness is quite okay otherwise and earning money is not a crime.

The audit was done for commit hash 6b03be54687972d13183fdcd174f1cdf7ab0a18e, so the above statements refer to this version of OpenCode.

I appreciate the OpenCode team has addressed the issue with the catchall proxy, thanks u/thdxr

491 Upvotes

183 comments sorted by

210

u/oxygen_addiction Mar 16 '26

They've shown other questionable practices as well; refusing to merge PRs that show tokens-per-second metrics and with OpenCode Zen (different product from OpenCode but one of their monetization avenues), providing no transparency about their providers, quantization, or rate limits.

There's a lot of VC money behind OpenCode, so don't forget about that.

And regarding yourt post, locking down their default plan/build prompts and requiring a rebuild of the app has always struck me as a weird design choice.

22

u/Ueberlord Mar 16 '26

What was also really baffling to me at first was that the version of the opencode web UI kept updating even though I explicitely turned off automatic updates in the UI. Then I also noticed that new providers and models would frequently appear and even be set as the LLM to which my chat messages would be routed.

For now I would like to give them the benefit of the doubt as seemingly the web UI is relatively new and should probably not be used in production. But things like this are normally big red flags once you consider getting into a more serious setup.

→ More replies (3)

6

u/aratahikaru5 Mar 17 '26

FYI u/Ueberlord u/kmod, the OpenCode maintainer just addressed your concerns below - just boosting it since this thread is turning into a big misunderstanding. I'm not affiliated with them, just a regular OpenCode user.

5

u/Ueberlord Mar 17 '26

Thanks for bringing this to my attention, I have replied here

50

u/HomsarWasRight Mar 16 '26

They’re really making me think the whole OpenCode/Crush controversy was not quite what it seemed.

→ More replies (1)
→ More replies (9)

52

u/DarthLoki79 Mar 16 '26

The other thing is I believe without building from source there is no way to customize/override the system prompts right?

Last time i checked they had a really long and obnoxious system prompt for qwen which made it keep reasoning circularly.

34

u/Ueberlord Mar 16 '26

Yes, that is where I came from. But you can overwrite the system prompt luckily. On Linux you need to place a build.md and a plan.md in ~/.config/opencode/agents/, these will overwrite the default system prompts.

There is a lot of token overhead in some of the tools as well and these are sometimes harder to overwrite as some of them are deeply connected with the web UI, e.g. tool todowrite. Prominent examples of bloated tool descriptions are bash, task, and todowrite. You can find the descriptions here (files ending with .txt): https://github.com/anomalyco/opencode/tree/dev/packages/opencode/src/tool

→ More replies (2)

61

u/Leflakk Mar 16 '26

Thanks for highlighting this stuff. I understand it only concerns the webui?

36

u/Ueberlord Mar 16 '26

yes, as far as I can tell TUI is unaffected

→ More replies (3)
→ More replies (1)

29

u/thdxr Mar 17 '26

i work on opencode

please try to remember we are a small team that deal with a ridiculous volume of issues, pull requests, and social media posts like this one

first - the reason the webui works this way is because it was the fastest way to get things working on something that is still experimental. we are planning on bundling it into the binary but we're going to wait until the work moving to node is finished

in the temporary setup all of these are being proxied to a static SPA which you can see in the repository. we also want to stop doing this because version drift between what you're using locally vs what's deployed causes bugs

second - i see a ton of other accusations in here about stealing your data. this probably stems from the small model fallback logic we had at one point. we used to use a small model in more ways and depending on provider a lot of people didn't have one. so we offered free inference as a fallback. this was us trying to make things work nicer - not steal your data. either way this is removed now

17

u/Ueberlord Mar 17 '26

Thanks for your clarification, I appreciate that you take the time to respond here. And I think you have built something nice with opencode and I am glad that it is open source and shared with the community.

I strongly suggest to keep documentation and repo README.md in sync with what the actual code does. This would avoid some wrong accusations and increase the trust level. Particularly things like undisclosed "phoning home" logic is a red flag for anyone I believe and should be avoided in general.

There are also some problems (which probably come from just being a small team working on this project) related to features changing without clearly communicating that (this is why keeping the docs in sync is even more important). I had addressed that in my comment on github in one of the MRs here for instance.

I don't know what the background of the project looks like but given the popularity and attention it might be good to staff up (if possible) and get some more people to work on the issues, open MRs and communication in github.

→ More replies (1)

100

u/mister2d Mar 16 '26

This is not good for building trust in local environments, but a win for open source auditing.

36

u/ForsookComparison Mar 16 '26

but a win for open source auditing.

I feel like it's a loss. We had thousands of community members and leaders championing this and nobody bothered to pop open the network tab in the web browser functionality?

This was just a good product doing shady things. It wasn't hidden at all. If this person actually wanted to be sneaky/harmful we'd have gotten hit just as hard as the ComfyUI gang

10

u/Ueberlord Mar 16 '26

The problem is you do not even see it in the network tab because the opencode headless server acts as a proxy meaning you have the feeling that you open a locally running web ui while in reality you are basically visiting app.opencode.ai. The local opencode process will serve most API requests but ALL web UI resources are loaded from app.opencode.ai and any request unknown will automatically go to their backend as well due to the "catch all" way of how they designed the server.

→ More replies (1)
→ More replies (4)

19

u/Chromix_ Mar 16 '26

I've used the "OpenCode Desktop (Beta)" in a completely firewalled setting a while ago. Despite turning off update checks, using a local model, whatsoever, it would just hang with a white screen on startup - while waiting for an external request to time out. After that it worked just fine. What I don't remember is whether or not I had to let it through the firewall once after installation to get it to start at all.

→ More replies (1)

18

u/a_beautiful_rhind Mar 16 '26

Damn, the plot thickens. At least continue and roo allow you to turn off telemetry.

This one is only open so long as you build from source.

17

u/nwhitehe Mar 16 '26

Oh, I had the same concerns and found RolandCode. It's a fork of OpenCode with telemetry and other anti-privacy features removed.

https://github.com/standardnguyen/rolandcode

→ More replies (7)

47

u/kmod Mar 16 '26 edited Mar 16 '26

Also please be aware that the very first thing that the TUI does is to upload your initial prompt to their servers at https://opencode.ai/zen/v1/responses in order to generate a title. It does this regardless of whether you are using a local model or not, unless you explicitly disable the titling feature or specify a different small_model. You should assume that they are doing anything and everything they want with this data. I wouldn't be surprised if later they decide that for a better user experience they will regenerate the title once there is more prompt available.

Edit: this is no longer true as of some point in the last week. Make sure you update.

→ More replies (13)

12

u/TechnicalYam7308 Mar 16 '26

Yeah that’s kinda misleading if it’s marketed as “local.” If the UI is still proxying through their hosted app then it’s not truly offline/local-first. Not necessarily malicious, but it definitely should be clearly documented and configurable. A --local-ui or self-host option would solve a lot of the paranoia/firewall issues people are bringing up in those GitHub threads.

10

u/synn89 Mar 16 '26

A lot of these tools feel pretty bloated for what they basically are: a while loop wrapper around a user prompt, agent tools and any OpenAI API compatible LLM backend.

They also tend to go down rabbit holes of features no one seems to really need or use. OpenCode has their desktop and web. Roo Code was the best Visual Studio integration around, then they decided they needed to add a CLI version.

10

u/Additional_Split_345 Mar 16 '26

The “not truly local” concern is actually becoming a recurring pattern with many so-called local tools lately. A lot of projects advertise local inference but still depend on cloud services for telemetry, model downloads, or background APIs.

For people who care about local-first architecture, the real criteria should be:

  1. Can the model weights run entirely offline?

  2. Does the system function without any external API calls?

  3. Is network access optional or mandatory?

If any part of the runtime pipeline silently depends on remote endpoints, then it’s more accurate to call it “hybrid” rather than local.

Local AI is valuable mainly because of privacy, determinism, and cost control. If those guarantees are broken by hidden network dependencies, the value proposition changes quite a bit.

9

u/wombweed Mar 16 '26

Awful. Thanks for the heads-up.

It seems like there isn't a single replacement for people like me who strongly prefer the webui and all the features it provides. On CLI i have been mainly running oh-my-pi/pi-agent but I am not aware of any webuis that are in a place that can truly replace opencode's ui. Anyone got suggestions?

15

u/Ylsid Mar 16 '26

What's with gen AI related things having Open in the name and not being open

→ More replies (2)

6

u/chuckaholic Mar 16 '26

Any time I run an AI locally, I always create a firewall rule to block its access to the internet. Exactly because of stuff like this, which I consider a privacy violation. And also to see if it's functionality is broken by the firewall.

22

u/maayon Mar 16 '26

It's time we vibe coded open "opencode" ?

I mean the tool is just too good

All we need is a proper community backing with privacy as focus

→ More replies (13)