Conversation
Adds repositoryConfig.settingSources so a self-host multi-repo setup can opt a specific repo out of the Claude Agent SDK's default ["user", "project", "local"] settingSources — useful when a repo should not inherit the operator's global ~/.claude user-scope settings (per-repo context hygiene). Validated via the shared isValidSettingSourcesOverride helper (cyrus-core): must be a non-empty array of "user"/"project"/"local". An unset or invalid override falls back to the existing stock default, so behavior is unchanged unless a repo opts in. Threaded through RunnerConfigBuilder (Claude runner only) and the prewarm path in EdgeWorker, mirroring the existing repository.model / repository.fallbackModel precedence pattern. This has been running in production on our self-hosted install as a local patch; upstreaming it now as a proper config-schema feature.
|
Hi @yscivideo Which company are you running Cyrus at that you ran into this? Thanks for contributing, I've taken a quick look at the code. |
|
Thanks for taking a look. It's a self-hosted install driving an educational-content pipeline out of a single Linear workspace. The operator account on that machine has a large user-scope |
What
Adds
repositoryConfig.settingSourcesso a self-hosted multi-repo setup can opt a specific repository out of the Claude Agent SDK's default["user", "project", "local"]setting sources.Why
When one Cyrus install serves several repositories, every session inherits the operator's global
~/.claudeuser-scope surface — skills, slash commands, agents, plugin MCP servers. For a repo that ships its own project-scope.claude/config, that inherited surface is dead weight in every session's context (in our install: 133 slash commands → 35, 104 skills → 15 after opting the repo down to["project", "local"]).How
settingSourcesfield onRepositoryConfig(JSON schema + types), validated by a sharedisValidSettingSourcesOverridehelper incyrus-core: must be a non-empty array of"user"/"project"/"local".RunnerConfigBuilder(Claude runner only) and the prewarm path inEdgeWorker, mirroring the existingrepository.model/repository.fallbackModelprecedence pattern.Testing
ClaudeRunner,RunnerConfigBuilder, core validator); full monorepo build +pnpm test:packages:rungreen.🤖 Generated with Claude Code
https://claude.ai/code/session_01QUrjDzWxhuTbN53VT9a13K