{
  "title": "macOS permissions (TCC)",
  "content": "macOS permission grants are fragile. TCC associates a permission grant with the\napp's code signature, bundle identifier, and on-disk path. If any of those change,\nmacOS treats the app as new and may drop or hide prompts.\n\n## Requirements for stable permissions\n\n* Same path: run the app from a fixed location (for OpenClaw, `dist/OpenClaw.app`).\n* Same bundle identifier: changing the bundle ID creates a new permission identity.\n* Signed app: unsigned or ad-hoc signed builds do not persist permissions.\n* Consistent signature: use a real Apple Development or Developer ID certificate\n  so the signature stays stable across rebuilds.\n\nAd-hoc signatures generate a new identity every build. macOS will forget previous\ngrants, and prompts can disappear entirely until the stale entries are cleared.\n\n## Recovery checklist when prompts disappear\n\n1. Quit the app.\n2. Remove the app entry in System Settings -> Privacy & Security.\n3. Relaunch the app from the same path and re-grant permissions.\n4. If the prompt still does not appear, reset TCC entries with `tccutil` and try again.\n5. Some permissions only reappear after a full macOS restart.\n\nExample resets (replace bundle ID as needed):\n\nIf you are testing permissions, always sign with a real certificate. Ad-hoc\nbuilds are only acceptable for quick local runs where permissions do not matter.",
  "code_samples": [],
  "headings": [
    {
      "level": "h2",
      "text": "Requirements for stable permissions",
      "id": "requirements-for-stable-permissions"
    },
    {
      "level": "h2",
      "text": "Recovery checklist when prompts disappear",
      "id": "recovery-checklist-when-prompts-disappear"
    }
  ],
  "url": "llms-txt#macos-permissions-(tcc)",
  "links": []
}