Two agent-team tooling changes: - teammateMode: in-process -> auto. Teammates now spawn in tmux split panes when the lead runs inside tmux, with graceful in-process fallback. - New PreToolUse hook git-centralize-guard.sh blocks .git-mutating commands (add, commit, merge, push, pull, rebase, reset, checkout, stash, cherry-pick, rm, mv) for teammates, keeping version control centralized to the lead. Detection keys on the agent_type field, which a teammate's hook input carries and the lead's does not. Read-only git is allowed. Documented in .claude/rules/git-safety.md. Hooks load at lead startup, so a restart is required for the hook to reach teammates. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
101 lines
2.4 KiB
JSON
101 lines
2.4 KiB
JSON
{
|
|
"autoMemoryDirectory": "/home/jeroenschweitzer/Projects/settled-reach/.memory",
|
|
"env": {
|
|
"CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1",
|
|
"SR_DB_PATH": "/var/home/jeroenschweitzer/Projects/settled-reach/settledreach.db"
|
|
},
|
|
"teammateMode": "auto",
|
|
"permissions": {
|
|
"allow": [
|
|
"Bash(git add *)",
|
|
"Bash(git commit *)",
|
|
"Bash(git push *)",
|
|
"Bash(git fetch *)",
|
|
"Bash(git merge *)",
|
|
"Bash(git pull *)",
|
|
"Bash(git status *)",
|
|
"Bash(git log *)",
|
|
"Bash(git diff *)",
|
|
"Bash(git show *)",
|
|
"Bash(git checkout *)",
|
|
"Bash(git stash *)",
|
|
"Bash(git branch *)",
|
|
"Bash(git worktree *)",
|
|
"Bash(git config *)",
|
|
"Bash(git mv *)",
|
|
"Bash(git rm *)",
|
|
"Bash(git ls-tree *)",
|
|
"Bash(git rev-parse --show-toplevel)",
|
|
|
|
"Bash(tooling/db/ticket *)",
|
|
"Bash(tooling/db/sqlite-query *)",
|
|
"Bash(tooling/db/sqlite-exec *)",
|
|
"Bash(tooling/db/sqlite-init)",
|
|
"Bash(tooling/db/decisions-sync)",
|
|
"Bash(tooling/db/decision *)",
|
|
|
|
"Bash(tooling/db/audio-generate *)",
|
|
"Bash(tooling/db/audio-health)",
|
|
"Bash(tooling/db/audio-post *)",
|
|
"Bash(tooling/db/audio-batch *)",
|
|
|
|
"Bash(make *)",
|
|
"Bash(make)",
|
|
|
|
"Bash(tea *)",
|
|
"Bash(tooling/tea-comment *)",
|
|
|
|
"Bash(cargo test *)",
|
|
"Bash(cargo test)",
|
|
"Bash(cargo build *)",
|
|
"Bash(cargo build)",
|
|
"Bash(cargo check *)",
|
|
"Bash(cargo check)",
|
|
"Bash(cargo clippy *)",
|
|
"Bash(cargo clippy)",
|
|
"Bash(ruff check *)",
|
|
"Bash(ruff check)",
|
|
"Bash(tests/run-*)",
|
|
|
|
"Bash(chmod *)",
|
|
"Bash(ls *)",
|
|
"Bash(find *)",
|
|
"Bash(list *)",
|
|
"Bash(tree *)",
|
|
"Bash(sed -n *)",
|
|
"Skill(git-commit)",
|
|
"Skill(whats-next)",
|
|
"Skill(pr-process)",
|
|
"Skill(pr-review)",
|
|
"Skill(ticket)",
|
|
"Skill(docs-search)",
|
|
"Skill(workshop-start)"
|
|
],
|
|
"deny": [
|
|
"Bash(git push --force *)",
|
|
"Bash(git reset --hard *)",
|
|
"Bash(git clean -f *)",
|
|
"Bash(rm -rf *)"
|
|
]
|
|
},
|
|
"hooks": {
|
|
"PreToolUse": [
|
|
{
|
|
"matcher": "Bash",
|
|
"hooks": [
|
|
{
|
|
"type": "command",
|
|
"command": ".claude/hooks/git-lock-guard.sh",
|
|
"timeout": 5
|
|
},
|
|
{
|
|
"type": "command",
|
|
"command": ".claude/hooks/git-centralize-guard.sh",
|
|
"timeout": 5
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
}
|