OpenCode is not private by default? #7458

Open
opened 2026-02-16 18:07:14 -05:00 by yindo · 32 comments
Owner

Originally created by @MatthewCroughan on GitHub (Jan 24, 2026).

Originally assigned to: @thdxr on GitHub.

Question

@thdxr I have noticed that the titles of sessions is computed outside of my network and my own locally hosted LLMs. I noticed this because I have nftables rules that block access to outbound IPs, and this feature of naming the session only works when I disable nftables. What is going on with that, and why is opencode not operating private by default?

Originally created by @MatthewCroughan on GitHub (Jan 24, 2026). Originally assigned to: @thdxr on GitHub. ### Question @thdxr I have noticed that the titles of sessions is computed outside of my network and my own locally hosted LLMs. I noticed this because I have nftables rules that block access to outbound IPs, and this feature of naming the session only works when I disable nftables. What is going on with that, and why is opencode not operating private by default?
Author
Owner

@MatthewCroughan commented on GitHub (Jan 24, 2026):

Related to https://github.com/anomalyco/opencode/issues/459

@MatthewCroughan commented on GitHub (Jan 24, 2026): Related to https://github.com/anomalyco/opencode/issues/459
Author
Owner

@rekram1-node commented on GitHub (Jan 24, 2026):

@MatthewCroughan can u share opencode debug config

@rekram1-node commented on GitHub (Jan 24, 2026): @MatthewCroughan can u share `opencode debug config`
Author
Owner

@MatthewCroughan commented on GitHub (Jan 24, 2026):

@rekram1-node

