The first post-upgrade check on Nextcloud could run nothing: every hl exec, even `id`, was refused by the allowlist (only the three db:add-* commands were on it, and the model had no way to know). `hl exec-rules` (route /agent/exec-rules) lists the exact commands the session's project accepts, and the repair and post-upgrade prompts send the model there first. The allowlist gets the read-only receipt check of the skill: occ status (with and without --output=json), occ config:app:get core lastcron, occ app:list and pidof crond in the cron service. A test holds the file to this exact list. No new dependency. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>