Welcome screen reads principal.name from settings.json, ignores settings.local.json

Resolved 💬 3 comments Opened Feb 7, 2026 by volo-fox Closed Feb 11, 2026

Description

The Claude Code welcome screen ("Welcome back {name}") reads principal.name from settings.json but ignores settings.local.json. This is inconsistent with how other settings (like env, model, etc.) work, where settings.local.json overrides settings.json.

Expected behavior

settings.local.json should override settings.json for all fields, including custom/unrecognized fields like principal.name that the welcome screen reads.

Actual behavior

The welcome screen always displays the name from settings.json, even when settings.local.json contains a different principal.name.

Why this matters

In a multi-user team sharing a single PAI config repo (~/.claude/), each person needs a different welcome screen name. Currently the only workaround is to sed the shared settings.json locally and use git update-index --skip-worktree to prevent git pull from reverting it.

Reproduction

  1. Set settings.json: { "principal": { "name": "Default" } }
  2. Set settings.local.json: { "principal": { "name": "Alice" } }
  3. Restart Claude Code
  4. Welcome screen says "Welcome back Default" instead of "Welcome back Alice"

Additional context

Also noticed that principal is not in the settings.local.json JSON schema (rejected as "Unrecognized field"), even though settings.json accepts it via additionalProperties: {}. The schema for local settings should match or extend the base schema.

Environment

  • Claude Code CLI (latest as of 2026-02-07)
  • macOS

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