{
  "agent": {},
  "mode": {},
  "plugin": [],
  "command": {},
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "ollama": {
      "name": "Ollama",
      "npm": "@ai-sdk/openai-compatible",
      "models": {
        "gpt-oss:120b": {
          "name": "gpt-oss:120b"
        }
      },
      "options": {
        "baseURL": "http://192.168.5.161:11434/v1"
      }
    }
  },
  "username": "test",
  "keybinds": {
    "leader": "ctrl+x",
    "app_exit": "ctrl+c,ctrl+d,<leader>q",
    "editor_open": "<leader>e",
    "theme_list": "<leader>t",
    "sidebar_toggle": "<leader>b",
    "scrollbar_toggle": "none",
    "username_toggle": "none",
    "status_view": "<leader>s",
    "session_export": "<leader>x",
    "session_new": "<leader>n",
    "session_list": "<leader>l",
    "session_timeline": "<leader>g",
    "session_fork": "none",
    "session_rename": "ctrl+r",
    "session_delete": "ctrl+d",
    "stash_delete": "ctrl+d",
    "model_provider_list": "ctrl+a",
    "model_favorite_toggle": "ctrl+f",
    "session_share": "none",
    "session_unshare": "none",
    "session_interrupt": "escape",
    "session_compact": "<leader>c",
    "messages_page_up": "pageup",
    "messages_page_down": "pagedown",
    "messages_half_page_up": "ctrl+alt+u",
    "messages_half_page_down": "ctrl+alt+d",
    "messages_first": "ctrl+g,home",
    "messages_last": "ctrl+alt+g,end",
    "messages_next": "none",
    "messages_previous": "none",
    "messages_last_user": "none",
    "messages_copy": "<leader>y",
    "messages_undo": "<leader>u",
    "messages_redo": "<leader>r",
    "messages_toggle_conceal": "<leader>h",
    "tool_details": "none",
    "model_list": "<leader>m",
    "model_cycle_recent": "f2",
    "model_cycle_recent_reverse": "shift+f2",
    "model_cycle_favorite": "none",
    "model_cycle_favorite_reverse": "none",
    "command_list": "ctrl+p",
    "agent_list": "<leader>a",
    "agent_cycle": "tab",
    "agent_cycle_reverse": "shift+tab",
    "variant_cycle": "ctrl+t",
    "input_clear": "ctrl+c",
    "input_paste": "ctrl+v",
    "input_submit": "return",
    "input_newline": "shift+return,ctrl+return,alt+return,ctrl+j",
    "input_move_left": "left,ctrl+b",
    "input_move_right": "right,ctrl+f",
    "input_move_up": "up",
    "input_move_down": "down",
    "input_select_left": "shift+left",
    "input_select_right": "shift+right",
    "input_select_up": "shift+up",
    "input_select_down": "shift+down",
    "input_line_home": "ctrl+a",
    "input_line_end": "ctrl+e",
    "input_select_line_home": "ctrl+shift+a",
    "input_select_line_end": "ctrl+shift+e",
    "input_visual_line_home": "alt+a",
    "input_visual_line_end": "alt+e",
    "input_select_visual_line_home": "alt+shift+a",
    "input_select_visual_line_end": "alt+shift+e",
    "input_buffer_home": "home",
    "input_buffer_end": "end",
    "input_select_buffer_home": "shift+home",
    "input_select_buffer_end": "shift+end",
    "input_delete_line": "ctrl+shift+d",
    "input_delete_to_line_end": "ctrl+k",
    "input_delete_to_line_start": "ctrl+u",
    "input_backspace": "backspace,shift+backspace",
    "input_delete": "ctrl+d,delete,shift+delete",
    "input_undo": "ctrl+-,super+z",
    "input_redo": "ctrl+.,super+shift+z",
    "input_word_forward": "alt+f,alt+right,ctrl+right",
    "input_word_backward": "alt+b,alt+left,ctrl+left",
    "input_select_word_forward": "alt+shift+f,alt+shift+right",
    "input_select_word_backward": "alt+shift+b,alt+shift+left",
    "input_delete_word_forward": "alt+d,alt+delete,ctrl+delete",
    "input_delete_word_backward": "ctrl+w,ctrl+backspace,alt+backspace",
    "history_previous": "up",
    "history_next": "down",
    "session_child_cycle": "<leader>right",
    "session_child_cycle_reverse": "<leader>left",
    "session_parent": "<leader>up",
    "terminal_suspend": "ctrl+z",
    "terminal_title_toggle": "none",
    "tips_toggle": "<leader>h"
  }
}
@MatthewCroughan commented on GitHub (Jan 24, 2026): @rekram1-node ``` { "agent": {}, "mode": {}, "plugin": [], "command": {}, "$schema": "https://opencode.ai/config.json", "provider": { "ollama": { "name": "Ollama", "npm": "@ai-sdk/openai-compatible", "models": { "gpt-oss:120b": { "name": "gpt-oss:120b" } }, "options": { "baseURL": "http://192.168.5.161:11434/v1" } } }, "username": "test", "keybinds": { "leader": "ctrl+x", "app_exit": "ctrl+c,ctrl+d,<leader>q", "editor_open": "<leader>e", "theme_list": "<leader>t", "sidebar_toggle": "<leader>b", "scrollbar_toggle": "none", "username_toggle": "none", "status_view": "<leader>s", "session_export": "<leader>x", "session_new": "<leader>n", "session_list": "<leader>l", "session_timeline": "<leader>g", "session_fork": "none", "session_rename": "ctrl+r", "session_delete": "ctrl+d", "stash_delete": "ctrl+d", "model_provider_list": "ctrl+a", "model_favorite_toggle": "ctrl+f", "session_share": "none", "session_unshare": "none", "session_interrupt": "escape", "session_compact": "<leader>c", "messages_page_up": "pageup", "messages_page_down": "pagedown", "messages_half_page_up": "ctrl+alt+u", "messages_half_page_down": "ctrl+alt+d", "messages_first": "ctrl+g,home", "messages_last": "ctrl+alt+g,end", "messages_next": "none", "messages_previous": "none", "messages_last_user": "none", "messages_copy": "<leader>y", "messages_undo": "<leader>u", "messages_redo": "<leader>r", "messages_toggle_conceal": "<leader>h", "tool_details": "none", "model_list": "<leader>m", "model_cycle_recent": "f2", "model_cycle_recent_reverse": "shift+f2", "model_cycle_favorite": "none", "model_cycle_favorite_reverse": "none", "command_list": "ctrl+p", "agent_list": "<leader>a", "agent_cycle": "tab", "agent_cycle_reverse": "shift+tab", "variant_cycle": "ctrl+t", "input_clear": "ctrl+c", "input_paste": "ctrl+v", "input_submit": "return", "input_newline": "shift+return,ctrl+return,alt+return,ctrl+j", "input_move_left": "left,ctrl+b", "input_move_right": "right,ctrl+f", "input_move_up": "up", "input_move_down": "down", "input_select_left": "shift+left", "input_select_right": "shift+right", "input_select_up": "shift+up", "input_select_down": "shift+down", "input_line_home": "ctrl+a", "input_line_end": "ctrl+e", "input_select_line_home": "ctrl+shift+a", "input_select_line_end": "ctrl+shift+e", "input_visual_line_home": "alt+a", "input_visual_line_end": "alt+e", "input_select_visual_line_home": "alt+shift+a", "input_select_visual_line_end": "alt+shift+e", "input_buffer_home": "home", "input_buffer_end": "end", "input_select_buffer_home": "shift+home", "input_select_buffer_end": "shift+end", "input_delete_line": "ctrl+shift+d", "input_delete_to_line_end": "ctrl+k", "input_delete_to_line_start": "ctrl+u", "input_backspace": "backspace,shift+backspace", "input_delete": "ctrl+d,delete,shift+delete", "input_undo": "ctrl+-,super+z", "input_redo": "ctrl+.,super+shift+z", "input_word_forward": "alt+f,alt+right,ctrl+right", "input_word_backward": "alt+b,alt+left,ctrl+left", "input_select_word_forward": "alt+shift+f,alt+shift+right", "input_select_word_backward": "alt+shift+b,alt+shift+left", "input_delete_word_forward": "alt+d,alt+delete,ctrl+delete", "input_delete_word_backward": "ctrl+w,ctrl+backspace,alt+backspace", "history_previous": "up", "history_next": "down", "session_child_cycle": "<leader>right", "session_child_cycle_reverse": "<leader>left", "session_parent": "<leader>up", "terminal_suspend": "ctrl+z", "terminal_title_toggle": "none", "tips_toggle": "<leader>h" } } ```
Author
Owner

