Skip to content

[FEATURE]: support config.d/ directory for modular configuration #9062

@ferdinandyb

Description

@ferdinandyb

Feature hasn't been suggested before.

  • I have verified this feature I'm about to request hasn't been suggested before.

Describe the enhancement you want to request

Problem

Currently, all OpenCode configuration must be in a single opencode.json file. This becomes unwieldy when managing complex setups with many providers, MCP servers, permissions, and custom settings. Users cannot easily:

  • Share partial configurations across machines (e.g., just permissions or just theme)
  • Keep sensitive configuration separate from version-controlled settings
  • Organize configuration logically by concern (providers, permissions, plugins, etc.)
  • Manage large sections of granular permissions across multiple files (e.g., 10-permissions-git.json, 11-permissions-test-tools.json, 12-permissions-deploy.json)

Proposed Solution

Add support for a config.d/ directory that allows splitting configuration into multiple files:

  • ~/.config/opencode/config.d/ for global configuration fragments
  • .opencode/config.d/ for project-specific fragments

Files would be loaded alphabetically and merged after the main config file, following the common Unix pattern (similar to /etc/sudoers.d/, /etc/apt/sources.list.d/, etc.).

Use Cases

  • Granular permissions: Split permissions by tool category (10-permissions-git.json, 11-permissions-test-tools.json, 12-permissions-deploy.json)
  • Plugin organization: Maintain 50-plugins.json for all plugin definitions
  • Sensitive data: Store API keys in a non-versioned fragment file
  • Shared configs: Symlink common fragments across projects

Metadata

Metadata

Assignees

Labels

discussionUsed for feature requests, proposals, ideas, etc. Open discussion

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions