Zeph Docs
Claude Code Plugin

Mute & Push Mode

Dial how much Zeph pushes, per project or machine-wide.

Pushes fire for every Claude Code session, not only ones launched with zeph cc — that command is the remote-control bridge, not the notification switch.

/zeph-mute      Disable all notifications for this project
/zeph-unmute    Re-enable them
/zeph-status    Show current state (mute + push mode, and where it came from)

/zeph-quiet     Only high-priority pushes reach you  ← the default
/zeph-loud      Push on every turn
/zeph-normal    Push on every turn that did real work, quiet on reads

Quiet is the default

An install with no dial pushes only on high-priority signals, so a long session does not turn into a stream of per-turn notifications.

What still reaches you either way:

  • Questions. The agent asking you something is never suppressed.
  • The completion push when a session has been idle for five minutes.

If you would rather hear about every working turn, run /zeph-normal — that was the old default.

Machine-wide defaults

Add --global to any of the three dials to set the default for every project that has no dial of its own. A per-project dial always outranks it, so /zeph-normal opts a single project back into per-turn pushes and /zeph-normal --global does it everywhere.

Where the state lives

State lives in a file under ${XDG_STATE_HOME:-~/.local/state}/zeph, keyed by project directory, with pushmode-default holding the global one. It survives reboots and new sessions until you undo it.

Mute silences both hooks and CLI calls and overrides any push mode. Mute stays per-project by design, since a global mute could never be lifted for a single project.

The full resolution order, including the legacy /tmp locations and what an empty dial file means, is documented under CLI & SDK → Command Reference, in the same section.

On this page