{ "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": [] }