@MatthewCroughan commented on GitHub (Jan 24, 2026):

I had simply followed https://docs.ollama.com/integrations/opencode and wrote the following ~/.opencode/opencode.json

{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "ollama": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "Ollama",
      "options": {
        "baseURL": "http://192.168.5.151:11434/v1"
      },
      "models": {
        "gpt-oss:120b": {
          "name": "gpt-oss:120b"
        }
      }
    }
  }
}
@MatthewCroughan commented on GitHub (Jan 24, 2026): I had simply followed https://docs.ollama.com/integrations/opencode and wrote the following `~/.opencode/opencode.json` ``` { "$schema": "https://opencode.ai/config.json", "provider": { "ollama": { "npm": "@ai-sdk/openai-compatible", "name": "Ollama", "options": { "baseURL": "http://192.168.5.151:11434/v1" }, "models": { "gpt-oss:120b": { "name": "gpt-oss:120b" } } } } } ```
Author
Owner

@github-actions[bot] commented on GitHub (Jan 24, 2026):

This issue might be a duplicate of existing issues. Please check:

  • #8609: Misleading documentation about small_model
  • #5554: Disable Telemetry
  • #459: Privacy and Data Collection Clarification Request
  • #7298: Feature Request for customizing session title language
  • #2836: Zero-retention model boolean feature flag

Feel free to ignore if none of these address your specific case.

@github-actions[bot] commented on GitHub (Jan 24, 2026): This issue might be a duplicate of existing issues. Please check: - #8609: Misleading documentation about small_model - #5554: Disable Telemetry - #459: Privacy and Data Collection Clarification Request - #7298: Feature Request for customizing session title language - #2836: Zero-retention model boolean feature flag Feel free to ignore if none of these address your specific case.
Author
Owner

@MatthewCroughan commented on GitHub (Jan 24, 2026):

Yes, the Github bot does point to relevant issues, this is concerning and is absolutely a privacy concern. This sucks, especially when you read https://github.com/anomalyco/opencode/issues/459#issuecomment-3013209863, it comes across as misleading, if not an outright lie. Why would you claim that it's only communicating with your own LLM, when it clearly is sending data to another internet connected model on the side?

@MatthewCroughan commented on GitHub (Jan 24, 2026): Yes, the Github bot does point to relevant issues, this is concerning and is absolutely a privacy concern. This sucks, especially when you read https://github.com/anomalyco/opencode/issues/459#issuecomment-3013209863, it comes across as misleading, if not an outright lie. Why would you claim that it's only communicating with your own LLM, when it clearly is sending data to another internet connected model on the side?
Author
Owner

@rekram1-node commented on GitHub (Jan 24, 2026):

Here is the exact logic:
https://github.com/anomalyco/opencode/blob/32e6bcae3ba50d0c453c0de7d2e103830dd69a3f/packages/opencode/src/provider/provider.ts#L1128

You can get around this by adding:
"disabled_providers": ["opencode"],

OR "small_model": "ollama/gpt-oss:120b"

What is happening:

  • you have no whitelisted cheap model available
  • we are falling back to running title gen using gpt-5-nano on zen provider (NO telemetry collected)

Removing this behavior makes people upset (why am I being billed for model X, why is it using model Y, etc etc)

Luckily this is entirely configurable on your side to resolve.

And note that referenced comment is accurate, there is no telemetry

@rekram1-node commented on GitHub (Jan 24, 2026): Here is the exact logic: https://github.com/anomalyco/opencode/blob/32e6bcae3ba50d0c453c0de7d2e103830dd69a3f/packages/opencode/src/provider/provider.ts#L1128 You can get around this by adding: ` "disabled_providers": ["opencode"],` OR `"small_model": "ollama/gpt-oss:120b"` What is happening: - you have no whitelisted cheap model available - we are falling back to running title gen using gpt-5-nano on zen provider (NO telemetry collected) Removing this behavior makes people upset (why am I being billed for model X, why is it using model Y, etc etc) Luckily this is entirely configurable on your side to resolve. And note that referenced comment is accurate, there is no telemetry
Author
Owner

@MatthewCroughan commented on GitHub (Jan 24, 2026):

Luckily this is entirely configurable on your side to resolve.

The issue title is that there OpenCode is not private by default, which is still an issue regardless of the configurability you described. There is also the issue of the the lack of care taken with communicating how OpenCode works with your data.

If it's not private by default, why try to reassure people that it is like in https://github.com/anomalyco/opencode/issues/459#issuecomment-3013209863? Do you know how your own codebase is operating, or do you not take the care needed to assure that data is not sent abroad?

Removing this behavior makes people upset (why am I being billed for model X, why is it using model Y, etc etc)

The use case where you send data to third parties and providers is entirely separate from the use case where the model is running locally. It is not acceptable to somehow blend them together into a mush where some things are running locally and some things aren't, it's a violation of trust.

@MatthewCroughan commented on GitHub (Jan 24, 2026): > Luckily this is entirely configurable on your side to resolve. The issue title is that there OpenCode is not private by default, which is still an issue regardless of the configurability you described. There is also the issue of the the lack of care taken with communicating how OpenCode works with your data. If it's not private by default, why try to reassure people that it is like in https://github.com/anomalyco/opencode/issues/459#issuecomment-3013209863? Do you know how your own codebase is operating, or do you not take the care needed to assure that data is not sent abroad? > Removing this behavior makes people upset (why am I being billed for model X, why is it using model Y, etc etc) The use case where you send data to third parties and providers is entirely separate from the use case where the model is running locally. It is not acceptable to somehow blend them together into a mush where some things are running locally and some things aren't, it's a violation of trust.
Author
Owner

@smola commented on GitHub (Jan 24, 2026):

This behavior, as well as "disabled_providers": ["opencode"] should probably be documented at https://opencode.ai/docs/enterprise/#data-handling
This page suggests data is not being sent to LLM providers other than the ones setup by the user, but as this issue shows, it's not always the case. So "disabled_providers": ["opencode"] is likely to be a prerequisite for most enterprise users.

@smola commented on GitHub (Jan 24, 2026): This behavior, as well as `"disabled_providers": ["opencode"]` should probably be documented at https://opencode.ai/docs/enterprise/#data-handling This page suggests data is not being sent to LLM providers other than the ones setup by the user, but as this issue shows, it's not always the case. So `"disabled_providers": ["opencode"]` is likely to be a prerequisite for most enterprise users.
Author
Owner

@MatthewCroughan commented on GitHub (Jan 24, 2026):

My complaint is about defaults and who this tool is designed for. If it is not private by default, then it is not designed for people running models locally, and this tool should be added to a list of tools to avoid if you value your personal data privacy. The words "enterprise", "billing" and "provider" are business and corporate terms that are completely alien to anyone trying to run this stuff locally, i.e regular people.

@MatthewCroughan commented on GitHub (Jan 24, 2026): My complaint is about defaults and who this tool is designed for. If it is not private by default, then it is not designed for people running models locally, and this tool should be added to a list of tools to avoid if you value your personal data privacy. The words "enterprise", "billing" and "provider" are business and corporate terms that are completely alien to anyone trying to run this stuff locally, i.e regular people.
Author
Owner

@MatthewCroughan commented on GitHub (Jan 24, 2026):

FWIW, I don't want to come across as entitled, it's just not designed for me (and others like me) if the defaults are not privacy first.

@MatthewCroughan commented on GitHub (Jan 24, 2026): FWIW, I don't want to come across as entitled, it's just not designed for me (and others like me) if the defaults are not privacy first.
Author
Owner

@MatthewCroughan commented on GitHub (Jan 24, 2026):

Does the "Optional" /share feature mean that opencode is just hoovering up all data by default?

If so, it's another example of why it should be added to a list of things to avoid.

Who wants to go around disabling features all day just to get some basic privacy?

@MatthewCroughan commented on GitHub (Jan 24, 2026): Does the ***"Optional"*** `/share` feature mean that opencode is just hoovering up all data by default? If so, it's another example of why it should be added to a list of things to avoid. Who wants to go around disabling features all day just to get some basic privacy?
Author
Owner

@MatthewCroughan commented on GitHub (Jan 27, 2026):

When a version update is done, and we open opencode, we see the following

INFO  2026-01-27T14:54:57 +134ms service=default version=1.1.30 args=["--print-logs"] opencode
INFO  2026-01-27T14:54:57 +1ms service=config path=/home/virus/.config/opencode/config.json loading
INFO  2026-01-27T14:54:57 +0ms service=config path=/home/virus/.config/opencode/opencode.json loading
INFO  2026-01-27T14:54:57 +2ms service=config path=/home/virus/.config/opencode/opencode.jsonc loading

But then, the TUI is permanently black. This resolves itself if network access is granted to the program.

Any ideas what nasty stuff is happening?

@smola

