Skip to content

feat: support ZO-scoped Claude settings at ~/.zo/settings.json - #105

Open
arjvn wants to merge 1 commit into
SamPlvs:mainfrom
arjvn:feat/zo-scoped-settings
Open

feat: support ZO-scoped Claude settings at ~/.zo/settings.json#105
arjvn wants to merge 1 commit into
SamPlvs:mainfrom
arjvn:feat/zo-scoped-settings

Conversation

@arjvn

@arjvn arjvn commented Aug 3, 2026

Copy link
Copy Markdown

What

Removes the install-time requirement to edit the user's global ~/.claude/settings.json to enable agent teams. ZO-specific Claude settings now live in a dedicated ~/.zo/settings.json.

How

  • src/zo/wrapper.py: new zo_user_settings_path() helper resolves ~/.zo/settings.json (path overridable via the ZO_CLAUDE_SETTINGS env var, returns None when the file is absent). Both launch paths — the tmux interactive command and the headless --print subprocess — pass it to the Claude CLI via --settings <file>, which loads it as additional settings on top of user/project settings.
  • setup.sh: check 4 now passes if CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS is set in either ~/.zo/settings.json or the global settings file. The auto-fixer creates (or merges into) the ZO-scoped file instead of modifying ~/.claude/settings.json; the global-settings fixer arms are removed.

Why

  • Enabling an experimental flag globally affects every Claude Code session on the machine, not just ZO runs. Scoping it to the sessions ZO spawns is safer and self-contained.
  • --settings also travels with the session regardless of cwd, so it covers sessions launched in delivery repos where the ZO project-level .claude/settings.json doesn't apply.
  • Gives ZO a natural home for future session-scoped config (permissions, model pins) without touching user-global state.

Testing

  • Full suite: 854 passed, 7 skipped
  • ruff check src/zo/wrapper.py clean
  • bash -n setup.sh clean
  • Manual: helper resolves the file when present, returns None for missing/override paths

🤖 Generated with Claude Code

Avoid requiring users to edit their global ~/.claude/settings.json to
enable agent teams. If ~/.zo/settings.json exists (overridable via
ZO_CLAUDE_SETTINGS), the wrapper passes it to every spawned Claude
session via --settings, in both the tmux and headless launch paths.

setup.sh now accepts the flag in either location and its auto-fixer
writes the ZO-scoped file instead of modifying global settings.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@arjvn
arjvn requested a review from SamPlvs as a code owner August 3, 2026 17:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant