How Hermes Agent handles this
You are talking to Hermes Agent, which keeps running between your messages, and the shop site needs Redis behind its object cache. Say: set up Redis for shop, test before you enable. Hermes Agent calls get_object_cache_status through xSpeed Hub and reports whether the object-cache.php drop-in is installed, which backend is configured and its stats. That read does not show whether Redis answers, so it is never the last step before the toggle.
The next call is test_object_cache, where the site's plugin connects to Redis and reads and writes a probe value. A failure returns the server's own words: wrong password, refused connection or permission denied. On a host that namespaces Redis, permission denied can mean the cache key prefix does not match the one the host assigned. Fix that, test again, and only then call toggle_object_cache with enabled set to true, which installs the drop-in and starts routing WordPress's object cache through Redis. Hermes Agent adds no approval prompt for a server at its default trust level, full. Mark xspeedhub as trust: untrusted and it asks before every Hub call, reads included, because the Hub's tools carry no read-only hint.
Hermes Agent documents cron jobs, and that suits this job after the setup. A Redis that stops answering once the drop-in is installed does not break the site, since the drop-in falls back to WordPress's own cache and marks itself degraded, but requests can wait up to the connection timeout. A cron job that calls get_object_cache_status and test_object_cache and reports failures catches it early. The Hub has no scheduler for agent prompts, so the timer is Hermes Agent's. Keep the cron job to those two reads, and do the toggle in a conversation where you can see it.
Set up Hermes Agent once
Already connected? Skip to the prompts. Alternatives and troubleshooting are on the Hermes Agent guide.
1Put your sites in xSpeed Hub
Sign in at app.xspeedcache.com with Google or email; the Hub is free and has no site cap. Then connect each WordPress site from its own dashboard: click Connect Hub in the xSpeed Cache top bar, then Connect via xSpeed Hub. Each site needs the free xSpeed Cache plugin.
2Add xSpeed Hub to config.yaml
Add this entry under mcp_servers. auth: oauth tells Hermes to handle discovery, dynamic client registration, PKCE and token refresh itself. If you edit the file from inside a running session, Hermes reloads its MCP connections with a 30 second timeout, which is too short for a browser sign-in, so finish the entry and then run the login in the next step.
mcp_servers:
xspeedhub:
url: "https://app.xspeedcache.com/xspeed/mcp"
auth: oauth 3Sign in with hermes mcp login
Run this once. Hermes prints an authorization URL, opens your browser where it can, and waits for the callback on a local loopback port. Sign in to xSpeed Hub and approve. There is no token to paste; Hermes caches the credentials it receives under ~/.hermes/mcp-tokens. On a remote host, paste the redirect URL back into the terminal when Hermes asks, or forward the callback port over SSH.
hermes mcp login xspeedhub hermes mcp test xspeedhub
Full Hermes Agent setup, sign-in options and FAQ
Before you send a prompt that changes something
Reads change nothing on your sites, though contact_support emails xSpeed support. Writes run once your connection allows them, so your client's approval prompt and a read-only connection (the token's Read-only everywhere switch, or a Viewer sign-in) are the gates that matter. A Hermes server entry has a trust setting. The default, full, adds no approval prompt for that server's tools, and the approvals setting covers dangerous shell commands, not MCP tools. Set trust: untrusted on the xspeedhub entry and Hermes asks before every call to a tool that lacks a readOnlyHint of true. The Hub does not mark its tools that way, so with untrusted every Hub call asks, reads included. To remove writes instead of prompting, set tools.include on the entry to the read tools; the filter takes globs and include wins over exclude. The Hub itself has no confirmation step.
What do I ask?
Three prompts written for Hermes Agent. More for this job are below.
Use xSpeed Hub to set up Redis for shop. Run the status and the connection test, and wait for my go before enabling.
Create a cron job that asks xSpeed Hub to run test_object_cache on shop each week and tells me if it fails.
The xSpeed Hub Redis test says permission denied on blog. Explain what that usually means and what I should check.
What happens, step by step
A persistent object cache keeps database query results in Redis or Memcached instead of rebuilding them on every request. Through xSpeed Hub an agent can read the state of the cache, probe the cache server, switch the cache on or off, and flush it. The Hub tells the agent to run the probe first, because the status call alone does not prove the server is reachable.
01
Read the current state
get_object_cache_status reports whether the object-cache.php drop-in is installed, which backend is configured, Redis or Memcached, and its stats. It does not prove the server answers, so a clean status is not a green light.
02
Test the connection first
test_object_cache opens a live connection to the configured server and does a read and write probe with the settings saved on the site. A failure comes back with the server's own reason, such as a wrong password, a refused connection or a permission error. The Hub tells the agent to run this before toggle_object_cache.
03
Fix the connection if the test fails
get_settings reads the object-cache module, with secrets masked. update_settings changes it, for example the host or port. On a managed host that defines these values in wp-config.php, the fields are read-only and a write that tries to change one is refused with the name of the constant. For a host that wants the constants pasted, get_object_cache_status with detail set to snippet returns the wp-config.php block.
04
Turn it on
toggle_object_cache with enabled true makes the site test the connection again, write the connection constants into wp-config.php and install the object-cache.php drop-in. If the test fails, it stops with "Could not enable" and writes nothing. If wp-config.php is not writable, the drop-in goes in and the reply tells you to add the snippet by hand. The Hub tells the agent to briefly confirm intent first.
05
Check it took
The drop-in loads on the next request, so the agent reads get_object_cache_status again after a page load and runs test_object_cache once more. The status also warns when the cache connects but refuses writes, so a connected cache that stores nothing does not pass as healthy.
06
Flush when stale data survives
flush_object_cache empties the persistent object cache. Use it when old options, transients or query results outlive a page cache purge. It does not touch the page cache; purge_cache does that.
Reference
| Read tools | get_object_cache_status and test_object_cache, both work on a read-only connection |
|---|---|
| Write tools | toggle_object_cache (enabled true or false) and flush_object_cache |
| Backends | Redis or Memcached |
| Status detail | status (default) or snippet, the wp-config.php constants block |
| What status proves | Drop-in installed, backend configured, stats. Not that the server is reachable |
| What the test proves | A live connect and a read and write probe on the saved settings, with the server's own error on failure |
| Enable does | Tests the connection, writes connection constants to wp-config.php, installs the object-cache.php drop-in |
| Disable does | Removes xSpeed's drop-in and its wp-config.php block; a drop-in owned by another plugin is left alone |
| Connection timeout | 1 second by default, set in the object-cache module |
| Settings module | object-cache, for get_settings and update_settings |
| Every site at once | None of these tools accept site: "all"; one site per call |
| Confirmation | None on the Hub; your client's prompt is the gate |
Rules worth keeping
- Test before you toggle. The Hub tells the agent to run test_object_cache first, because a cache server that does not answer slows every request while the page cache still looks healthy.
- Keep the Redis password out of the chat. get_settings masks it, but the wp-config.php snippet is built from the saved settings and can include a saved password. Set secrets in wp-config.php or in the xSpeed panel.
- toggle_object_cache and flush_object_cache are write tools. The Hub tells the agent to briefly confirm intent for the object-cache toggles, but that is guidance, not a lock. Your client's approval prompt and a read-only grant are the gates that matter. A read-only grant means the connection token with Read-only everywhere on, or a Viewer member's sign-in; an OAuth sign-in gets the scopes the client asks for, which are read and write by default.
- If another plugin owns the object-cache.php drop-in, turn its object cache off in that plugin. xSpeed leaves a drop-in it did not install in place when you disable.
- A flush clears cached data, so the next requests rebuild it from the database and the site is briefly slower. Flush one site, then check it, before you repeat it.
Good to know with Hermes Agent
Put the recurring check in a cron job, because Redis can stop answering after the drop-in is in place. Keep that job to get_object_cache_status and test_object_cache, and set tools.include on the xspeedhub entry to those two names if you want the write tools left out. A scheduled run has nobody to answer a prompt, so rely on that include list or the connection token with Read-only everywhere on, not on trust: untrusted. When it reports a failure, return to a live conversation and decide whether to fix Redis or call toggle_object_cache with enabled set to false, instead of letting the job write on its own.
More prompts for this job
They work in any client connected to xSpeed Hub.
Using xSpeed Hub, is a persistent object cache running on shop, and which backend does it use?
Use xSpeed Hub to test whether Redis is reachable from shop. Do not change anything.
Shop is slow in wp-admin. Use xSpeed Hub to check the object cache before anything else.
With xSpeed Hub, test Redis on shop, and if it passes, turn the object cache on.
Ask xSpeed Hub for the wp-config.php object cache snippet for docs.
Use xSpeed Hub to flush the object cache on blog. Old options survive a page cache purge.
With xSpeed Hub, turn the object cache off on shop and confirm the drop-in is gone.
Frequently asked questions
Keep going
Set up Redis object cache with other agents
More with Hermes Agent
Documentation
- How to enable Redis or Memcached
- How to enable Page Cache
- Common problems and troubleshooting
- How to write prompts for xSpeed Hub
- Hermes Agent + xSpeed
- Every AI agent that works with xSpeed
From the blog