What
Plugins are add-on packages, and their hooks are small programs Claude Code runs at set moments. Before, plugin code could only look settings up through a $.settings.read helper. Now:
- A new
settings.readevent sends the layers of your effective settings to plugin hooks, and they can answer with their own values to override them. $.settings.readtakes{ source },{ key }or nothing; anything else is rejected with an error.- An answer that no settings key can hold is refused, and the log says "the settings' own value stands".
- The combined result is worked out again whenever your settings or the loaded plugins change, and skipped when neither changed. A key whose answer never settles is left out, with a warning that the value in your settings files stands.
Why
A plugin can now shape your settings, and its values stay consistent after reloads. If a setting does not match what your settings file says, a plugin hook may be overriding it; the log notes when a hook's answer was refused.
Names in the bundlesettings.read
The entry above is what we published on the day. These lines were added later, as Anthropic's own pages caught up, and they sit beside the original rather than replacing it.
Confirmed since
Anthropic's documentation has since written up settings.read, on Use the mods API.
`$.settings.read()` resolves to one object that holds the settings from all sources in use, merged by [precedence](https://code.claude.com/docs/en/settings.md#settings-precedence). Pass `{ source }` to read one source instead, `{ key }` to…plugins/mods/api see the edit
Two sources agreeTwo things we can check say the same as this entry.
Anthropic's documentation agrees
Anthropic's documentation has since written up settings.read, on Use the mods API.
Anthropic's release notes agree
Changed mods' settings.read hooks to receive each settings layer and rewrite the merged settings, so a managed mod can make an…