コンテンツにスキップ

launchd Full Disk Access 設定手順書

目的

com.kudo.skills-snapshot LaunchAgent(毎日 03:30 起動)が、Google Drive 同期フォルダ(~/Library/CloudStorage/.../working/claude/kudo-skill-sync/skills/)に rsync で書き込めるようにする。

症状(修復前)

~/.claude/skills.git-mirror/snapshot.log に以下のエラーが残っていた:

━━━ Cloud mirror to GoogleDrive ━━━
rsync(54732): error: /Users/kudotakuma/Library/CloudStorage/GoogleDrive-.../working/claude/kudo-skill-sync/skills/: open: Operation not permitted
rsync(54730): error: unexpected end of file

Operation not permittedmacOS Privacy(TCC)保護による拒否。Terminal フォアグラウンド(工藤さんが直接コマンドを叩く場面)からは Drive に書ける(Stage 0/1-A で実証)が、launchd から起動された bash プロセスは「フルディスクアクセス」が付与されていない。

修復対象(3 アプローチ・推奨 A)

A)スクリプト本体を Full Disk Access に追加(推奨

副作用が最小。auto-snapshot.sh 本体だけを許可。

  1. システム設定 を開く
  2. プライバシーとセキュリティフルディスクアクセス
  3. 鍵アイコンをクリック → Touch ID または管理者パスワードで認証
  4. リスト下の +(プラス) をクリック
  5. ファイル選択ダイアログで Cmd+Shift+G(ファイルパスを直接入力するショートカット)
  6. 以下のパスを貼り付け → 移動
    /Users/kudotakuma/.claude/skills.git-mirror/auto-snapshot.sh
    
  7. auto-snapshot.sh を選択 → 開く
  8. リストに auto-snapshot.sh が追加され、トグルが ON になっていることを確認

B)/bin/bash を Full Disk Access に追加(最後の手段)

副作用が大きい(bash で起動される全てのスクリプトが FDA を持つ)。A が機能しない場合の予備。

  1. システム設定 → プライバシーとセキュリティ → フルディスクアクセス
  2. 鍵 → 認証 → +
  3. Cmd+Shift+G/bin/bash → 移動 → 開く

C)launchd 経由で「権限要求ダイアログ」を発生させてから許可(簡易)

  1. ターミナルで以下を実行(手動で LaunchAgent を発火):
    launchctl kickstart gui/$(id -u)/com.kudo.skills-snapshot
    
  2. macOS が許可ダイアログを表示することがある(環境による)→ 許可 をクリック
  3. 表示されない場合は A に切り替え

設定後の検証(必ず実行

設定変更だけでは反映されないことがあるため、必ず手動トリガーで確認:

# 1. 手動トリガー
launchctl kickstart gui/$(id -u)/com.kudo.skills-snapshot

# 2. ログ確認(数秒待ってから)
tail -30 ~/.claude/skills.git-mirror/snapshot.log

ログに以下が出ていれば成功:

━━━ Cloud mirror to GoogleDrive ━━━
Cloud mirror 2026-05-XX → /Users/kudotakuma/Library/CloudStorage/.../skills

失敗時のログ(再発時):

rsync(...): error: ...: open: Operation not permitted
rsync(...): error: unexpected end of file

→ 再発時は A → B → C の順で試す。

関連事項

  • Stage 1-A2 Problem 1 で、欠落していた 3 件(kudo-ai-error-watchlistkudo-mac-health-checkkudo-shared-storage-protocol)は Code が 手動 rsync で当座救済済み(2026-05-18)
  • 本設定が完了するまでは、auto-snapshot.sh の Cloud mirror 部分は失敗し続ける(local snapshot は成功)
  • 本設定完了後、auto-snapshot.sh は毎日 03:30 に Drive まで完全同期する
  • 副次効果として regenerate_ssot_map.py の入力(Drive canonical)も常に最新になる

トラブルシュート

A を設定したのに Operation not permitted が再発

  • macOS Sonoma / Sequoia / Tahoe では一度ログアウト・再ログインで TCC キャッシュをクリアすると反映されることがある
  • tccutil reset SystemPolicyAllFiles com.kudo.skills-snapshot で TCC をリセットしてから A を再設定

auto-snapshot.sh パスが Finder で見つからない

  • .claude は隠しフォルダ。Finder で Cmd+Shift+. で隠しフォルダ表示
  • もしくは Cmd+Shift+G で ~/.claude/skills.git-mirror/ を直接入力

LaunchAgent が動いていない疑い

launchctl list | grep skills-snapshot

- または 0 が表示されれば登録済み。表示されない場合:

launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.kudo.skills-snapshot.plist

で再登録。