Config autoupdate only respected at global path #4256

Open
opened 2026-02-16 17:43:11 -05:00 by yindo · 7 comments
Owner

Originally created by @scottrbaxter on GitHub (Jan 5, 2026).

Originally assigned to: @rekram1-node on GitHub.

Description

Config file includes "autoupdate": false,, but v1.1.1 ignores this and updates to v1.1.2 on startup.

This occurs whether using ~/.config/opencode/opencode.json, a local path ./opencode.json and referencing the env var
OPENCODE_CONFIG to declare a specific config.

This did not occur on v1.0.223 or earlier.

Autoupdate also occurs automatically if "autoupdate": "notify" is specified.

Plugins

N/A

OpenCode version

v1.1.1

Steps to reproduce

  1. echo '{"$schema": "https://opencode.ai/config.json","autoupdate": false,}' > opencode-autodate.json
  2. npm -g i opencode-ai@1.1.1
  3. OPENCODE_CONFIG=opencode-autodate.json opencode --version # confirms 1.1.1
  4. OPENCODE_CONFIG=opencode-autodate.json opencode # notification states autodate to 1.1.2
  5. <ctrl-c> quit
  6. OPENCODE_CONFIG=opencode-autodate.json opencode --version # confirms 1.1.2

Screenshot and/or share link

Image

Operating System

macOS Sequoia

Terminal

iTerm2

Originally created by @scottrbaxter on GitHub (Jan 5, 2026). Originally assigned to: @rekram1-node on GitHub. ### Description Config file includes `"autoupdate": false,`, but v1.1.1 ignores this and updates to v1.1.2 on startup. This occurs whether using `~/.config/opencode/opencode.json`, a local path `./opencode.json` and referencing the env var `OPENCODE_CONFIG` to declare a specific config. This did not occur on `v1.0.223` or earlier. Autoupdate also occurs automatically if `"autoupdate": "notify"` is specified. ### Plugins N/A ### OpenCode version v1.1.1 ### Steps to reproduce 1. `echo '{"$schema": "https://opencode.ai/config.json","autoupdate": false,}' > opencode-autodate.json` 2. `npm -g i opencode-ai@1.1.1` 3. `OPENCODE_CONFIG=opencode-autodate.json opencode --version # confirms 1.1.1` 4. `OPENCODE_CONFIG=opencode-autodate.json opencode # notification states autodate to 1.1.2` 5. `<ctrl-c>` quit 6. `OPENCODE_CONFIG=opencode-autodate.json opencode --version # confirms 1.1.2` ### Screenshot and/or share link <img width="299" height="150" alt="Image" src="https://github.com/user-attachments/assets/a416edfd-eb13-4423-a608-c14966b1422e" /> ### Operating System macOS Sequoia ### Terminal iTerm2
yindo added the bug label 2026-02-16 17:43:11 -05:00
Author
Owner

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

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

  • #6979: Cannot disable Zen provider - Configuration settings being ignored on v1.1.2
  • #6873: auto upgrade to 1.1.1, surprise! commands no longer require approval - Configuration not being respected after upgrade to v1.1.1

It appears there may be a broader regression in v1.1.1 where configuration settings from opencode.json are not being properly respected on startup. Feel free to ignore if your specific case differs from these issues.

@github-actions[bot] commented on GitHub (Jan 5, 2026): This issue might be a duplicate of existing issues. Please check: - #6979: Cannot disable Zen provider - Configuration settings being ignored on v1.1.2 - #6873: auto upgrade to 1.1.1, surprise! commands no longer require approval - Configuration not being respected after upgrade to v1.1.1 It appears there may be a broader regression in v1.1.1 where configuration settings from opencode.json are not being properly respected on startup. Feel free to ignore if your specific case differs from these issues.
Author
Owner

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

Can u share full config? None of that code changed between versions as far as I can tell

You can also try:
OPENCODE_DISABLE_AUTOUPDATE=true

