Skip to content

mergeable configs + cleanup#8378

Open
jamadeo wants to merge 6 commits intomainfrom
jamadeo/mergeable-configs
Open

mergeable configs + cleanup#8378
jamadeo wants to merge 6 commits intomainfrom
jamadeo/mergeable-configs

Conversation

@jamadeo
Copy link
Copy Markdown
Member

@jamadeo jamadeo commented Apr 7, 2026

This PR introduces mergeable config files, so goose will pull configuration from multiple sources: /etc/goose/config.yaml, and ~/.config/goose/config.yaml. You can have an extension defined in the global config and enable/disable it in your user config.

Also, remove the backup/restore logic.

@jamadeo jamadeo changed the title merge config files mergeable configs + cleanup Apr 7, 2026
@jamadeo jamadeo requested review from DOsinga and alexhancock April 7, 2026 20:24
@jamadeo jamadeo closed this Apr 7, 2026
@jamadeo jamadeo reopened this Apr 7, 2026
@jamadeo
Copy link
Copy Markdown
Member Author

jamadeo commented Apr 7, 2026

@codex review

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 6044d67109

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".


let secrets = if env::var("GOOSE_DISABLE_KEYRING").is_ok()
|| keyring_disabled_in_config(&config_path)
|| keyring_disabled_in_config(&user_config_path)
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Read keyring-disable flag from all config layers

With mergeable configs, GOOSE_DISABLE_KEYRING can now be set in /etc/goose/config.yaml, but Config::default still only checks ~/.config/goose/config.yaml before choosing SecretStorage. In environments that rely on a global config, this ignores the configured backend policy and initializes keyring mode unexpectedly, which can change secret handling behavior at runtime.

Useful? React with 👍 / 👎.

Comment on lines +169 to +171
let mut config_paths = vec![system_config_path()];
if let Some(defaults) = bundled_defaults_path() {
config_paths.push(defaults);
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Make bundled defaults lowest-precedence in merge order

The merge order loads /etc/goose/config.yaml first and defaults.yaml second, and load() applies last-wins merging for normal keys. When defaults.yaml is present, bundled defaults can overwrite administrator settings from the system config (including extension fields), so global config no longer acts as a reliable baseline unless users re-override it.

Useful? React with 👍 / 👎.

@DOsinga DOsinga added the needs_human label to set when a robot looks at a PR and can't handle it label Apr 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

needs_human label to set when a robot looks at a PR and can't handle it

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants