Hermes Agent + xCloud

Secure sites and servers with Hermes Agent on xCloud

Securing sites and servers with Hermes Agent means messaging an agent that remembers your infrastructure, asking it to read xCloud's vulnerability findings and server perimeter, and letting it repeat that review on a Hermes cron schedule while you are away.

  • Skill: xcloud:servers
  • Toolsets: vulnerabilities, servers, sites, wordpress-actions
  • Free with every xCloud account

YouMonday check: vulnerabilities and bans, report only.

vulnerabilities_indexread-only

servers_fail2ban_banned-ipsread-only

Agentshop.example.com has 1 high finding in a form plugin, up from none last week. Frankfurt has 14 banned IPs, none of them your office address. I changed nothing. Want a backup and a plugin update proposal for the shop?

YouPropose the update, don't run it yet.

. Keep a human in the loop: xCloud stops and asks before anything that creates, deploys, updates, reboots, deletes or buys.

Setup

How Do You Set Up Hermes Agent to Secure sites and servers on xCloud?

Connect Hermes Agent once; every job on this account uses the same connection. Then ask in plain words.

  1. Add the xCloud MCP server

    Add this under mcp_servers in ~/.hermes/config.yaml. If the file already has an mcp_servers block, add only the xcloud entry. Then start a new Hermes session, or run /reload-mcp in the one that is open.

    YAML
    mcp_servers:
      xcloud:
        url: "https://app.xcloud.host/mcp"
        auth: oauth
  2. Authorize xCloud

    On first connect Hermes prints an authorize URL and waits for the sign-in. Run this command to start it yourself or to re-authorize later. On the xCloud approval screen tick the teams and choose Read-only or Full access. Hermes caches the tokens in ~/.hermes/mcp-tokens/xcloud.json and reuses them on later runs.

    Terminal
    hermes mcp login xcloud
  3. No browser? Use an API key

    For a server with no browser, create a token with the mcp:invoke scope plus the read abilities for the areas it will use (read:servers and read:sites, with read:billing and read:addons for billing and add-on tools) and the matching write: abilities if it should change things in Settings, Developers, API Tokens and send it as a header in place of auth: oauth. Keep ~/.hermes/config.yaml out of version control when it holds a token.

    YAML
    mcp_servers:
      xcloud:
        url: "https://app.xcloud.host/mcp"
        headers:
          Authorization: "Bearer YOUR_TOKEN"
  4. Check it worked

    Then ask Hermes Agent for the job itself, for example:

    Prompt
    Every Monday at 8am, roll up vulnerabilities across all my sites, list Fail2Ban bans on each server and message me a summary. Change nothing.

In practice

How Does Security Work from Hermes Agent?

Hermes is not a window you open for one task. It runs as an agent with memory, reachable from its terminal interface or, through the gateway, from Telegram, Slack and Discord, so the natural place to start a security review is a message on your phone: which of my sites have open vulnerabilities? Hermes calls vulnerabilities_index, the team-wide rollup, and replies in the chat with the worst sites first and the plugin each finding names. Because it keeps memory across sessions, you can tell it once that the Frankfurt server holds production and that 203.0.113.10 is your office address. Later questions such as is anything banned that should not be can lean on that context instead of starting from nothing.

The recurring part is what sets Hermes apart for this job. A hermes cron job runs in a fresh agent session and delivers its result to a chat, so a Monday morning sweep can read the rollup, pull the counts by severity with sites_vulnerabilities_count for any site that changed, list the banned IPs from servers_fail2ban_banned-ips and report the SSH restriction state. Hermes reuses the tokens it cached in ~/.hermes/mcp-tokens/xcloud.json for scheduled runs, so the access level you chose at sign-in applies to them too. Choose Read-only if you want the schedule to be unable to change anything, and keep the prompt to reads and a written report. Nobody watches a scheduled run, and anything that bans an address, edits a rule or updates a plugin stops for confirmation anyway.

Acting on a result happens in the same chat. You reply that the contact form finding is a false positive, Hermes asks for the reason it will record, then calls sites_vulnerabilities_ignore, and it tells you how to restore the finding later. You say ban 198.51.100.7, and Hermes names the server and the effect and waits for a yes before it calls servers_fail2ban_ban. A yes typed into Telegram is the approval. Anything that lives only in the dashboard, such as the AI bot blocker and the 8G switch, comes back as a dashboard path, never as a claim that something changed.

Hermes Agent specific: Hermes reads mcp_servers when a session starts, so after you edit ~/.hermes/config.yaml, start a new session or run /reload-mcp, or the security tools will not appear in the chat. If the token lapses or you change the access level, run hermes mcp login xcloud again before the next scheduled run, otherwise Monday's report arrives as an authorization error instead of findings. Write each scheduled prompt out in full, naming the servers and the report you want, so the job never depends on what an earlier chat happened to remember. And keep ban and rule changes out of cron entirely: they belong in a conversation where you can read the effect and answer yes.

What xCloud does for security

xCloud reads vulnerability findings for one site or across your whole team, starts rescans and ignores or restores a finding. On servers it manages firewall rules, Fail2Ban bans, the SSH restriction state and sudo users. Protections such as the AI bot blocker, the 7G and 8G firewall and per-site IP rules stay dashboard switches.

  1. Start with the team-wide rollup. For a fleet question the agent reads the vulnerability rollup across every site on the team in one call and sorts it worst first. For one site it reads the findings and the counts by severity instead.
  2. Rescan and triage findings. A rescan runs without a confirmation stop and finishes asynchronously, so the agent checks the count again afterwards. Findings carry a severity and a source, and severity is the triage key. A false positive can be ignored with a reason and restored later.
  3. Fix what the finding points to. Most findings are fixed by updating a plugin, a theme or WordPress core. The agent proposes the updates, takes a backup first if you want one, and waits for your approval, because updating plugins or themes always stops for confirmation.
  4. Review the server's perimeter. The agent reads firewall rules, the Fail2Ban banned IP list, the SSH restriction status and the sudo users. It can add or disable a rule, ban or unban an address and whitelist xCloud's own IPs after you confirm the server and the effect.
  5. Report what is dashboard-only. AI bot blocking, the 7G and 8G firewall and a single site's IP allow and block list are dashboard switches. The agent reads what it can, such as the 7G and 8G logs, and gives you the dashboard path and the site's dashboard link for the rest.

Reference

Security Settings and Limits on xCloud

The facts Hermes Agent works within when it secures sites and servers. Where a row names the dashboard, that step stays yours to take there.

Setting or limitWhat applies
Vulnerability findingsPer-site list and counts by severity (critical, high, medium, low), plus a team-wide rollup across every site you can reach
RescansTriggering a rescan is a routine action that runs without a confirmation stop. It is asynchronous, so the agent polls the count or the site events
Ignore and restoreA finding can be ignored with a reason and un-ignored later. Both are changes to the finding, not to the site
Firewall rulesList, create, enable, disable and delete server rules by name, protocol (tcp or udp), traffic (allow or deny), port and optional source IP
Fail2BanList banned IPs, ban one or more addresses and unban an address. Adding addresses to Fail2Ban's own ignore list is an SSH step described in the Fail2Ban guide
WhitelistingxCloud's infrastructure IPs and the caller's IP can be whitelisted. The SSH restriction status says whether SSH is limited to trusted addresses
Sudo usersList, create or update, and delete OS-level privileged accounts. Private keys are never returned, and a temporary account is available for short jobs
7G and 8G firewallSwitched on in the dashboard. Their logs are readable through the nginx log type of the site's access log read
AI bot blockerA dashboard toggle: Site, Tools, Nginx and Security on Nginx, Tools, Security on OpenLiteSpeed
Per-site IP rulesDashboard-only: Site, Tools, IP Management. The API lists a site's rules but does not change them; server-wide blocks are on the API
Automated security updatesxCloud installs security updates on servers it provisions, and Automatic Reboot restarts the server only when a reboot is required. Both are configured in the dashboard
Security headersThe API lists a site's custom Nginx configuration. Adding headers is a dashboard or SSH step, described in the security headers guide

