Skip to main content

Claude Code tmux watchdog — auto-unblock permission dialogs

Project description

claude-watchdog

English | 中文

Claude Code tmux watchdog — auto-unblock permission dialogs so you don't have to stare at a blocked session.

Only logs hits (blockage detected and cleared), silent otherwise.

Install

pip install claude-watchdog

Usage

# One-shot check (runs once, exits)
claude-watchdog --session claude-tl

# Monitor continuously
claude-watchdog --session claude-tl --daemon

# Monitor every claude-* session
claude-watchdog --all --daemon

# Alert only — log + notify, don't auto-approve
claude-watchdog --session claude-tl --daemon --alert-only

# View hit log
claude-watchdog --log
claude-watchdog --log --follow       # tail -f mode, watch live
claude-watchdog --log --session claude-tl  # filter by session

# Restart the daemon (kills existing + starts fresh)
claude-watchdog restart
claude-watchdog restart --interval 10   # custom interval on restart

Notify on hit

When a blockage is detected and cleared, claude-watchdog can notify you. Pass --notify (or -n) to enable. Examples:

# Integrated: via hermes-notify (bus message, silent progress type)
claude-watchdog --session claude-tl --daemon --notify

# DIY: pipe stdout to anything you want

# HTTP webhook (Slack/Telegram/Discord/any API)
claude-watchdog --session claude-tl --daemon | while read line; do
  curl -s -X POST https://hooks.slack.com/services/xxx/yyy/zzz \
    -H "Content-Type: application/json" \
    -d "{\"text\": \"$line\"}"

  curl -s -X POST "https://api.telegram.org/bot<TOKEN>/sendMessage" \
    -d "chat_id=<CHAT_ID>&text=$line"
done

# MCP notification (Model Context Protocol — tools with notifications)
claude-watchdog --session claude-tl --daemon | while read line; do
  curl -s -X POST http://localhost:8080/mcp/notify \
    -H "Content-Type: application/json" \
    -d "{\"jsonrpc\": \"2.0\", \"method\": \"notifications/message\", \
         \"params\": {\"severity\": \"warning\", \"message\": \"$line\"}}"
done

# macOS notification
claude-watchdog --session claude-tl --daemon | while read line; do
  osascript -e "display notification \"$line\" with title \"Watchdog\""
done

# WeChat (via notify-hermes.py)
claude-watchdog --session claude-tl --daemon | while read line; do
  ~/.hermes/scripts/notify-hermes.py --type progress "Watchdog: $line"
done

The --notify flag auto-detects hermes-notify if installed. No hard dependency — without it, --notify is a no-op.

Rules

Pattern Keys Description
Do you want to proceed 1 + Enter Tool confirmation dialog
Do you want to (make this edit|overwrite) Down + Enter Allow all edits this session
accept edits on Enter Accept pending diffs
Detected a custom API key Up + Enter Confirm custom API key
Interrupted 2 + Enter Bypass/continue after interruption
Rate this response / 评价 / 评分 Escape Dismiss evaluation dialog

New patterns can go into ~/.config/claude-watchdog/rules.toml (future).

Log

Hits are logged to ~/.local/share/claude-watchdog/hits.log as JSONL:

{"ts": "2026-05-18 09:15:23", "session": "claude-tl", "rule": "bypass_permissions", "detail": "Permission bypass prompt — confirm bypass"}

Architecture

cli.py ── session/daemon/log ──→ watcher.py ── tmux capture-pane
                                        │
                                        ↓ rules.py
                                   pattern match?
                                   ├─ yes → send-keys + log [+ notify]
                                   └─ no  → silent

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

claude_watchdog-0.1.5.tar.gz (9.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

claude_watchdog-0.1.5-py3-none-any.whl (9.6 kB view details)

Uploaded Python 3

File details

Details for the file claude_watchdog-0.1.5.tar.gz.

File metadata

  • Download URL: claude_watchdog-0.1.5.tar.gz
  • Upload date:
  • Size: 9.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for claude_watchdog-0.1.5.tar.gz
Algorithm Hash digest
SHA256 b7a20f98f755e0cef5f700290ef018fef7d5eafbcb4bbf841d99a1f22c830902
MD5 0f13b3ca35a0b03b09a2a88b09ac190c
BLAKE2b-256 7fcc5748811785ee48535b0301aee893978751fdd35f6f3dd29b355295f362a7

See more details on using hashes here.

File details

Details for the file claude_watchdog-0.1.5-py3-none-any.whl.

File metadata

File hashes

Hashes for claude_watchdog-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 e5a67a92c92a326adbdca3fbdb983ccf1b7c6e707c58a8f33012aac1a595e40f
MD5 bae02d2dcb1d4784d3af8fc6a24ea83d
BLAKE2b-256 dd9ca490a8af137cde7b7f90a9ee3610b12a8d6560025bd2b9f7dbfa91114b55

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page