@MatthewCroughan commented on GitHub (Jan 27, 2026): When a version update is done, and we open `opencode`, we see the following ``` INFO 2026-01-27T14:54:57 +134ms service=default version=1.1.30 args=["--print-logs"] opencode INFO 2026-01-27T14:54:57 +1ms service=config path=/home/virus/.config/opencode/config.json loading INFO 2026-01-27T14:54:57 +0ms service=config path=/home/virus/.config/opencode/opencode.json loading INFO 2026-01-27T14:54:57 +2ms service=config path=/home/virus/.config/opencode/opencode.jsonc loading ``` But then, the TUI is permanently black. This resolves itself if network access is granted to the program. Any ideas what nasty stuff is happening? @smola
Author
Owner

@MatthewCroughan commented on GitHub (Jan 27, 2026):

Even after removing all the state that opencode creates, I am unable to open the opencode program.

rm -rf /home/virus/.opencode/node_modules/ /home/virus/.opencode/.gitignore /home/virus/.opencode/config.json /home/virus/.opencode/bun.lock ~/.local/share/opencode/ ~/.cache/opencode/ ~/.local/state/opencode ~/.config/opencode/ ~/.opencode/

It appears that for opencode to open for the first time, it must be connected to the internet.

@MatthewCroughan commented on GitHub (Jan 27, 2026): Even after removing all the state that opencode creates, I am unable to open the opencode program. `rm -rf /home/virus/.opencode/node_modules/ /home/virus/.opencode/.gitignore /home/virus/.opencode/config.json /home/virus/.opencode/bun.lock ~/.local/share/opencode/ ~/.cache/opencode/ ~/.local/state/opencode ~/.config/opencode/ ~/.opencode/` It appears that for opencode to open for the first time, it must be connected to the internet.
Author
Owner

@podliy16 commented on GitHub (Jan 27, 2026):

@MatthewCroughan OPENCODE_DISABLE_MODELS_FETCH=true opencode

Try this

https://github.com/anomalyco/opencode/blob/712d2b7d15269a4d4bc7ef0829cc1014cd81c4b3/packages/opencode/src/provider/models.ts#L87

Opencode loads all known models from external site at launch, you can disable it with this env.

@podliy16 commented on GitHub (Jan 27, 2026): @MatthewCroughan `OPENCODE_DISABLE_MODELS_FETCH=true opencode` Try this https://github.com/anomalyco/opencode/blob/712d2b7d15269a4d4bc7ef0829cc1014cd81c4b3/packages/opencode/src/provider/models.ts#L87 Opencode loads all known models from external site at launch, you can disable it with this env.
Author
Owner

@MatthewCroughan commented on GitHub (Jan 27, 2026):

@podliy16 No, this doesn't seem to change anything. I think what it wants to do is run a bunch of bun commands and download more stuff from the internet. I'm using it in Nix, and it appears that it wasn't possible to fully package it, so it does this "downloading more" stuff at runtime.

@delafthi
@graham33

@MatthewCroughan commented on GitHub (Jan 27, 2026): @podliy16 No, this doesn't seem to change anything. I think what it wants to do is run a bunch of `bun` commands and download more stuff from the internet. I'm using it in Nix, and it appears that it wasn't possible to fully package it, so it does this "downloading more" stuff at runtime. @delafthi @graham33
Author
Owner

@MatthewCroughan commented on GitHub (Jan 27, 2026):

Yes, it appears that it is trying to run a series of bun commands on first boot

opencode run "test" --log-level DEBUG --print-logs 
INFO  2026-01-27T15:44:04 +159ms service=default version=1.1.30 args=["run","test","--log-level","DEBUG","--print-logs"] opencode
INFO  2026-01-27T15:44:04 +1ms service=default directory=/home/virus/p creating instance
INFO  2026-01-27T15:44:04 +0ms service=project directory=/home/virus/p fromDirectory
INFO  2026-01-27T15:44:04 +15ms service=default directory=/home/virus/p bootstrapping
INFO  2026-01-27T15:44:04 +4ms service=config path=/home/virus/.config/opencode/config.json loading
INFO  2026-01-27T15:44:04 +0ms service=config path=/home/virus/.config/opencode/opencode.json loading
INFO  2026-01-27T15:44:04 +0ms service=config path=/home/virus/.config/opencode/opencode.jsonc loading
INFO  2026-01-27T15:44:04 +2ms service=bun cmd=["/nix/store/k62w80xr4b1c0hnlwm761zx11v9bqfzb-opencode-1.1.30/bin/.opencode-wrapped","add","@opencode-ai/plugin@1.1.30","--exact"] cwd=/home/virus/.config/opencode running
INFO  2026-01-27T15:44:04 +5ms service=plugin name=CodexAuthPlugin loading internal plugin
INFO  2026-01-27T15:44:04 +0ms service=plugin name=CopilotAuthPlugin loading internal plugin
INFO  2026-01-27T15:44:04 +0ms service=plugin path=opencode-anthropic-auth@0.0.9 loading plugin
INFO  2026-01-27T15:44:04 +1ms service=bun pkg=opencode-anthropic-auth version=0.0.9 installing package using Bun's default registry resolution
INFO  2026-01-27T15:44:04 +0ms service=bun cmd=["/nix/store/k62w80xr4b1c0hnlwm761zx11v9bqfzb-opencode-1.1.30/bin/.opencode-wrapped","add","--force","--exact","--cwd","/home/virus/.cache/opencode","opencode-anthropic-auth@0.0.9"] cwd=/home/virus/.cache/opencode running