Rules Hermes Agent has to follow

  • Firewall, Fail2Ban and sudo-user changes name the exact server and the effect before they run, and they wait for your yes. Locking out SSH is the risk the agent explains first.
  • The agent never disables SSH or a database service to tidy up a ruleset, and it does not delete the default SSH rule on its own.
  • Updating a plugin or theme to fix a finding stops for your approval, and the agent offers a backup first.
  • Ignoring a finding needs a reason you give. The agent records it and tells you how to restore it.
  • AI bot blocking, the 7G and 8G firewall, per-site IP rules and automated update settings are dashboard steps. The agent says so, gives the path and the dashboard link, and never claims it changed them.
  • A temporary sudo user is for a specific job and is removed when the job ends.

Example prompts

What Can You Ask Hermes Agent to Do for Security?

Type these as written and swap in your own repository, site and server names. Reads and routine actions such as backups, cache purges, PageSpeed scans and vulnerability scans run straight away; creating, deploying, updating, rebooting, deleting, buying or starting a broken-link scan stops and asks first.

Prompt
Every Monday at 8am, roll up vulnerabilities across all my sites, list Fail2Ban bans on each server and message me a summary. Change nothing.
Prompt
Which of my sites have critical or high findings right now? Give me the plugin names and say what would fix each.
Prompt
Ban 198.51.100.7 on the Frankfurt server, but tell me what the ban does before you run it.
Prompt
Show the vulnerability count for every site on this team, sorted worst first, and name the top three findings.
Prompt
Run a vulnerability scan on the shop site and tell me what it finds.
Prompt
List the findings on the blog site and ignore the false positive in the contact form plugin, with the reason.
Prompt
Update every plugin on the shop site, then run a vulnerability scan, and stop if anything is still open.
Prompt
List the firewall rules on the Frankfurt server and tell me whether SSH is restricted to trusted IPs.
Prompt
Show the IPs Fail2Ban has banned on the Frankfurt server, and unban 203.0.113.10.
Prompt
Whitelist the xCloud IPs on the Frankfurt server.
Prompt
Which sudo users exist on the Frankfurt server? Flag any that look temporary or unused.

Hermes Agent and Security: Frequently Asked Questions

What people ask before they let Hermes Agent secure sites and servers through xCloud.

Can Hermes Agent run a weekly vulnerability check on my xCloud sites?

Yes. Create a hermes cron job whose prompt asks it to read the team-wide vulnerability rollup and list the Fail2Ban bans, and have it report only. The job runs in a fresh session and delivers the summary to your chat, using the tokens Hermes cached when you signed in.

Will Hermes Agent ban an IP from a scheduled job?

It should not, and xCloud will not let it do so silently. Banning an address, creating a rule and ignoring a finding all stop for confirmation. Keep scheduled prompts to reads, and choose Read-only access at sign-in if you want that to be a hard limit.

Can an agent show vulnerabilities across all my sites at once?

Yes. xCloud has a team-wide rollup that lists findings for every site you can reach, which the agent sorts worst first. For one site it reads the findings and the counts by severity, and it can start a rescan.

Can the agent ban an IP address on my server?

Yes. It can ban addresses in Fail2Ban, list the banned IPs and unban one, and it can create, disable and delete server firewall rules. It confirms the server and the effect first, so you do not lock yourself out.

Can the agent turn on the 8G firewall or the AI bot blocker?

No. Both are dashboard switches. The agent can read the 7G and 8G firewall logs through the site's nginx logs, and it tells you where the switches are: the site's Tools section. It does not claim to have changed them.

Can the agent block an IP for just one site?

Not from here. Per-site IP allow and block lists are managed in the dashboard under Site, Tools, IP Management, and the agent can only list what is there. Server-wide blocks, through firewall rules and Fail2Ban, are on the API.

Does the agent fix a vulnerability on its own?

No. It reports the finding and proposes the update that remediates it, usually a plugin, theme or core update. Updates always stop for your approval, and the agent can take a backup first and rescan afterwards to confirm the finding is gone.

Other agents

Security with Other Agents

The same job, the same xCloud tools, a guide for each client.

Run Your Hosting from Hermes Agent

xCloud MCP, the Agent Skills and the Public API are free with every account. Connect once and ask.