← All work

Hermes: a multi-agent security review assistant in Slack

One Slack entry point and one orchestrator route security reviews to specialist reviewer skills and return an evidence-based report.

Problem

Security teams get review requests in chat all the time: a Terraform file, a SaaS posture export, a vendor SOC 2 packet, an architecture diagram, a folder of audit evidence. One general-purpose prompt handles these badly. It mixes finding problems, mapping them to compliance frameworks and proposing fixes, so it can force irrelevant controls onto an artifact or fix problems nobody found.

We wanted first-pass reviews that are consistent, bounded and traceable to evidence in the artifact, with no person choosing the reviewer each time.

Approach

Hermes runs on Hermes Agent, an open-source, self-hosted agent framework. The review team is 11 skills with strictly separated duties:

Each reviewer emits one fixed table and nothing else. None proposes fixes. The remediation engineer fixes only the findings it is handed and may not run a fresh review. The compliance reviewer checks applicability first and answers “Cannot Assess” when the artifact gives no scope evidence.

How it works

One entry point, specialist reviewers

  1. Intake. security-lead reads the artifact and picks a route from a routing matrix. An AWS review goes to the AWS and compliance reviewers, a vendor review to the vendor and audit-evidence reviewers, an unclear request to architecture, security and compliance. It never dispatches every reviewer.
  2. Phase A. The orchestrator runs the selected reviewers in parallel and treats their tables as canonical.
  3. Phase B. Only concrete technical findings reach the remediation engineer, and only when the review type allows fixes. Vendor and audit-evidence reviews return follow-up questions and risk decision points instead.
  4. Report. The orchestrator saves a report with five fixed sections and replies in Slack with a summary and the full report attached, so it opens on a phone. Prose is Traditional Chinese; code and identifiers stay in English.

Two runtime details matter. Delegation depth must be at least 2, or the orchestrator is downgraded to a leaf worker and cannot launch reviewers. And because top-level delegation runs in the background, the phases live inside the orchestrator, not in separate chat turns.

Results

Lessons