Requisiti per autorizzazioni stabili
- Stesso percorso: esegui l’app da una posizione fissa (per OpenClaw,
dist/OpenClaw.app). - Stesso identificatore del bundle: cambiare l’ID del bundle crea una nuova identità di autorizzazione.
- App firmata: le build non firmate o firmate ad hoc non mantengono le autorizzazioni.
- Firma coerente: usa un vero certificato Apple Development o Developer ID in modo che la firma resti stabile tra le ricompilazioni.
Concessioni di Accessibilità per runtime Node e CLI
Preferisci concedere Accessibilità a OpenClaw.app, Peekaboo.app o a un altro helper firmato con il proprio identificatore del bundle invece che a un binarionode generico.
macOS TCC concede Accessibilità all’identità del codice del processo che vede. Se un
flusso di lavoro Homebrew, nvm, pnpm o npm fa sì che un eseguibile node condiviso
riceva Accessibilità, qualsiasi pacchetto JavaScript avviato tramite quello stesso
eseguibile può ereditare privilegi di automazione GUI.
Considera una voce node in Impostazioni di Sistema come un’autorizzazione ampia per quel runtime Node,
non come un’autorizzazione per un singolo pacchetto npm. Evita di concedere Accessibilità a
node a meno che tu non consideri attendibili ogni script e pacchetto avviati tramite quella esatta
installazione di Node.
Se hai concesso accidentalmente Accessibilità a node, rimuovi quella voce da
Impostazioni di Sistema -> Privacy e sicurezza -> Accessibilità. Poi concedila all’app o
all’helper firmato che deve possedere l’automazione dell’interfaccia utente.
Checklist di ripristino quando le richieste scompaiono
- Chiudi l’app.
- Rimuovi la voce dell’app in Impostazioni di Sistema -> Privacy e sicurezza.
- Riavvia l’app dallo stesso percorso e concedi di nuovo le autorizzazioni.
- Se la richiesta continua a non comparire, reimposta le voci TCC con
tccutile riprova. - Alcune autorizzazioni ricompaiono solo dopo un riavvio completo di macOS.
Autorizzazioni per file e cartelle (Scrivania/Documenti/Download)
macOS può anche proteggere Scrivania, Documenti e Download per processi da terminale/in background. Se le letture dei file o gli elenchi delle directory si bloccano, concedi l’accesso allo stesso contesto di processo che esegue le operazioni sui file (per esempio Terminal/iTerm, app avviata da LaunchAgent o processo SSH). Soluzione alternativa: sposta i file nello spazio di lavoro di OpenClaw (~/.openclaw/workspace) se vuoi evitare concessioni per singola cartella.
Se stai testando le autorizzazioni, firma sempre con un certificato reale. Le build ad hoc
sono accettabili solo per esecuzioni locali rapide in cui le autorizzazioni non contano.