Internal Agents Map

Security alert triage and investigation agents

Company
Figma
Approach type
Agent family
Work
Security, On-call, Coding
Human involvement
Drafts reviewed
Invocation
Event-driven, Interactive
Interfaces
Slack, Github, Webhook
Deployment stage
Deployed
Evidence strength
Detailed primary
Entry reviewed

Purpose

Figma's security engineering team assembled an alert-response system from commercial parts rather than writing an agent framework: agent loops run inside Tines workflow automation on Claude models, and retrieval runs on AWS Bedrock Knowledge Bases and Amazon Kendra. Figma built the layers around them, including the Lambda handlers that index every Panther SIEM alert, intent routing to specialized agents, the scoped tool contracts, and the memory stores. A tagged Slack bot triages the alert with Okta, endpoint, Wiz, Slack, and Panther tools, delegates deeper questions to a sub-agent that writes Snowflake SQL against the security data lake, and can open pull requests against the detections repo or the monorepo.

Check the reviewed sources and claim details.

How it works

Representative workflow: Panther alert through retrieval precedent, intent routing, scoped-tool investigation, and a draft pull request the on-call engineer reviews. Research details

Index the alert and retrieve precedent

A Lambda handler converts each Panther alert into a standardized document with structured attributes and indexes it into Kendra; the next similar alert queries Bedrock for semantic matches, biased toward recent alerts and alerts carrying on-call investigation context

Post a first-pass summary and tag the bot

The Lambda stream handler posts the alert to Slack with the first-pass LLM summary and similar-alert references, then auto-tags the Tines Security Slackbot in the thread; on-call engineers can also tag the bot manually to ask follow-up questions

Route the request by intent

The tag fires a webhook into Tines, where a lighter model reads the full Slack thread and classifies the request as alert triage, a platform security question, an app approval inquiry, or something else, and routes it to a specialized agent with its own scoped tool inventory, authorization layer, and system prompt

Investigate with scoped tools

The alert triage agent pulls the actor's Okta profile and access, checks endpoint rules and events in Workshop, checks cloud findings in Wiz, reads linked Slack threads for past reasoning, and retrieves raw Panther events

Delegate data-lake questions to the investigation sub-agent

For questions the direct tools cannot answer, the triage agent passes a natural-language query to a sub-agent that writes and runs Snowflake SQL against the Panther data warehouse, which ingests AWS CloudTrail, Okta system logs, GitHub audit events, GCP audit logs, osquery endpoint telemetry, Workshop and Santa events, Wiz findings, and about a hundred other tables

Open a draft pull request for the fix

Detection rule, allowlist, and suppression changes go to the Panther detections repo, and infrastructure, service config, Terraform, RBAC, and IdP changes go to the monorepo; the agent picks up reviewer comments through a GitHub webhook, can respond or make further changes, and can rebase stale branches onto the latest master

Where people stay involved

Each scope pairs its normal attention boundary with supporting evidence. See the supervision definitions for the level mapping and limits.

Reported: Four workflows have different boundaries. The on-call engineer reviews what the triage agent found; remediation returns as a pull request that a deterministic post-step forces to draft, so the agent can open a pull request but the post never says it merges or deploys; high-confidence benign or duplicate alerts are downgraded before anyone is paged; and the post documents no review step for the non-triage intents.

  • Panther alert in a Slack thread agent investigation and evidence chain on-call engineer confirms or corrects

    Work-product review · Level 3
  • confirmed finding agent-authored detection, suppression, or configuration change draft pull request review

    Work-product review · Level 3
  • alert matching a high-confidence benign or duplicate precedent automatic severity downgrade before anyone is paged

    Exception-only · Level 5
  • platform security question or endpoint software approval inquiry routed to a non-triage agent

    Unknown · Level unknown

Catalog interpretation: Level 3 for Panther alert in a Slack thread agent investigation and evidence chain on-call engineer confirms or corrects; human attention boundary: work-product-review.

Observed in July 2026

Catalog interpretation: Level 3 for confirmed finding agent-authored detection, suppression, or configuration change draft pull request review; human attention boundary: work-product-review.

Observed in July 2026

Catalog interpretation: Level 5 for alert matching a high-confidence benign or duplicate precedent automatic severity downgrade before anyone is paged; human attention boundary: exception-only.

Observed in July 2026

Catalog interpretation: Unclassified for platform security question or endpoint software approval inquiry routed to a non-triage agent; human attention boundary: unknown.

Observed in July 2026

Implementation details

