Figma's security engineering team deployed an agentic alert-triage system that cut time-to-resolution on complex SIEM alerts by 71%, reduced on-call pages by 20%, and dropped endpoint software approval requests by 25%. The system handles all initial security response work, leaving on-call engineers to review what the agent found and handle cases that need human judgment.
"The on-call engineer's job shifted from 'investigate from scratch' to 'review what the agent found, confirm or correct, and handle the cases that need human judgment,'" wrote Matthew Sullivan and Brad Girardeau on Figma's engineering blog on July 29, 2026.
Manual on-call work centered on gathering context for every Panther SIEM alert. Figma had deployed agents guarding code, but protecting internal systems required going beyond the codebase to handle the wide scope of issues Panther surfaces across cloud, endpoints, SaaS apps, and identity systems.
The team iterated through RAG-layer deduplication and severity downgrading (RAG alone drove the 20% on-call page drop), then added an agentic layer with scoped tools, split the agent's memory into case / steering / procedural layers, and extended the agent to open PRs against the Panther detections repo and monorepo.
The architecture is a two-tier stack. Retrieval tier: AWS Bedrock Knowledge Bases plus Kendra index standardized Panther alerts, biasing toward recent results and alerts with `investigation_context` — engineer notes from Slack or Asana threads indexed back automatically. Agentic tier: Tines orchestrates the agent loop; Claude Sonnet classifies each request and routes to a scoped agent. The alert triage agent runs on Claude Opus with tools for Okta, Santa, Wiz, Slack, Panther, code modification, and a Snowflake-SQL sub-agent that queries the security data lake spanning CloudTrail, Okta, GitHub, GCP, osquery, Santa, Wiz, and ~100 tables.
Three memory layers are kept separate. Case memory is the RAG corpus itself. Steering memory is a markdown behavioral-rules document; the agent can update it when a security engineer corrects it. Procedural memory is the most operationally interesting: the investigation sub-agent saves tagged schema-discovery notes — the first query into a new data source needs multiple discovery queries; after saving a memory, the same question costs one query. Bot-authored PRs go to draft by default via a deterministic Tines post-step rather than a prompt instruction — "we found early on that relying on the LLM to remember 'always create as draft' wasn't reliable enough." PR descriptions include the requesting engineer's name and link to the originating Slack thread; reviewer comments are picked up via GitHub webhook so the agent can iterate or rebase stale branches.
Going forward, Figma plans to keep extending the procedural memory corpus and integrating additional scoped tools, with the on-call engineer's role continuing to migrate from investigate-from-scratch toward review-and-correct.