Skip to main content

CLI reference

ccmon is the command-line client that talks to the local daemon. Everything the desktop UI exposes is also available here, so you can stay in your terminal if you prefer.

Available after installing the .deb.

ccmon install [--no-approval] [--settings <path>]
Merge ccmon hooks into ~/.claude/settings.json.
ccmon uninstall [--settings <path>]
Remove ccmon hooks from settings.json.
ccmon doctor Check daemon, hooks, claude/notify-send binaries.
ccmon daemon [--port N] Run daemon in the foreground.

ccmon list [--all] [--json] List monitored sessions (one line each).
ccmon tail [<session_id>] Stream events live (polls /events).

ccmon approvals [--json] List pending permission requests.
ccmon approve <id-prefix> Approve a request (8-char prefix is enough).
ccmon deny <id-prefix> [-m "reason"] [--interrupt]
Deny a request; optional message + interrupt flag.

ccmon summary <id-prefix> [--no-refresh]
Print the smart summary of a session
(uses claude -p; ~10–30 s on first call).

Install / lifecycle

ccmon install

Merges entries into ~/.claude/settings.json. Existing user hooks are preserved. Each ccmon entry is tagged "_ccmon": true.

FlagEffect
--no-approvalSkip the blocking PermissionRequest hook. Event hooks are still installed.
--settings <path>Target a non-default settings file.

ccmon uninstall

Removes only entries tagged "_ccmon": true.

ccmon doctor

One-shot health check of daemon, settings, and binaries. See Configuration → Health check for the expected output.

ccmon daemon

Runs the daemon in the foreground. Useful for development and one-off runs; for production use the systemd unit (see Running the daemon).

Sessions

ccmon list

Lists monitored sessions, one line each.

FlagEffect
--allInclude ended sessions, not just active ones.
--jsonMachine-readable output for scripts.

ccmon tail [<session_id>]

Streams events live (polls /events). With no argument, tails all sessions. With a session ID prefix, scopes to one session.

Approvals

ccmon approvals [--json]

Lists pending permission requests.

ccmon approve <id-prefix>

Approves a request. An 8-character prefix is enough — the daemon disambiguates.

ccmon deny <id-prefix> [-m "reason"] [--interrupt]

Denies a request. The optional -m message is delivered back to the agent. --interrupt also sends a session interrupt so the agent stops cleanly instead of replanning around the deny.

Summaries

ccmon summary <id-prefix>

Prints a smart summary of a session. Uses claude -p under the hood (~10–30 s on first call, then cached).

FlagEffect
--no-refreshPrint the cached summary if any; don't trigger a new claude -p call.

Examples

# All running sessions, refreshed view:
ccmon list

# What is session abc12345 doing right now?
ccmon summary abc12345

# An agent is paused waiting for permission — approve from this shell:
ccmon approvals
ccmon approve abc12345

# Tail live events from one session only:
ccmon tail abc12345

# Deny with a message and interrupt the agent:
ccmon deny abc12345 -m "writes outside project" --interrupt