Skip to content

opencode.json/config.json search path #3407

@arlt

Description

@arlt

Description

I tried to configure disabled_providers. One can read about

  • ~/.config/opencode/config.json
  • ~/.config/opencode/opencode.json

but strace shows that opencode looks at the following places:

  1. ~/.config/opencode/config.json
  2. ~/.config/opencode/opencode.json
  3. ~/.config/opencode/opencode.jsonc
  4. $PWD/opencode.jsonc # folder where i started opencode
  5. ~/opencode.jsonc
  6. /home/opencode.jsonc
  7. /opencode.jsonc
  8. $PWD/opencode.json # folder where i started opencode
  9. ~/opencode.json
  10. /home/opencode.json
  11. /opencode.json

/opencode.json wins, so if i centrally provide /opencode.json, i override the user specific setting - this is fine.
But /opencode.json?! Why not /etc/...?

I wonder if the paths are intentional. From my point of view, it might make more sense that way:

  1. ~/.config/opencode/config.json or $HOME/.config/opencode/opencode.json
  2. $PWD/opencode.json
  3. /etc/opencode.json or /etc/opencode/opencode.json or /etc/opencode/config.json

To clear up the confusion surrounding opencode.json vs. config.json, I would probably opt for opencode.json (which can be found in the documentation e.g. https://opencode.ai/docs/rules/#custom-instructions) - so maybe:

  1. $HOME/.config/opencode/opencode.json
  2. $PWD/opencode.json # by this I mean the project folder in which opencode works.
  3. /etc/opencode.json or /etc/opencode/opencode.json

The latter ones shoud always override the former ones (merge).

I used a bug report since /opencode.json is not the correct place for a central configuration in my opinion.

OpenCode version

0.15.16

Steps to reproduce

  1. strace -fo log opencode # exit after start
  2. grep -oE '/.*(config|opencode).json[^"]*' log

Screenshot and/or share link

No response

Operating System

No response

Terminal

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions