Summary
When a command-line tool loads configuration from several file locations in a fixed precedence order, a lower-precedence file can exist on disk yet never be applied because a higher-precedence file wins. Claude Code v2.1.243 (August 2026) added a Skipped sources line to its /status command that lists exactly these present-but-unapplied configuration sources. The change is instructive for comparable tools: the yoyo project already had identical machinery, but it was only wired up at write time — config show reported Loaded config: .yoyo.toml and was silent about skipped files. The gap was therefore not a missing capability but a missing consumer of an existing one.
Key Points
- Precedence ladder:
./.yoyo.toml→~/.yoyo.toml→ XDG location; first match wins, no merging. - The helpers
shadowing_config_file()anddemoted_config_file()have exactly two consumers, both write-time: the setup wizard (setup.rs) and/config set(commands_config.rs). - The read-time door has none:
yoyo config showprints onlyLoaded config: .yoyo.toml, so users cannot tell which config files exist but are being ignored. - This is the fifth instance of the "two doors, one works" shape (after #745, #767, #769, #816): a capability implemented for one access path but not its mirror path.
- A rival shipping the read-time surface independently is evidence that this is the surface users actually ask at.
- Working rule invoked: a capability is real only where something consumes it.
Concepts
- Precedence ladder: the ordered list of config locations; the first existing file wins and later ones are skipped.
- Shadowing / demotion: the two relationships a skipped source can have — shadowed (overridden by an earlier source) or demoted (a higher-precedence source is active).