Model
Claude models, named by tier rather than by version. A lighter model such as Claude Sonnet performs intent routing and memory formatting; a model such as Claude Opus runs the alert triage agent and the Panther investigation sub-agent.The post names Claude Sonnet and Claude Opus as examples of the tier used at each step, hedged as "a model like"; no version is given.
Harness
Agent loops run inside Tines, a commercial workflow-automation product, which supplies the LLM loop and the explicit tool interfaces; Figma built the surrounding system: AWS Lambda handlers that index and post each Panther alert, a retrieval layer on AWS Bedrock Knowledge Bases and Amazon Kendra, webhook-triggered intent routing to specialized agents, the deterministic tool-calling contracts, and the memory stores. The core tool set is managed outside any individual agent as configuration-as-code.
Sandbox
Not reportedTines runs the agent loops and the sub-agent executes SQL against Snowflake, but no execution isolation boundary is described; the legacy unknown claim stays in research details.
Tool access
Each routed agent has its own scoped tool inventory and authorization layer. The alert triage agent's tools cover Okta profiles, groups, and login history; North Pole Security Workshop rule and event search, host sync status, and rule push for the Santa endpoint agent; Wiz audit logs, inventory, findings, and exposed resources; Slack thread reads, profile lookups, and progress updates; Panther alert details, raw triggering events, and related alerts; opening pull requests in the Panther detections repo or the monorepo; and delegation to the Panther investigation sub-agent.
Knowledge
Case memory is the Kendra and Bedrock corpus of past alerts plus investigation context, which is the comment an on-call engineer leaves in the Slack alert thread or the Asana ticket and which is indexed back onto the original alert. Retrieval is biased toward recent alerts and alerts that carry investigation context. The investigation sub-agent keeps a separate procedural memory store organized by data-source tags such as aws, okta, osquery, and workshop, holding schema findings written by a lighter model. Tines database records hold stateful objects such as open agent-created pull requests and Panther investigation state.
Context management
The triage agent receives the full Slack thread history plus its steering-memory markdown document, loaded into context at the start of every run. It has no ambient access to whole Slack channels, and outside direct messages it can read a thread only when it is re-tagged on the latest message.
Credentials
Authorization controls limit the agents to security team members, and Figma states that the agent works on behalf of an authorized team member and that its tools are scoped, authorized, and monitored. Pull requests the agent opens are authored by a service account, so the PR description carries the requesting engineer's name and a link to the originating Slack thread. The post does not document how the agent authenticates to each connected system.Authorization scoping, the service-account pull-request identity, and the on-behalf-of rule are stated; the authentication mechanism for each connected system is not.
Interfaces
slack, github, webhookAlert summaries also reach Asana tickets and investigation context is indexed from them, but Asana is not an interface value in the schema.

Mechanisms

Alert-to-resolution loop

Panther alert retrieval summary and precedent intent routing scoped-tool investigation draft pull request

Segment memory by precedent, policy, state, and schema

Case memory holds past alerts and investigation context, steering memory holds behavioral rules the agent can update when an engineer corrects it, Tines database records hold stateful objects, and the sub-agent's tagged procedural memory holds schema findings it saves after a discovery query

Validation and failure handling

Enforce deterministic tool-call safeguards

Every pull request the agent creates is set to draft by a deterministic post-step in the Tines workflow rather than by a prompt instruction, and the same tool-calling contract keeps sensitive employee information out of Okta responses and stops the agent closing or modifying pull requests it did not author

Reported observations

The catalog records what the sources report, with the scope and the denominator of every figure. A qualification below limits the figure it sits under.

Cost latency · Estimate · Time-to-resolution on complex security alerts handled by the agent system

Headline claim

“Around 70% reduction in time-to-resolution on complex alerts, reported by Figma in July 2026”

Reported by
Figma
Scope
Time-to-resolution on complex security alerts handled by the agent system

The source does not report the denominator of this figure.

Observed in July 2026

Cost latency · Reported measurement · On-call pages after automatic severity downgrading of high-confidence benign or duplicate alerts

Key observation

Figma reports a 20% drop in on-call pages from automatically downgrading the severity of alerts the retrieval layer scored as high-confidence benign or duplicate

Reported by
Figma
Scope
On-call pages, after automatically downgrading high or critical alerts scored as high-confidence benign or duplicate

The source does not report the denominator of this figure.

Observed in July 2026

Cost latency · Reported measurement · Endpoint software approval requests reaching the security team

Key observation