@rekram1-node commented on GitHub (Jan 5, 2026): Can u share full config? None of that code changed between versions as far as I can tell You can also try: OPENCODE_DISABLE_AUTOUPDATE=true
Author
Owner

@scottrbaxter commented on GitHub (Jan 5, 2026):

OPENCODE_CONFIG=opencode-autodate.json opencode --version
1.1.1
OPENCODE_CONFIG=opencode-autodate.json opencode debug config
{
  "agent": {},
  "mode": {},
  "plugin": [],
  "command": {},
  "username": "scott",
  "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": "none",
    "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"
  }
}

this seems to stop the autoupdate from occurring. it's a band-aid fix, but nice to know this works. definitely preferred to have this in a config file, though.

OPENCODE_CONFIG=opencode-autodate.json OPENCODE_DISABLE_AUTOUPDATE=true opencode # no auto update

NOTE: autoupdate still occurs automatically with notify, quoted or otherwise. i'd still rather just have this disabled and manually update when i'm ready (because you're so quick to churn out updates!), but i've yet to actually see the notification that the doc mentions.

OPENCODE_CONFIG=opencode-autodate.json OPENCODE_DISABLE_AUTOUPDATE="notify" opencode # auto updates
OPENCODE_CONFIG=opencode-autodate.json OPENCODE_DISABLE_AUTOUPDATE=notify opencode # auto updates

@scottrbaxter commented on GitHub (Jan 5, 2026): ``` OPENCODE_CONFIG=opencode-autodate.json opencode --version 1.1.1 ``` ``` OPENCODE_CONFIG=opencode-autodate.json opencode debug config { "agent": {}, "mode": {}, "plugin": [], "command": {}, "username": "scott", "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": "none", "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" } } ``` this seems to stop the autoupdate from occurring. it's a band-aid fix, but nice to know this works. definitely preferred to have this in a config file, though. `OPENCODE_CONFIG=opencode-autodate.json OPENCODE_DISABLE_AUTOUPDATE=true opencode` # no auto update NOTE: autoupdate still occurs automatically with notify, quoted or otherwise. i'd still rather just have this disabled and manually update when i'm ready (because you're so quick to churn out updates!), but i've yet to actually see the [notification that the doc mentions](https://opencode.ai/docs/config/#autoupdate). `OPENCODE_CONFIG=opencode-autodate.json OPENCODE_DISABLE_AUTOUPDATE="notify" opencode` # auto updates `OPENCODE_CONFIG=opencode-autodate.json OPENCODE_DISABLE_AUTOUPDATE=notify opencode` # auto updates
Author
Owner

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

okay but in ur config I dont see autoupdate set to false anywhere

@rekram1-node commented on GitHub (Jan 5, 2026): okay but in ur config I dont see autoupdate set to false anywhere
Author
Owner

@scottrbaxter commented on GitHub (Jan 5, 2026):

hmm... the config is the first step i shared in in steps to reproduce... is the config not picking this up for some reason. i didn't run into this issue prior to version 1.1.1

cat opencode-autodate.json
{"$schema": "https://opencode.ai/config.json","autoupdate": false,}
OPENCODE_CONFIG=opencode-autodate.json opencode

Edit: oh, interesting... i've been pretty diligent with manually updating to the latest when i fire up new sessions.. and didn't realize that this actually had been occurring for a while. the difference was that back when i was on e.g. 1.0.80, autoupdate would occur, but there was no user notification. i've updated a few times since, but that would have been manually, so i wouldn't have seen a new release.

What this tells me is that the autoupdate boolean (or sometimes a string for notify, which is an interesting choice) doesn't care about the config value that's being set. the shell env var OPENCODE_DISABLE_AUTOUPDATE is a band-aid for the time being, but would prefer to not rely on that long-term. also with so much rapid release going on in this project, i really don't want to be caught off guard with an unintended version update.

