Config autoupdate only respected at global path
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
-
echo '{"$schema": "https://opencode.ai/config.json","autoupdate": false,}' > opencode-autodate.json -
npm -g i [email protected] -
OPENCODE_CONFIG=opencode-autodate.json opencode --version # confirms 1.1.1 -
OPENCODE_CONFIG=opencode-autodate.json opencode # notification states autodate to 1.1.2 -
<ctrl-c>quit -
OPENCODE_CONFIG=opencode-autodate.json opencode --version # confirms 1.1.2
Screenshot and/or share link
Operating System
macOS Sequoia
Terminal
iTerm2
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.
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
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
okay but in ur config I dont see autoupdate set to false anywhere
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.
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 [email protected]
opencode --version # returns 1.1.5
opencode debug config | jq '.autoupdate' # returns false
opencode
opencode --version
Auto update occurs
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 [email protected]
opencode --version # returns 1.1.5
opencode debug config | jq '.autoupdate' # returns false
opencode
opencode --version
no autoupdate
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.
ill check it, hmmm