Skip to main content
Tolmo Red Agent
Red Team Agent tests your authorized domains the way an attacker would, and reports only what it could actually reproduce — so you can fix real vulnerabilities before somebody else finds them. This page covers the current release: how to authorize what it may test, when it runs, how to read what it finds, and how to act on a finding without leaving the page.

What Red Team Agent does

Red Team Agent attacks your own application from the outside, the way an attacker with no inside knowledge would. It works only against domains your organization has explicitly authorized, it announces itself as a test, and it never sends anything destructive. It reports what it could actually reproduce. A finding appears because the agent ran a request and got a result it should not have — not because a scanner recognized a pattern. Every finding carries the request that proved it.

The lifecycle

Four steps, and the product is arranged in that order:
1

Authorized domains

You authorize what may be tested, once.
2

Automatic testing

Testing happens on a schedule, without being asked.
3

Findings

What the agent proves arrives on the Red Team Agent page.
4

Actionable fixes

Each finding carries enough context to be fixed from the page it is on.
The Red Team Agent page: header with agent status and actions, a completed run, three result metrics, the findings table, and the run schedule and actionable findings cards in the right column.

The Red Team Agent page after a completed run. The left column is the work — the run, the three numbers it produced, and the findings themselves. The right column answers when it runs and what to look at first.

Red Team Agent is one of three agents that share a findings model. Blue triages findings from your other security tools, and Green verifies fixes. Red is the one that goes and attacks something.

Set up Red Team Agent

Until something is in scope there is nothing to attack, so a new workspace opens on a setup checklist instead of an empty dashboard. Three tasks, each with the control that completes it.
The Get ready to run checklist with three rows: connect your environment, configure authorized domains, and configure notifications.

Get ready to run. Each row links to the place that owns the setting — Red Team Agent does not keep a second copy of it.

Once a domain is authorized, the header status changes from Not set up to Watching and the agent joins the schedule. Everything after this point is adjustment, not setup.

Change the configuration later

Open Settings in the page header. One dialog holds what the agent tests, how often it tests, and where it reports — the three things you might come back to change.
The Red Team Agent settings dialog showing domains in scope, the fixed ten-day run cadence, and a notifications grid of events against email and Slack.

Settings: domains in scope, the run cadence, and notifications, in one place.

Authorize the domains it may test

Domains in scope is the list of domains Red Team Agent is allowed to attack. It is the only thing that decides where the agent may act: a hostname that is not covered by an entry on this list is never touched, on any run.

Why authorization is required

Your domain inventory is built from public DNS and certificate transparency, so it lists names your organization does not own — a typosquat, a partner’s hostname, something a former employee still holds. Appearing in the inventory is not ownership, and it is not permission to attack. Authorization is therefore two separate steps, in this order:
1

Verify ownership

Tolmo gives you a tolmo-domain-verification=… TXT record to publish in the domain’s DNS zone. Only someone who controls the zone can publish it, which is the point — it cannot simply be asserted.
2

Permit the domain

A separate, explicit decision that offensive testing is allowed against it. Verifying a domain does not authorize anything on its own.
The which domains Red may test step, listing domains from the inventory with hostname counts and either a Verify ownership or a Revoke control.

Which domains Red may test. Each row shows how many known hostnames the entry covers, so a grant is concrete rather than abstract.

What an entry covers

An entry covers the domain and everything beneath it. Permitting staging.example.com permits every hostname under it, which is how people already think about a staging environment. The row shows the hostname count so you can see the size of what you are agreeing to. Each domain in the list reads as one of three states:
  • Red may test these — verified and permitted. In scope.
  • Ownership proven, not authorised — verified, but deliberately not permitted.
  • Something beneath it is authorised — the domain itself is out of scope, but an entry below it is in scope.
This is one setting for the whole organization, not a per-agent one. Blue and Green read the same list. Revoking an entry takes effect immediately: the agents read the list at the moment they run, so the next run is already out of scope. Revoking keeps the ownership verification, so you never have to re-publish a DNS record to undo a policy decision.

Where to manage it

Two routes to the same list. Use Change what is permitted inside Settings when you are already adjusting the agent, or Manage on the Domains card to open the domain inventory, where the permission lives as a property of the domain.

Understand the run schedule

Red Team Agent tests every 10 days, automatically, across every authorized domain. A full run takes roughly ninety minutes, and its findings take days to work through — ten days leaves room to close them before the next run asks again. The cadence is fixed in this release. It is stated on the Run schedule card and in Settings as a fact rather than offered as a choice, because there is no control that changes it.
The Run schedule card: last run three days ago completed, next run available in seven days, a ten-tick cycle rail, and the Domains section showing one authorized domain with seven hostnames.

The Run schedule card. Values are relative — the question a reader has is how long, not which date.

Start run in the page header runs the agent now, against the same authorized domains. It is an additional run: it does not consume the scheduled one and it does not move the date on the right. If ten days is too slow for your release cycle, the run dialog carries a way to ask us for a faster schedule.
View all on the card, and View runs in the header, both open the full run history. See View run history in Mission Control.

Choose where results are announced

Runs happen without you watching, so notifications are how you find out. Open Settings in the page header and use the Notifications grid: events down the side, channels across the top. One cell answers “does a completed run reach Slack”.
The notifications grid: run started, run completed and new finding, each with an email and a Slack toggle, above a note naming the destination address and channel.

Three events, two channels. Run started is off by default on both — a run every ten days that announces itself twice is how a channel gets muted.

Channels are Email and Slack. The destinations — which address, which channel — are set once for the whole organization in Notification settings, not per agent. The panel names the current destinations so you can see where a toggle will actually send something.
A run that finds nothing still sends a Run completed notification if that event is on. A clean result is a result, and silence is indistinguishable from a run that never started.

