Files
buzz/desktop
npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7 4868e1b63c feat(managed-agents): isolate Claude Code agent config per-agent root
Implements the claude-config-gaps plan of record (B1/B2/B3/B6/B7):

B1/B2 — Paired atom injection at spawn: CLAUDE_CONFIG_DIR=<managed-root>/claude/<pubkey>
and CLAUDE_SECURESTORAGE_CONFIG_DIR="" so each Claude agent has an isolated config
root while sharing the owner's default Keychain credential namespace. Generated as
a typed ClaudeLaunchPolicy at spawn time, never persisted. Remote agents are excluded.

B7 — Layered settings.json projection at spawn: owner ~/.claude/settings.json is
read as a base layer; Buzz canonical fields (effortLevel) are applied as an overlay;
protected env keys (model authority, credential roots, isolation flags, provider/auth
routing, BUZZ_* and NOSTR_* prefixes) are stripped from the base env object before
merging. Missing/unreadable owner base degrades to overlay-only with a logged warning.
Spawn fails if the projection write fails (B7.5 — never launch on wrong config).

B3 — Config root cleanup on agent deletion: cleanup_claude_config_root removes the
per-agent directory after the record is gone; validation rejects non-hex pubkeys and
traversal attempts; filesystem errors are swallowed so cleanup never blocks deletion.

B6 — effort_level added to spawn_config_hash so effort changes raise the restart badge.

New module: managed_agents/claude_config — ClaudeLaunchPolicy, is_launch_policy_protected_key
predicate (single source of truth for projection and launch assembly), project_settings_json,
write_projected_settings, cleanup_claude_config_root. 28 tests covering all contract obligations.

Closes #2692, #2884, #3371, #3493. Does not close #2265, #4004 (tracked as follow-up in PR).

Co-authored-by: Will Pfleger <pfleger.will@gmail.com>
Signed-off-by: Will Pfleger <pfleger.will@gmail.com>
2026-08-03 12:20:03 -04:00
..
…

Buzz

Desktop chat shell with:

  • Tauri + React + TypeScript + Vite
  • Tailwind CSS
  • shadcn/ui-ready shared components
  • Biome (lint/format/check)
  • Feature-driven frontend structure

Scripts

  • pnpm dev - run the web frontend
  • pnpm tauri dev - run the desktop app
  • pnpm build - typecheck and build frontend
  • pnpm typecheck - TypeScript checks
  • pnpm lint - Biome lint
  • pnpm format - Biome format (write)
  • pnpm check - Biome check

Structure

  • src/shared - reusable app-wide code (ui, lib, styles)
  • src/features - feature modules (vertical slices)
  • src/app - top-level app composition