Activity
Activity is the record of everything that passed through the gateway. If an agent touched one of your systems, a person changed how the workspace is set up, or a request was refused, it is here.
Go to Gateway → Activity. The page requires admin access.
What is recorded
Section titled “What is recorded”| Recorded | Not recorded |
|---|---|
| Every call to a connected tool, reads included, by anyone | Reading incidents, alerts and the catalog inside Firefight |
| Every change to workspace configuration | Declaring, updating and closing incidents from Slack or the dashboard |
| Every refused request, and every request waiting for approval |
Calls that leave Firefight are always recorded, even when they only read, because “what did the agent look at” is the question this page exists to answer. Reading Firefight’s own data is not, since it happens constantly and tells you nothing.
Incident participation by a person is recorded on the incident itself, on its timeline, where it belongs next to what happened. See Incident concepts.
Reading the log
Section titled “Reading the log”Each row is one request, newest first, showing the most recent 200.
| Column | What it tells you |
|---|---|
| When | When the request was made |
| Principal | Who made it, by name. A person, an API key or an agent shows its own name, and Firefight’s own investigator shows as Halon. A change Halon made in someone’s chat shows as Halon with whose access it used, such as Halon, for Maya Ortiz |
| Source | Where it came from, listed below |
| Action | What was asked for, by the ability’s key. A call to a connected tool also names the connection it went through, such as Faylee (Northflank) |
| Decision | allow, deny, or pending |
| Outcome | Whether an allowed action succeeded, failed or was refused by one of Firefight’s own rules, with the reason when it did not succeed |
| Duration | How long the action took to run |
Source is one of these:
| Source | What made the request |
|---|---|
| Dashboard | A person on the dashboard |
| Slack | A person in Slack |
| API | A call to the API with a personal token or a service key |
| MCP | An AI agent connected over MCP |
| Investigation | Halon, during an investigation, acting as Firefight’s own Halon agent |
| Halon chat | Halon, answering in a chat in the dashboard, in Slack or over MCP, acting as the person who asked |
| Coding agent | The coding agent writing a fix’s code change, reading your connected tools as the person who asked for it, or searching the web |
| Map sweep | Firefight map sweep, reading a connection onto the resource map |
| Health check | Firefight health check, making sure a connection reaches its account |
| Issue sync | Firefight issue sync, keeping an action or follow-up and its issue in step, see Issue tracking |
| Halon watch | Halon checking on a run, build or deploy it was asked to watch, acting as the person who asked, see Halon watching for you |
| Handbook sync | Firefight handbook sync, reading the documents your handbook’s synced pages come from |
| Paging | Firefight paging, raising a page in your on-call tool and keeping it in step with its incident, see Halon on call |
| Workflow | A step of a workflow, acting as the workflow’s own identity |
Decision is the gateway’s answer. deny means the principal did not hold the permission and nothing ran. pending means the request is waiting for approval, and a second row appears when it is decided and runs. See Approvals.
Outcome is what happened after an allow, one of success, error or refused. A call that reached the tool and got an error back from it shows as error, with the first line of what the tool said, cut to 200 characters. A call that one of Firefight’s own rules stopped, such as a push to a protected branch or a change to a path Halon may not change, shows as refused with the first line of the rule’s reason, whether Halon or an agent over MCP made it. Other calls Firefight itself refused to carry out show as error. Any credential in that line is replaced before it is recorded. An allowed row that shows unknown has not finished, either because it is still running or because it never reported back.
A change Halon made in a chat without asking the person says why under its action, such as “Made without asking because it is a safe change.” or the entry of what Halon may do without asking that allowed it. See Changes without asking.
Use the filter at the top right to show only one decision. Filtering to deny is the quickest way to see what an agent tried and could not do, and filtering to pending shows what is waiting.
What to do with it
Section titled “What to do with it”When you have two accounts of one tool connected, the connection beside each action tells you which account a call reached.
Look here when an agent did something unexpected, when you are checking what a new integration has been used for, or when someone asks who changed a routing rule. The principal and source columns answer who and how, and the action and outcome columns answer what.
An agent’s own calls appear here like everyone else’s, under its own name. The same log is available at /activity over the API and through the search_activity MCP tool, to an admin’s personal token. Each row there carries principal_name, the name the Principal column shows, beside principal, which keeps the kind and name together, such as user:Dana Lee. In search_activity, a call to a connected tool also carries the connection’s name and its provider. See Connect AI agents.