mirror of
https://github.com/wu736139669/hapi.git
synced 2026-11-04 00:01:41 +00:00
A fixed path plus a pinned identity does not by itself keep TCC grants valid: each grant stores a code requirement, and a grant created while the binary was ad-hoc signed stays pinned to that build's cdhash. Replacing the binary at the fixed path then matches nothing, and since a record exists macOS never prompts again - it denies silently. Processes already running keep the cached allow until macOS re-evaluates them, then lose ~/Documents mid-life; new processes are unaffected. That is exactly how long-running sessions stopped answering with "OpenCode service failure" / "getcwd: Operation not permitted" while fresh sessions on the same machine worked. AGENTS.md gets the short version; docs/local-deployment.md gets the csreq check (identity-based vs cdhash), the normal re-grant through System Settings, and the fallback used on mini on 2026-09-17 (delete the stale row, restart tccd, insert a record copied from a machine with the same signing certificate), including the row shape and the other two services that rot with it.