@scottrbaxter commented on GitHub (Jan 5, 2026): hmm... the config is the first step i shared in in steps to reproduce... is the config not picking this up for some reason. i didn't run into this issue prior to version `1.1.1` ``` cat opencode-autodate.json {"$schema": "https://opencode.ai/config.json","autoupdate": false,} OPENCODE_CONFIG=opencode-autodate.json opencode ``` --- Edit: oh, interesting... i've been pretty diligent with manually updating to the latest when i fire up new sessions.. and didn't realize that this actually had been occurring for a while. the difference was that back when i was on e.g. `1.0.80`, autoupdate would occur, but there was no user notification. i've updated a few times since, but that would have been manually, so i wouldn't have seen a new release. What this tells me is that the `autoupdate` boolean (or sometimes a string for `notify`, which is an interesting choice) doesn't care about the config value that's being set. the shell env var `OPENCODE_DISABLE_AUTOUPDATE` is a band-aid for the time being, but would prefer to not rely on that long-term. also with so much rapid release going on in this project, i really don't want to be caught off guard with an unintended version update.
Author
Owner

@scottrbaxter commented on GitHub (Jan 7, 2026):

It seems this is directly related to where the config file exists. The only way "autoupdate": false seems to be respected, is if it's in the default ~/.config/opencode/opencode.json location. I've now confirmed this up to v1.1.5.

e.g.

local path

rm ~/.config/opencode/opencode.json
cd /tmp
echo '{"$schema": "https://opencode.ai/config.json","autoupdate": false,}' > opencode.json
npm -g i opencode-ai@1.1.5
opencode --version # returns 1.1.5
opencode debug config | jq '.autoupdate' # returns false
opencode
opencode --version

Auto update occurs

Image
opencode --version
1.1.6

default path

unset OPENCODE_CONFIG
cd /tmp
rm ./opencode.json
echo '{"$schema": "https://opencode.ai/config.json","autoupdate": false,}' > ~/.config/opencode/opencode.json
npm -g i opencode-ai@1.1.5
opencode --version # returns 1.1.5
opencode debug config | jq '.autoupdate' # returns false
opencode
opencode --version

no autoupdate

Image

confirmed: only if config file is at the default path, opencode does not autoupdate

opencode --version
1.1.5

To test, you should be able to simply copy/paste either code block with the same results. I've been able to successfully confirm this on macOS Sequoia and Ubuntu 22.04 LTS.

@scottrbaxter commented on GitHub (Jan 7, 2026): It seems this is directly related to where the config file exists. The only way `"autoupdate": false` seems to be respected, is if it's in the default `~/.config/opencode/opencode.json` location. I've now confirmed this up to `v1.1.5`. e.g. ## local path ``` rm ~/.config/opencode/opencode.json cd /tmp echo '{"$schema": "https://opencode.ai/config.json","autoupdate": false,}' > opencode.json npm -g i opencode-ai@1.1.5 opencode --version # returns 1.1.5 opencode debug config | jq '.autoupdate' # returns false opencode opencode --version ``` Auto update occurs <img width="846" height="522" alt="Image" src="https://github.com/user-attachments/assets/20cdbfda-625c-4f2d-833c-e81aef099f0a" /> ``` opencode --version 1.1.6 ``` --- ## default path ``` unset OPENCODE_CONFIG cd /tmp rm ./opencode.json echo '{"$schema": "https://opencode.ai/config.json","autoupdate": false,}' > ~/.config/opencode/opencode.json npm -g i opencode-ai@1.1.5 opencode --version # returns 1.1.5 opencode debug config | jq '.autoupdate' # returns false opencode opencode --version ``` no autoupdate <img width="842" height="517" alt="Image" src="https://github.com/user-attachments/assets/c74b8955-0113-40f3-8ab8-a3e7f10a22ca" /> confirmed: only if config file is at the default path, opencode does not autoupdate ``` opencode --version 1.1.5 ``` To test, you should be able to simply copy/paste either code block with the same results. I've been able to successfully confirm this on macOS Sequoia and Ubuntu 22.04 LTS.
Author
Owner

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

ill check it, hmmm

@rekram1-node commented on GitHub (Jan 7, 2026): ill check it, hmmm
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: anomalyco/opencode#4256