Which of course will not work offline.

This was with the following vars

OPENCODE_DISABLE_SHARE=true
OPENCODE_DISABLE_LSP_DOWNLOAD=true
OPENCODE_DISABLE_DEFAULT_PLUGINS=true
OPENCODE_DISABLE_AUTOUPDATE=true
OPENCODE_AUTO_SHARE=false
@MatthewCroughan commented on GitHub (Jan 27, 2026): Yes, it appears that it is trying to run a series of `bun` commands on first boot ``` opencode run "test" --log-level DEBUG --print-logs INFO 2026-01-27T15:44:04 +159ms service=default version=1.1.30 args=["run","test","--log-level","DEBUG","--print-logs"] opencode INFO 2026-01-27T15:44:04 +1ms service=default directory=/home/virus/p creating instance INFO 2026-01-27T15:44:04 +0ms service=project directory=/home/virus/p fromDirectory INFO 2026-01-27T15:44:04 +15ms service=default directory=/home/virus/p bootstrapping INFO 2026-01-27T15:44:04 +4ms service=config path=/home/virus/.config/opencode/config.json loading INFO 2026-01-27T15:44:04 +0ms service=config path=/home/virus/.config/opencode/opencode.json loading INFO 2026-01-27T15:44:04 +0ms service=config path=/home/virus/.config/opencode/opencode.jsonc loading INFO 2026-01-27T15:44:04 +2ms service=bun cmd=["/nix/store/k62w80xr4b1c0hnlwm761zx11v9bqfzb-opencode-1.1.30/bin/.opencode-wrapped","add","@opencode-ai/plugin@1.1.30","--exact"] cwd=/home/virus/.config/opencode running INFO 2026-01-27T15:44:04 +5ms service=plugin name=CodexAuthPlugin loading internal plugin INFO 2026-01-27T15:44:04 +0ms service=plugin name=CopilotAuthPlugin loading internal plugin INFO 2026-01-27T15:44:04 +0ms service=plugin path=opencode-anthropic-auth@0.0.9 loading plugin INFO 2026-01-27T15:44:04 +1ms service=bun pkg=opencode-anthropic-auth version=0.0.9 installing package using Bun's default registry resolution INFO 2026-01-27T15:44:04 +0ms service=bun cmd=["/nix/store/k62w80xr4b1c0hnlwm761zx11v9bqfzb-opencode-1.1.30/bin/.opencode-wrapped","add","--force","--exact","--cwd","/home/virus/.cache/opencode","opencode-anthropic-auth@0.0.9"] cwd=/home/virus/.cache/opencode running ``` Which of course will not work offline. This was with the following vars ``` OPENCODE_DISABLE_SHARE=true OPENCODE_DISABLE_LSP_DOWNLOAD=true OPENCODE_DISABLE_DEFAULT_PLUGINS=true OPENCODE_DISABLE_AUTOUPDATE=true OPENCODE_AUTO_SHARE=false ```
Author
Owner

@thdxr commented on GitHub (Jan 27, 2026):

we'll likely add a single offline: true flag that disables everything that needs network
this just cannot be the default because it's not the experience the majority of people want

@thdxr commented on GitHub (Jan 27, 2026): we'll likely add a single `offline: true` flag that disables everything that needs network this just cannot be the default because it's not the experience the majority of people want
Author
Owner

@thdxr commented on GitHub (Jan 27, 2026):

re-reading this thread it sounds like you are saying that if we don't make this the default behavior it is because we are doing something evil

can you confirm that is your position? if so i'll close the issue

@thdxr commented on GitHub (Jan 27, 2026): re-reading this thread it sounds like you are saying that if we don't make this the default behavior it is because we are doing something evil can you confirm that is your position? if so i'll close the issue
Author
Owner

@MatthewCroughan commented on GitHub (Jan 27, 2026):

After reading https://opencode.ai/legal/privacy-policy and https://anoma.ly/ it seems like the mission is not to create something that is local-first. I don't say you're evil at all, no.

@MatthewCroughan commented on GitHub (Jan 27, 2026): After reading https://opencode.ai/legal/privacy-policy and https://anoma.ly/ it seems like the mission is not to create something that is local-first. I don't say you're evil at all, no.
Author
Owner