Figma reports 25% fewer endpoint software approval requests, which it attributes to the agent detecting when a user is asking about a tool and directing them to comparable approved alternatives

Reported by
Figma
Scope
Endpoint software approval requests reaching the security team

The source does not report the denominator of this figure.

Observed in July 2026

Effectiveness · Qualitative · On-call engineer confidence in resolution quality

Key observation

Figma reports meaningfully higher on-call engineer confidence in resolution quality, which it attributes to the agent's evidence chain being explicit and reviewable; no measurement is given

Reported by
Figma
Scope
On-call engineer confidence in resolution quality

The source does not report the denominator of this figure.

Observed in July 2026

Cost latency · Qualitative · Queries the investigation sub-agent needed for one repeated data-lake question before and after saving a schema memory

Key observation

Figma reports that the first question the investigation sub-agent was asked about Zoom activity needed multiple schema-discovery queries, and that the same question cost a single query after the sub-agent saved a procedural memory

Reported by
Figma
Scope
Queries the investigation sub-agent needed for one repeated data-lake question, before and after it saved a schema memory

The source does not report the denominator of this figure.

Observed in July 2026

Adoption output · Qualitative · Share of initial security response work the system handles for Figma's security team

Key observation

Figma states the system handles all initial security response work for the security team, and that the on-call engineer's job shifted from investigating from scratch to reviewing what the agent found

Reported by
Figma
Scope
Initial security response work for Figma's security team

The source does not report the denominator of this figure.

Observed in July 2026

Lessons

Figma separates precedent from policy across memory layers, after saving everything as steering memory started overriding the agent's behavior in unwanted ways; a one-off lesson about a specific alert type goes into retrieval investigation context, and a behavioral rule that should change how the agent approaches all alerts goes into steering memory.

Reported opinion: Figma's security team says procedural memory should have been in the system from the start, because the investigation sub-agent's self-built schema memory was a late addition whose improvement was dramatic enough that the earlier work feels wasted in retrospect.

Figma manages its core agent tool set in configuration-as-code outside any individual agent, after team members iterating quickly produced divergent copies of the same core agent with different tool configurations.

Figma enforces controls as deterministic post-steps in the Tines workflow rather than as prompt instructions, after finding that relying on the model to remember an instruction such as always creating a pull request as a draft was not reliable enough.

Figma includes the requesting security engineer's name and a link to the originating Slack thread in every agent-authored pull request, because bot-authored pull requests make git blame point at a service account; the team says it should have done this from the start.

Reported opinion: Figma's security team says it is more comfortable with agent autonomy when the action is bounded, reversible, and supported by clear evidence than when it is broad, destructive, or hard to audit, and that read-heavy investigation, duplicate detection, precedent retrieval, and draft remediation fit agentic execution better than generic high-powered write paths.

Reported opinion: Figma's security team advises designing the Slack trust model for public channels up front rather than bolting it on, because user-activity detail that is fine in a private security thread becomes a problem in a channel with a hundred people; Figma handles this with channel-aware prompt design and other deterministic controls.

Sources and research details

Citations link to the original publisher. Each source also keeps a preserved copy in the repository, so a changed or removed page stays checkable.

  1. How we secure Figma's internal systems with agentshttps://www.figma.com/blog/how-we-secure-figmas-internal-systems-with-agents/Engineering blog · First party · Last source verification: 2026-09-21
