Permissions
Three permissions, nested, so that looking is separable from changing.
| Permission | Handle | Allows |
|---|---|---|
| Inspect the search index | holmes:view |
The Overview, the search console, element detail views, and reading stored audit reports. Entirely read-only. |
| Run audits | holmes:audit |
Starting an audit and queueing a deep one. Nested under “inspect”. |
| Reindex elements and delete index rows | holmes:sync |
Everything that changes the index: applying fixes, reindexing by element or source, deleting orphaned rows, and draining the deferred queue. Nested under “inspect”. |
Because the last two are nested, granting either implies the first. A user with only holmes:view sees the Sync screen’s information but cannot act on it, and audit reports show findings without their fix buttons.
Settings are admin-only
The Settings screen is not permission-controlled; it requires an admin account, like other plugin settings in Craft. On an install with allowAdminChanges off, settings are read-only there and should be set in config/holmes.php.
Console commands don’t check permissions
Anything that can run php craft can run every Holmes command, including holmes/sync/all. That is normal for Craft console commands — shell access is the permission — but it is worth knowing before wiring a command into something with a web trigger.
A sensible split
On a team site, a workable arrangement is:
- Editors — nothing. Holmes answers questions editors do not usually ask.
- Content leads —
holmes:view, so “why can’t I find this?” can be answered without a developer. - Developers — all three.
If you would rather nobody could reindex the whole site from the control panel on production regardless of permissions, Sync::EVENT_BEFORE_SYNC is cancellable. See Extending.