@MatthewCroughan commented on GitHub (Jan 27, 2026):

we'll likely add a single offline: true flag that disables everything that needs network

Are you sure the program is actually written and tested in a way that makes this possible? I tried using all of the environment variables offered, and I couldn't get it to stop executing bun commands on first launch.

@MatthewCroughan commented on GitHub (Jan 27, 2026): > we'll likely add a single offline: true flag that disables everything that needs network Are you sure the program is actually written and tested in a way that makes this possible? I tried using all of the environment variables offered, and I couldn't get it to stop executing `bun` commands on first launch.
Author
Owner

@MatthewCroughan commented on GitHub (Jan 27, 2026):

@podliy16 Actually, I left it running for an hour, eventually this is thrown

INFO  2026-01-27T17:05:26 +3599826ms service=models.dev file={} refreshing
ERROR 2026-01-27T17:05:36 +10000ms service=models.dev error=The operation timed out. Failed to fetch models.dev
INFO  2026-01-27T18:05:26 +3590001ms service=models.dev file={} refreshing
ERROR 2026-01-27T18:05:36 +10002ms service=models.dev error=The operation timed out. Failed to fetch models.dev

But I have OPENCODE_DISABLE_MODELS_FETCH=true set. Does the code just ignore this variable? Was the code that looks at this condition programmed by AI?

@MatthewCroughan commented on GitHub (Jan 27, 2026): @podliy16 Actually, I left it running for an hour, eventually this is thrown ``` INFO 2026-01-27T17:05:26 +3599826ms service=models.dev file={} refreshing ERROR 2026-01-27T17:05:36 +10000ms service=models.dev error=The operation timed out. Failed to fetch models.dev INFO 2026-01-27T18:05:26 +3590001ms service=models.dev file={} refreshing ERROR 2026-01-27T18:05:36 +10002ms service=models.dev error=The operation timed out. Failed to fetch models.dev ``` But I have `OPENCODE_DISABLE_MODELS_FETCH=true` set. Does the code just ignore this variable? Was the code that looks at this condition programmed by AI?
Author
Owner

@gigamonster256 commented on GitHub (Jan 27, 2026):

