Permissions

Three permissions, nested, so that looking is separable from changing.

PermissionHandleAllows
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 leadsholmes: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.