The MCP-only case already evaluates an empty settings configuration.
Check its activation output there instead of repeating the evaluation,
while retaining the separate mutable-empty and file ownership cases.
Check effective file overrides, trust-state parsing, and custom paths without changing the opt-in default. Describe byte-identical relinking accurately during the filename migration.
Copilot CLI replaces settings.json when it saves a setting, for example
after changing the model or theme from inside the CLI. With a linked
file that replaces the link, and the next activation reports a
collision.
Add an opt-in mutableSettings option that merges the declared settings
into a writable settings.json after linkGeneration with
mkImpureConfigMerger instead of linking it. Existing files are read as
JSON5, since Copilot CLI accepts comments there. Declared values take
precedence, keys later removed from the settings stay in the file, and
comments and formatting are not preserved. The default still links the
file.
Turning the option off links the file again. mkImpureConfigCleanup
removes a merged copy Copilot CLI has not changed so the link can
replace it; a changed one is reported as a collision.
Mention the option in the news entry and release note as the way to
keep a settings.json Copilot CLI already wrote.
Since Copilot CLI 1.0.35, user settings live in settings.json and
config.json holds internal state. On startup, 1.0.88 moves user keys
out of a Home Manager config.json into settings.json and rewrites
config.json as a regular file, replacing the link, so the next switch
collides on config.json.
Link the declared settings as settings.json instead and stop managing
config.json, including the firstLaunchAt workaround that only existed
for it. A read-only settings.json link survives startup; Copilot CLI
replaces it only when it saves a setting.
Copilot CLI drops trusted_folders from settings.json and moves
trustedFolders into its own state in config.json, rewriting
settings.json and so replacing a linked file. Leave both keys out of
the file, warn when either is set, and do not manage the file when
they are the only settings. Document the canonical allowedUrls and
deniedUrls names.
The old config.json link is removed by linkGeneration when it still
points into a generation; a regular file left by Copilot CLI stays for
it to manage. The news entry and release note tell users whose Copilot
CLI already wrote a regular settings.json to remove it before
switching, since the new link would collide with it.
Add support for managing Copilot CLI global instructions via programs.github-copilot-cli.context, written to copilot-instructions.md under COPILOT_HOME.
Also manage custom agents and skills from inline definitions, file paths, and directories, with focused tests and a news entry covering the new options.