the build and runtime fetching of models.dev was changed recently: (see commits that touch build.ts https://github.com/anomalyco/opencode/commits/f2bf6202061228584663eebb2fad95f9f494f3e6/packages/opencode/script/build.ts) looks like you need to use 1.1.36+ for the OPENCODE_DISABLE_MODELS_FETCH to work properly

@gigamonster256 commented on GitHub (Jan 27, 2026): the build and runtime fetching of models.dev was changed recently: (see commits that touch build.ts https://github.com/anomalyco/opencode/commits/f2bf6202061228584663eebb2fad95f9f494f3e6/packages/opencode/script/build.ts) looks like you need to use 1.1.36+ for the OPENCODE_DISABLE_MODELS_FETCH to work properly
Author
Owner

@crash-over-burn commented on GitHub (Jan 28, 2026):

The Holy light of stallman may make a perfectly open binary; but any binary employed under hardware other than your control is never private, or secure - Every single Model of every single provider reinforces this.

https://opencode.ai/legal/privacy-policy

We collect Personal Data about you from the following categories of sources:

You
When you provide such information directly to us.
When you create an account or use our interactive tools and Services.

Interactive tools and services, session names in interactive tools count; as does - legally anything.

@crash-over-burn commented on GitHub (Jan 28, 2026): The Holy light of stallman may make a perfectly open binary; but any binary employed under hardware other than your control is never private, or secure - Every single Model of every single provider reinforces this. https://opencode.ai/legal/privacy-policy ```Categories of Sources of Personal Data We collect Personal Data about you from the following categories of sources: You When you provide such information directly to us. When you create an account or use our interactive tools and Services. ``` Interactive tools and services, session names in interactive tools count; as does - legally anything.
Author
Owner

@graham33 commented on GitHub (Jan 31, 2026):

@MatthewCroughan I do have opencode working in an offline environment. You need to do a couple of things:

  • Install/symlink a package.json in either the user's opencode config dir or the global one. If you're not using any plugins or custom providers which need particular npms then I think this can be empty, but if you are then you might need the provider package or @opencode-ai/plugin in it.
  • In recent version, set OPENCODE_MODELS_URL to point to a nix-built directory containing an api.json which symlinks to the dist/_api.json in the models-dev package. Older versions worked fine, some versions like the one you were testing broke this temporarily, but I think it's ok in recent versions (1.1.36 ish+)
  • I think you need some of the env vars you're already setting, like OPENCODE_DISABLE_DEFAULT_PLUGINS=true

I can dig out actual Nix code for this if needed.

Some things like LSPs will try to download if they're not available in the environment already, so you might want to make sure things like pyright are set up if you're using Python for example.

@graham33 commented on GitHub (Jan 31, 2026): @MatthewCroughan I do have opencode working in an offline environment. You need to do a couple of things: - Install/symlink a package.json in either the user's opencode config dir or the global one. If you're not using any plugins or custom providers which need particular npms then I think this can be empty, but if you are then you might need the provider package or @opencode-ai/plugin in it. - In recent version, set OPENCODE_MODELS_URL to point to a nix-built directory containing an api.json which symlinks to the dist/_api.json in the models-dev package. Older versions worked fine, some versions like the one you were testing broke this temporarily, but I think it's ok in recent versions (1.1.36 ish+) - I think you need some of the env vars you're already setting, like OPENCODE_DISABLE_DEFAULT_PLUGINS=true I can dig out actual Nix code for this if needed. Some things like LSPs will try to download if they're not available in the environment already, so you might want to make sure things like pyright are set up if you're using Python for example.
Author
Owner

@jakiechris commented on GitHub (Jan 31, 2026):

this may help, i'm trying it too..
https://github.com/anomalyco/opencode/pull/9258
the environment var has renamed to OPENCODE_MODELS_URL

@jakiechris commented on GitHub (Jan 31, 2026): this may help, i'm trying it too.. https://github.com/anomalyco/opencode/pull/9258 the environment var has renamed to OPENCODE_MODELS_URL
Author
Owner

@jakiechris commented on GitHub (Jan 31, 2026):

Matthew may not be articulating his exact point very clearly. As I understand it: OpenCode is arguably the best AI coding tool out there, and it has always stayed true to the open-source ethos. We are all very supportive of OpenCode.

OpenCode being open-source means nothing is hidden—everything is transparent. We can safely apply it for free to private scenarios, even sensitive enterprise-grade business cases. Claude Code is good too, but it lacks this DNA. Yet enterprise solutions typically involve strict intranet limitations; rather than privacy issues, we simply want OpenCode to run on our internal corporate networks.

So Keep it up, OpenCode! Eagerly awaiting complete support for fully offline intranet deployments!

@jakiechris commented on GitHub (Jan 31, 2026): Matthew may not be articulating his exact point very clearly. As I understand it: OpenCode is arguably the best AI coding tool out there, and it has always stayed true to the open-source ethos. We are all very supportive of OpenCode. OpenCode being open-source means nothing is hidden—everything is transparent. We can safely apply it for free to private scenarios, even sensitive enterprise-grade business cases. Claude Code is good too, but it lacks this DNA. Yet enterprise solutions typically involve strict intranet limitations; rather than privacy issues, we simply want OpenCode to run on our internal corporate networks. So Keep it up, OpenCode! Eagerly awaiting complete support for fully offline intranet deployments!
Author
Owner

@jakiechris commented on GitHub (Feb 8, 2026):

the truth is that when visiting http://127.0.0.1:4096/ on browser ,the opencode server has to visit http://app.opencode.ai/ to fetch webpages resource first. then cause 500 internal errro on intranet

@jakiechris commented on GitHub (Feb 8, 2026): the truth is that when visiting http://127.0.0.1:4096/ on browser ,the opencode server has to visit http://app.opencode.ai/ to fetch webpages resource first. then cause 500 internal errro on intranet
Author
Owner
@jakiechris commented on GitHub (Feb 8, 2026): https://github.com/anomalyco/opencode/blob/19b1222cd85060f7b0999b99586e93f84821b94b/packages/opencode/src/server/server.ts#L536
Author
Owner

@tredondo commented on GitHub (Feb 9, 2026):

After reading https://opencode.ai/legal/privacy-policy

Was that policy copy/pasted or AI-generated? What's "Home buyers" have to do with anything?

Image
@tredondo commented on GitHub (Feb 9, 2026): > After reading https://opencode.ai/legal/privacy-policy Was that policy copy/pasted or AI-generated? What's "Home buyers" have to do with anything? <img width="1337" height="1327" alt="Image" src="https://github.com/user-attachments/assets/187ed71b-0bf6-45df-9f39-a06d5d2a3729" />
Author
Owner

@MatthewCroughan commented on GitHub (Feb 9, 2026):

@tredondo That, is pretty damning, jeez.

@MatthewCroughan commented on GitHub (Feb 9, 2026): @tredondo That, is pretty damning, jeez.
Author
Owner

@MatthewCroughan commented on GitHub (Feb 9, 2026):

Just in case anyone thinks that is a joke, archive.org has a copy here, where it is still present.

https://web.archive.org/web/20260111033014/https://opencode.ai/legal/privacy-policy

@MatthewCroughan commented on GitHub (Feb 9, 2026): Just in case anyone thinks that is a joke, archive.org has a copy here, where it is still present. https://web.archive.org/web/20260111033014/https://opencode.ai/legal/privacy-policy
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: anomalyco/opencode#7458