Understand your results

Three numbers sit above the findings table. They describe the same set of issues at three different levels of certainty, so reading them left to right tells you how much of the last run is settled.
Three metrics side by side: Discovered 18 potential issues found, Needs review 3 require your attention, Validated 11 confirmed exploitable.

Discovered, Needs review, Validated.

After a run that found nothing, all three read zero and the table says so explicitly rather than looking empty. A run that completed clean is the product working.
A run completed strip naming the run id, eighteen of eighteen paths, the duration, the host, and a two new findings tag.

Above the numbers, a line about the run that produced them: which run, how many paths it ran, how long it took, and against what.

Review findings

The findings table lists what the last runs produced, most severe first. Four columns: Severity, Finding, Stage, and Run.
The findings table with Stage, Severity and Recent runs filters, a search field, and five rows in four columns: severity, the finding title with its affected endpoint underneath, the stage, and the run id.

Severity leads its own column so the value you scan for is in a line. The finding carries its affected endpoint underneath the title; the stage and the run that found it sit on the right.

Narrow the list

  • Search findings or targets matches both the finding title and the affected address, so you can search by endpoint as well as by name.
  • Stage, Severity, and Recent runs filter the list. Each choice you make becomes a tag underneath that you can drop on its own.

Severity

Critical, High, Medium, and Low, on the same scale and in the same colors as the rest of Tolmo. It is the first column and the table sorts by it, so the row at the top is the one to open.

Stage

The stage says where a finding is in its life on this page.

The affected target

Under each title is the address or endpoint the finding is about — a full URL, or a method and path such as POST /api/auth/reset-password. The Run column names the run that produced it, which is the link back into the run history.
The table on this page is a working view of the most urgent findings, not the whole record. Open in Findings inside any finding, and View All on the Actionable findings card, open the full findings list with the same context carried over.
The Actionable findings card showing the most urgent finding with a View finding button and a severity mix bar reading four critical, five high, two medium.

Actionable findings keeps the most urgent one in front of you, so you do not have to decide the order yourself.

Take action on a finding

Click a row. The finding opens in place, underneath the row it belongs to — the table stays where it is, so closing it puts you back exactly where you were. It opens on one layer, which answers four questions in order:
  • What happened — what the agent did, and what came back.
  • Why it matters — who could do this, and what they would get.
  • Key evidence — the one request and response that carries the argument.
  • Recommended fix — the change that closes it.
An opened finding: severity and title, the stage chip and affected endpoint, a Copy fix prompt button, then what happened, why it matters, key evidence as a request and response, and a recommended fix.

A critical finding, opened. Status and address come first because they decide whether the rest is worth reading; the next move sits top right, reachable the moment the panel opens.

This is enough to decide and act on without reading a technical report. The technical record is kept, folded behind See more.

Answer a finding that needs review

A Needs review finding carries three answers in its own panel. There is no fourth.
The action row of a needs-review finding: Copy fix prompt, Accept, Dismiss, Defer, and Open in Findings.

Accept, Dismiss and Defer, beside Copy fix prompt.

A decision stays decided. What you dismiss does not return as a new finding on the next run, and Undo is there beside the decision if you clicked the wrong one.

Copy a fix prompt

Copy fix prompt is the primary action on every finding. It copies the whole finding to your clipboard as a single instruction, written for a coding agent, scoped to the affected endpoint.
The action row of an opened finding, with Copy fix prompt as the primary button next to Open in Findings.

Copy fix prompt sits top right of the open finding. It confirms with Copied.

What you get is the finding as a prompt: the severity and title, the affected address, what happened, why it matters, the evidence, and the recommended fix — ending with an instruction to propose the smallest change that closes it and to say how to verify the fix. Paste it into whatever you fix code with — Claude Code, your editor’s assistant, or a colleague’s terminal. Tolmo does not apply the change: the agent identifies and proves the vulnerability, Tolmo hands over the context to fix it, and you decide what to ship.
The prompt is deliberately self-contained. It carries the evidence, so whoever receives it does not need access to Tolmo to understand what they are fixing.

See the complete technical detail

See more, at the bottom of an open finding, unfolds the technical record. The first layer is for deciding and acting; this layer is for whoever has to reproduce the issue or review the fix.
The expanded technical detail of a finding: reproduction steps, the full request and response, technical context, impact, remediation detail, and the run that found it.

Behind See more: reproduction, the full request and response, technical context, impact and remediation detail.

The hierarchy is deliberate: quick view to understand and act, See more to investigate. Show less folds it back. Not every finding has a second layer — where there is nothing more to show, the control is not there.

View run history in Mission Control

The Red Team Agent page shows the current state: the last run, and what it left you to work on. The full operational history lives in Mission Control, which answers a different question — not “what security issues do I have” but “what have my agents been doing”. View runs in the page header and View all on the Run schedule card both open Mission Control with Red Agent already applied as a filter, so you land on your runs rather than on every run in the organization.
The Agent runs table in Mission Control with the Red Agent filter active, showing run id, agent, trigger, status, result and start time for each run.

Agent runs, filtered to Red. The filter is part of the link, so the filtered view is shareable.

Expand a run to see the findings it touched, by name. A finding is referenced rather than copied, so the same issue crossing Blue, Red, and Green stays one finding with several runs against it. The filter chips at the top switch between agents and statuses, and All runs clears them.
A failed check is not a finding. It is a probe that could not complete, which is a gap in coverage rather than a vulnerability — the Result column reports it so it does not pass unnoticed.

Next steps

Manage findings from the CLI

Create, triage, and update findings with tolmo findings.

Threat models

Download threat model pipeline runs and artifacts.
Still stuck? Email support@tolmo.com and tell us what you were trying to cover.