Skip to content

CLAUDE_CLIENT_PRESENCE_FILE:マシン前にいるときのモバイルプッシュ通知を抑制する環境変数

原文(日本語に翻訳)

CLAUDE_CLIENT_PRESENCE_FILE 環境変数を追加:マーカーファイルを指定することで、マシンの前にいる間はモバイルプッシュ通知を抑制できます

原文(英語)

Added CLAUDE_CLIENT_PRESENCE_FILE environment variable: point it at a marker file to suppress mobile push notifications while you're at the machine

概要

CLAUDE_CLIENT_PRESENCE_FILE は、指定したマーカーファイルの存在有無によってモバイルプッシュ通知の送信を制御する環境変数です。このファイルが存在するとき、Claude Codeはユーザーがマシンの前にいると判断し、スマートフォンへのプッシュ通知を送信しません。スクリーンロック・アンロックのフックや在席管理スクリプトと組み合わせることで、実際に作業しているときだけ通知をオフにする「スマートな通知管理」が実現できます。

基本的な使い方

環境変数にマーカーファイルのパスを設定し、touch コマンドでファイルを作成するだけで通知が抑制されます。ファイルを削除すると通知が再開されます。

bash
# 環境変数を設定してマーカーファイルを作成する
export CLAUDE_CLIENT_PRESENCE_FILE=/tmp/claude-presence
touch /tmp/claude-presence
# → マーカーファイルが存在するため、モバイル通知は送信されない

# マシンを離れるときはファイルを削除する
rm /tmp/claude-presence
# → マーカーファイルが存在しないため、モバイル通知が再開される

.bashrc.zshrc に環境変数を永続設定しておくと、シェル起動時から常に有効になります。

bash
# ~/.bashrc または ~/.zshrc に追記
export CLAUDE_CLIENT_PRESENCE_FILE="$HOME/.local/share/claude/presence"

実践例

シェルスクリプトによる在席管理

手動でファイルを作成・削除するのが面倒な場合は、ヘルパースクリプトを用意すると便利です。

bash
#!/bin/bash
# ~/bin/claude-presence.sh

PRESENCE_FILE="${CLAUDE_CLIENT_PRESENCE_FILE:-/tmp/claude-presence}"

case "$1" in
  on)
    touch "$PRESENCE_FILE"
    echo "在席モード ON:モバイル通知を抑制します"
    ;;
  off)
    rm -f "$PRESENCE_FILE"
    echo "在席モード OFF:モバイル通知を再開します"
    ;;
  status)
    if [ -f "$PRESENCE_FILE" ]; then
      echo "在席モード:ON(通知抑制中)"
    else
      echo "在席モード:OFF(通知送信中)"
    fi
    ;;
  *)
    echo "使い方: $0 {on|off|status}"
    exit 1
    ;;
esac
bash
# 使い方
claude-presence.sh on     # 在席モード開始
claude-presence.sh off    # 在席モード終了
claude-presence.sh status # 現在の状態を確認

macOS のスクリーンロック/アンロックに連動させる

macOS では sleepwatcherlaunchd を使って、スクリーンロック時にファイルを削除し、アンロック時に作成するフックを設定できます。

bash
# sleepwatcher をインストール(Homebrew)
brew install sleepwatcher

# ~/.sleep スクリプト(スリープ・ロック時に実行)
cat > ~/.sleep <<'EOF'
#!/bin/bash
rm -f "${CLAUDE_CLIENT_PRESENCE_FILE:-/tmp/claude-presence}"
EOF
chmod +x ~/.sleep

# ~/.wakeup スクリプト(ウェイクアップ・アンロック時に実行)
cat > ~/.wakeup <<'EOF'
#!/bin/bash
touch "${CLAUDE_CLIENT_PRESENCE_FILE:-/tmp/claude-presence}"
EOF
chmod +x ~/.wakeup

# sleepwatcher をバックグラウンドサービスとして起動
brew services start sleepwatcher

Linux のスクリーンセーバー/ロック連動(GNOME)

GNOME 環境では dbus-monitor を使ってスクリーンロックイベントを監視できます。

bash
#!/bin/bash
# ~/bin/claude-presence-monitor.sh
# GNOME スクリーンロック連動スクリプト

PRESENCE_FILE="${CLAUDE_CLIENT_PRESENCE_FILE:-/tmp/claude-presence}"

# 起動時はマシン前にいると仮定してファイルを作成
touch "$PRESENCE_FILE"

# GNOME のスクリーンロックイベントを監視
dbus-monitor --session "type='signal',interface='org.gnome.ScreenSaver'" | \
while read -r line; do
  if echo "$line" | grep -q "boolean true"; then
    # ロック:マシンから離れた
    rm -f "$PRESENCE_FILE"
  elif echo "$line" | grep -q "boolean false"; then
    # アンロック:マシンに戻ってきた
    touch "$PRESENCE_FILE"
  fi
done
bash
# systemd ユーザーサービスとして登録する場合
mkdir -p ~/.config/systemd/user
cat > ~/.config/systemd/user/claude-presence.service <<'EOF'
[Unit]
Description=Claude Code Presence Monitor
After=graphical-session.target

[Service]
ExecStart=%h/bin/claude-presence-monitor.sh
Restart=on-failure
Environment=CLAUDE_CLIENT_PRESENCE_FILE=/tmp/claude-presence

[Install]
WantedBy=default.target
EOF

systemctl --user enable --now claude-presence.service

SSH セッション(リモートワーク)の在席管理

リモートマシンにSSHで接続して作業しているとき、自動的に在席フラグを管理する例です。

bash
# ~/.bashrc や ~/.zshrc に追記
# SSH ログイン時に在席フラグを立て、ログアウト時に削除する

export CLAUDE_CLIENT_PRESENCE_FILE="/tmp/claude-presence-$$"

# ログイン時にファイルを作成
touch "$CLAUDE_CLIENT_PRESENCE_FILE"

# ログアウト時にファイルを削除(trap を使用)
trap 'rm -f "$CLAUDE_CLIENT_PRESENCE_FILE"' EXIT

複数マシンを使う環境での運用

複数台のマシンでClaude Codeを使う場合、それぞれのマシンで独立してファイルを管理することで、現在操作しているマシンだけで通知を抑制できます。

bash
# 各マシンの ~/.bashrc に設定
# ホスト名を含めることでパスが衝突しない
export CLAUDE_CLIENT_PRESENCE_FILE="/tmp/claude-presence-$(hostname)"

# 作業開始時
touch "$CLAUDE_CLIENT_PRESENCE_FILE"

注意点

  • CLAUDE_CLIENT_PRESENCE_FILE に指定したファイルが 存在する ときのみ通知が抑制されます。ファイルの内容は問いません(空ファイルでも機能します)。
  • 環境変数が未設定の場合、この機能は動作せず、通知はデフォルトの設定に従います。
  • マーカーファイルのパスには /tmp など、再起動時に自動削除されるディレクトリを使うのが安全です。恒久的な場所を使う場合は、起動時の初期化処理を忘れずに設定してください。
  • この機能はモバイルへの プッシュ通知 を抑制するものであり、Claude Code 自体の動作には影響しません。タスクは通常どおり実行され続けます。
  • スクリプトで在席管理を自動化する場合、マシンがクラッシュしたりスクリプトが終了したりしたときにファイルが残ったままになる可能性があります。trap コマンドや再起動時の自動削除などで対処してください。
  • ファイルのパーミッションに注意してください。他のユーザーから読み書きされないよう、適切なパーミッション(600 など)を設定することをお勧めします。

関連情報