Question coverage and scope
purpose
Reported
workflow
Reported: The alert-to-resolution loop and the memory layers are mechanisms that support the run rather than steps in it, and the deterministic safeguards are recorded under validation.
human involvement
Reported: Four workflows have different boundaries. The on-call engineer reviews what the triage agent found; remediation returns as a pull request that a deterministic post-step forces to draft, so the agent can open a pull request but the post never says it merges or deploys; high-confidence benign or duplicate alerts are downgraded before anyone is paged; and the post documents no review step for the non-triage intents.
implementation
Reported
validation
Reported: What is documented is deterministic tool-call safeguards and pull-request review. Figma names better evaluation of agent conclusions as future work, so no evaluation harness or accuracy check is reported.
observations
Reported
lessons
Reported
Research details for every claim on this page
  1. Summary
    Statement type
    Fact
    Provenance
    Reported
    Confidence
    High
    Confidence reason
    A linked first-party source states the claim.
  2. Headline claim
    Statement type
    Metric
    Provenance
    Reported
    Confidence
    Medium
    Confidence reason
    Figma reports the figure in its own engineering blog with no measurement method, denominator, or interval, and hedges it as "around 70%". The page also states the result two ways: the standfirst says time-to-resolution was cut by 71% with no scope, while the body says around 70% on complex alerts. This record keeps the body wording because it is the more precise and more bounded of the two.
    Reported by
    Figma
    Scope
    Time-to-resolution on complex security alerts handled by the agent system
    Denominator
    Not reported
    Method
    Not reported
    Observation date
    2026-07
  3. Sandbox

    unknown

    Statement type
    Inference
    Provenance
    Catalog judgment
    Confidence
    Medium
    Confidence reason
    The post places the agent loops in Tines and has the sub-agent execute SQL against Snowflake, but documents no execution isolation boundary for agent-run code; unknown does not mean absent.
  4. Harness
    Statement type
    Fact
    Provenance
    Reported
    Confidence
    High
    Confidence reason
    A linked first-party source states the claim.
  5. Model
    Statement type
    Fact
    Provenance
    Reported
    Confidence
    High
    Confidence reason
    A linked first-party source states the claim.
  6. Interfaces
    Statement type
    Fact
    Provenance
    Reported
    Confidence
    High
    Confidence reason
    A linked first-party source states the claim.
  7. Tool access
    Statement type
    Fact
    Provenance
    Reported
    Confidence
    High
    Confidence reason
    A linked first-party source states the claim.
  8. Knowledge
    Statement type
    Fact
    Provenance
    Reported
    Confidence
    High
    Confidence reason
    A linked first-party source states the claim.
  9. Credentials
    Statement type
    Fact
    Provenance
    Reported
    Confidence
    High
    Confidence reason
    A linked first-party source states the claim.
  10. Context management
    Statement type
    Fact
    Provenance
    Reported
    Confidence
    High
    Confidence reason
    A linked first-party source states the claim.
  11. Alert-to-resolution loop
    Statement type
    Fact
    Provenance
    Reported
    Confidence
    High
    Confidence reason
    A linked first-party source states the claim.
  12. Index the alert and retrieve precedent
    Statement type
    Fact
    Provenance
    Reported
    Confidence
    High
    Confidence reason
    A linked first-party source states the claim.
  13. Post a first-pass summary and tag the bot
    Statement type
    Fact
    Provenance
    Reported
    Confidence
    High
    Confidence reason
    A linked first-party source states the claim.
  14. Route the request by intent
    Statement type
    Fact
    Provenance
    Reported
    Confidence
    High
    Confidence reason
    A linked first-party source states the claim.
  15. Investigate with scoped tools
    Statement type
    Fact
    Provenance
    Reported
    Confidence
    High
    Confidence reason
    A linked first-party source states the claim.
  16. Delegate data-lake questions to the investigation sub-agent
    Statement type
    Fact
    Provenance
    Reported
    Confidence
    High
    Confidence reason
    A linked first-party source states the claim.
  17. Segment memory by precedent, policy, state, and schema
    Statement type
    Fact
    Provenance
    Reported
    Confidence
    High
    Confidence reason
    A linked first-party source states the claim.
  18. Open a draft pull request for the fix
    Statement type
    Fact
    Provenance
    Reported
    Confidence
    High
    Confidence reason
    A linked first-party source states the claim.
  19. Enforce deterministic tool-call safeguards
    Statement type
    Fact
    Provenance
    Reported
    Confidence
    High
    Confidence reason
    A linked first-party source states the claim.
  20. Key observation
    Statement type
    Metric
    Provenance
    Reported
    Confidence
    Medium
    Confidence reason
    Figma attributes the drop to the automatic severity downgrade alone and repeats it in the results paragraph, but reports no baseline period, denominator, or method. The downgrade runs in the retrieval layer on a confidence threshold, not in the triage agent.
    Reported by
    Figma
    Scope
    On-call pages, after automatically downgrading high or critical alerts scored as high-confidence benign or duplicate
    Denominator
    Not reported
    Method
    Not reported
    Observation date
    2026-07
  21. Key observation
    Statement type
    Metric
    Provenance
    Reported
    Confidence
    Medium
    Confidence reason
    The figure appears only in the summary list of results, with the mechanism Figma credits for it but no baseline, denominator, or method.
    Reported by
    Figma
    Scope
    Endpoint software approval requests reaching the security team
    Denominator
    Not reported
    Method
    Not reported
    Observation date
    2026-07
  22. Key observation
    Statement type
    Metric
    Provenance
    Reported
    Confidence
    Low
    Confidence reason
    Figma states engineer confidence is meaningfully higher but gives no survey, scale, or other measurement, so this is a qualitative impression reported alongside the numeric results.
    Reported by
    Figma
    Scope
    On-call engineer confidence in resolution quality
    Denominator
    Not reported
    Method
    Not reported
    Observation date
    2026-07
  23. Key observation
    Statement type
    Metric
    Provenance
    Reported
    Confidence
    Medium
    Confidence reason
    The before-and-after query counts come from one worked example about Zoom activity that Figma uses to illustrate procedural memory; the post says the pattern repeated across data sources but gives no aggregate.
    Reported by
    Figma
    Scope
    Queries the investigation sub-agent needed for one repeated data-lake question, before and after it saved a schema memory
    Denominator
    Not reported
    Method
    Not reported
    Observation date
    2026-07
  24. Key observation
    Statement type
    Metric
    Provenance
    Reported
    Confidence
    Medium
    Confidence reason
    Figma states the coverage directly, but gives no alert counts, exclusions, or period, so the scope of "all initial security response work" rests on the team's own characterization.
    Reported by
    Figma
    Scope
    Initial security response work for Figma's security team
    Denominator
    Not reported
    Method
    Not reported
    Observation date
    2026-07
  25. Lesson
    Statement type
    Fact
    Provenance
    Reported
    Confidence
    High
    Confidence reason
    The memory section states the split and names the early mistake of saving everything as steering memory, including the consequence it produced.
  26. Lesson
    Statement type
    Opinion
    Provenance
    Reported
    Confidence
    Medium
    Confidence reason
    This is the team's own hindsight preference in the "In hindsight" list. The underlying improvement is illustrated by one example and a general claim that the pattern repeated, not by measured results across data sources.
  27. Lesson
    Statement type
    Fact
    Provenance
    Reported
    Confidence
    High
    Confidence reason
    The hindsight list states both the fragmentation problem and the configuration-as-code arrangement Figma runs today.
  28. Lesson
    Statement type
    Fact
    Provenance
    Reported
    Confidence
    High
    Confidence reason
    The guardrails section states that the draft setting is a deterministic post-step in the Tines workflow and gives the reliability failure that led to it.
  29. Lesson
    Statement type
    Fact
    Provenance
    Reported
    Confidence
    High
    Confidence reason
    The code-changes section states the practice, the git blame reason behind it, and the team's view that it should have been there from the start.
  30. Lesson
    Statement type
    Opinion
    Provenance
    Reported
    Confidence
    Medium
    Confidence reason
    This is Figma's stated comfort boundary for autonomy, not a measured finding, and it is bounded to the action types this security workflow performs.
  31. Lesson
    Statement type
    Opinion
    Provenance
    Reported
    Confidence
    Medium
    Confidence reason
    The hindsight list gives this as advice from Figma's experience with a Slack-integrated security agent, with the controls Figma uses; the post reports no incident that tested them.
  32. Operating model assessment
    Statement type
    Inference
    Provenance
    Catalog judgment
    Confidence
    High
    Confidence reason
    The post states that the on-call engineer's job shifted to reviewing what the agent found and confirming or correcting it, which locates human attention at the investigation write-up rather than during it.
    Observation date
    2026-07
  33. Operating model assessment
    Statement type
    Inference
    Provenance
    Catalog judgment
    Confidence
    High
    Confidence reason
    The post says the agent opens pull requests and that a deterministic post-step sets every one of them to draft, so the review of the change is the documented boundary. Opening a pull request is the agent's authority; nothing in the post says the agent merges or deploys.
    Observation date
    2026-07
  34. Operating model assessment
    Statement type
    Inference
    Provenance
    Catalog judgment
    Confidence
    Medium
    Confidence reason
    The severity-downgrade code path runs on a retrieval confidence score without a described human checkpoint, and Figma credits it with fewer on-call pages. The post does not say what happens to a downgraded alert afterwards, so the exception boundary is inferred from the reduced paging rather than stated.
    Observation date
    2026-07
  35. Operating model assessment
    Statement type
    Inference
    Provenance
    Catalog judgment
    Confidence
    Unverified
    Confidence reason
    The post names platform security questions and app approval inquiries as separate routed agents with their own tools and prompts, but describes no review step for their answers. The boundary is undocumented, and the triage boundary must not be assumed to carry over.
    Observation date
    2026-07
Back to agents
Know an internal agent?

Share a resource or public mention, suggest an addition, or correct an existing entry. Pull requests are also welcome.