Skip to content

Instantly share code, notes, and snippets.

@jaigouk
Created March 1, 2026 22:41
Show Gist options
  • Select an option

  • Save jaigouk/ade6d8ede25029a0bc656776a651c017 to your computer and use it in GitHub Desktop.

Select an option

Save jaigouk/ade6d8ede25029a0bc656776a651c017 to your computer and use it in GitHub Desktop.
zshrc or bashrc alias for claude-team command
# claude teammate mode via tmux
# Uses standard tmux on all platforms (iTerm2 -CC control mode is fragile across updates)
function claude-team() {
local cmd="${1:-}"
# sanitize a string into a valid tmux session name
_ct_sanitize() {
echo "$1" | tr '[:upper:]' '[:lower:]' | sed 's/[^a-z0-9_-]/-/g' | sed 's/^-//;s/-$//' | cut -c1-50
}
case "$cmd" in
now)
# use current folder name as session name
local raw_name="${PWD##*/}"
local session="ct-$(_ct_sanitize "$raw_name")"
if tmux has-session -t "$session" 2>/dev/null; then
tmux attach-session -t "$session"
else
tmux new-session -s "$session" claude --dangerously-skip-permissions --teammate-mode tmux
fi
;;
new)
# claude-team new <name>
local name="${2:?usage: claude-team new <name>}"
local session="ct-$(_ct_sanitize "$name")"
if tmux has-session -t "$session" 2>/dev/null; then
echo "Session '$session' already exists. Use: claude-team attach $name"
return 1
fi
tmux new-session -s "$session" claude --dangerously-skip-permissions --teammate-mode tmux
;;
attach|a)
local name="${2:?usage: claude-team attach <name>}"
local session="ct-$(_ct_sanitize "$name")"
if tmux has-session -t "$session" 2>/dev/null; then
tmux attach-session -t "$session"
else
echo "No session '$session'. Use: claude-team ls"
return 1
fi
;;
ls|list)
tmux ls 2>/dev/null | grep '^ct-' || echo "No claude-team sessions."
;;
kill)
local name="${2:?usage: claude-team kill <name>}"
local session="ct-$(_ct_sanitize "$name")"
if tmux has-session -t "$session" 2>/dev/null; then
tmux kill-session -t "$session"
echo "Killed session '$session'."
else
echo "No session '$session'."
return 1
fi
;;
kill-all)
local sessions=($(tmux ls 2>/dev/null | grep '^ct-' | cut -d: -f1))
if [[ ${#sessions[@]} -eq 0 ]]; then
echo "No claude-team sessions to kill."
return 0
fi
for s in "${sessions[@]}"; do
tmux kill-session -t "$s"
echo "Killed '$s'."
done
;;
*)
cat <<'EOF'
claude-team - Claude teammate mode via tmux
usage: claude-team <command> [args]
commands:
now start/attach session named after current folder
new <name> start a new named session
attach <name> attach to an existing session (alias: a)
ls list all claude-team sessions (alias: list)
kill <name> kill a named session
kill-all kill all claude-team sessions
EOF
;;
esac
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment