Overview
The AI AppSec Assistant is a persistent, per-organization agent that works alongside your security team. It can triage findings, investigate vulnerabilities, create patches, respond to scan events, answer questions in Slack, and schedule its own recurring tasks — all while remembering context from previous interactions. The assistant runs as an isolated, sandboxed environment per organization. It has access to your ZeroPath data through the platform’s MCP tools, and can interact with your team through Slack, Jira, Confluence, and Linear.An organization admin can enable the Assistant from Configure → Settings or through the administrative API. Contact ZeroPath support if the Assistant is unavailable in your deployment.
Key Capabilities
Autonomous Security Operations
The assistant can perform multi-step security tasks without human intervention:- Triage findings — assess true/false positive status, evaluate severity, recommend remediation priority
- Investigate vulnerabilities — clone repos, review code paths, assess reachability
- Create patches — generate fixes, create PRs through the platform’s patch pipeline
- Threat modeling — analyze application architecture and identify attack surfaces
- SCA reachability — determine whether dependency vulnerabilities are actually exploitable in your code
Agent Teams
For complex tasks, the assistant can spawn teams of sub-agents that work in parallel. For example, when asked to triage 20 new findings, it can investigate multiple findings simultaneously across different repos rather than working through them one at a time. Each sub-agent has access to the same platform tools and memory, and the primary agent coordinates and synthesizes their results.Self-Refinement
The assistant continuously learns and improves through three mechanisms:- Memory — stores and recalls decisions, team preferences, repo-specific knowledge, and investigation results across runs. Before each task, it searches memory for prior decisions on similar issues to stay consistent. After completing work, it saves key outcomes so future runs don’t re-investigate the same issues.
- Natural language rules — when it identifies a recurring pattern (e.g., repeated false positives from a specific code pattern), it can create scanner rules so the platform catches or suppresses similar findings automatically in future scans. This means the assistant’s triage decisions permanently improve the scanner’s accuracy.
- Recurring task context — for organization-wide scheduled tasks, the assistant automatically receives the results of its last 3 runs. It uses this to track trends, build on prior work, and avoid starting from scratch each time.
Event-Driven Automation
The assistant can be triggered automatically by platform events, each with fully customizable instructions:- A scan completes → the assistant triages new findings and posts a summary
- A PR is blocked → the assistant reviews the blocking findings and suggests fixes
- A new CVE is discovered → the assistant assesses reachability across your repos
- A scan fails → the assistant investigates the error and notifies the team
{repo}, {vulnCount}, {prNumber}, etc.), so you control exactly what the assistant does for each event type. See Event Triggers below.
Persistent Environment
Each organization gets a dedicated, sandboxed pod with persistent storage:- Recurring task context — organization-wide schedules can reuse the previous three runs’ results to track trends. Scoped schedules reuse a conversation only while its resolved repository selection stays identical; each run gets a separate file workspace.
- Cross-run memory — organization-wide tasks can store and retrieve organizational knowledge. Scoped schedules do not access shared organization memory.
Controllability
You have full control over the assistant’s behavior:- Global instructions: org-wide directives prepended to every task. Set policies like “always post in Slack before modifying records” or “escalate critical findings to @security-oncall.” Administrators edit them in Configure → Settings or through the administrative API. MCP tools cannot change them.
- Event triggers — configure which platform events (scan complete, new vulnerabilities, etc.) automatically invoke the assistant, with customizable prompts per event type.
- Cron scheduling — the assistant can create and manage its own recurring schedules (e.g., “triage new findings every Monday at 9am”).
- Permissions — three granular permissions control who can view, manage, or run the assistant.
Dashboard
Open Assistant in the sidebar, under Automation. The Assistant page has Overview, Activity, and Chat tabs, plus a Configure tab that only organization admins see (it requires the Manage Agent permission, which is reserved to admins). The page shows an Early access badge.- Overview: the Jobs running, Jobs completed today, Active schedules, and Active triggers counts and whether Slack is connected, a Running now list of jobs in progress with live duration counters, and Recent actions, a feed with AI-generated summaries of the concrete actions taken (for example, findings triaged, PRs opened, scans triggered).
- Activity: a searchable list of all conversations with AI-generated titles that summarize each conversation’s purpose. You can filter by source (Chats, Issues, PRs, Scheduled, Events, Slack) and click any row to open the full conversation thread with real-time streaming.
- Chat: start new conversations or continue existing ones. The conversation history lists all conversations grouped by day (Today, Yesterday, then by date) with search and source filtering (All, Chat, Issue, PR, Scheduled, Event, Slack). On narrower screens the conversation history collapses behind a Conversation history toggle button. Conversations from scheduled tasks and event triggers are read-only, while Slack-linked conversations direct you to reply in the original Slack thread. The assistant automatically receives the full conversation history when responding to follow-up messages, so it maintains context across multiple exchanges in the same thread. A Stop button cancels all currently pending or running jobs in the conversation at once, which halts a multi-step task mid-flight. Stopping a conversation with no active jobs does nothing. If the Assistant is switched off for your organization, the chat input is disabled and displays a message indicating this; an admin can re-enable it under Assistant → Configure → Settings.
- Configure: the Assistant’s configuration sections, described below.
Configure
Configure has a sidebar menu with Schedules, Triggers, Playbooks, Skills, Memory, and Settings. On a narrow screen the sidebar collapses into a Configure section dropdown.- Schedules: create and manage recurring tasks with cron expressions, templates, and repo/tag scoping.
- Triggers: configure which platform events invoke the assistant, with per-trigger prompts and repo/tag scoping.
- Playbooks: browse and manage reusable playbook templates that define multi-step workflows the assistant can execute. Playbooks codify common security operations (for example, triage runbooks or incident response procedures) so they run the same way across your team.
- Skills: manage the reusable know-how the assistant reaches for while it works. Built-in skills are enabled automatically and can be disabled or duplicated into an editable copy, and New skill adds a custom one. Changes apply to the next run.
- Memory: view, search, edit, and delete the assistant’s stored organizational knowledge.
- Settings: turn the assistant on or off, set the Slack channel for updates, set global instructions, and restart the assistant.
Quick chat from any page
The Assistant button in the top bar opens a quick chat in a drawer over the page you are on. Press ⌘J on macOS or Ctrl J elsewhere to open and close it from anywhere in the app (see keyboard shortcuts). The button and the shortcut are shown to members with the Run Agent permission.- With no conversation open, the drawer offers starting prompts such as Triage the newest critical issues.
- Conversation history lists your conversations, and New conversation starts a fresh one.
- Open in Assistant opens the current conversation on the Assistant page.
- Closing the drawer keeps your draft and the conversation, so reopening it picks up where you left off.
Getting Started
Enable the Assistant
- Navigate to Assistant in the ZeroPath dashboard.
- Open Configure, then Settings.
- Turn on the switch under Assistant status.
Run Your First Task
- Click the Ask button in the top right, or go to the Chat tab.
- Type a message in the input at the bottom of the page to start a new conversation, for example:
- “List all critical severity findings from the last scan and triage them”
- “Review the latest PR scan results and flag any true positives”
- “What are the top 5 most common vulnerability types across our repos?”
- Watch the results stream in real-time. You can send follow-up messages in the same conversation thread.
Set Up Global Instructions
Global instructions are prepended to every agent task — manual runs, event triggers, Slack interactions, and scheduled jobs. Use them for org-wide policies.- Open Assistant → Configure → Settings and find Global instructions.
- If the field is empty, click Load example instructions for a starting template.
- Write your instructions. For example:
- Click Save instructions.
Event Triggers
Event triggers let the assistant respond automatically to platform events. Each trigger has a customizable prompt that tells the assistant what to do.Configuring Triggers
You can create multiple triggers per event type, each with its own prompt and scope. For example, you could have two “Scan Complete” triggers — one scoped to production repos that escalates critical findings, and another scoped to internal tools that generates a simple summary.- Open Configure → Triggers.
- Click “Add trigger” on the event type you want, or toggle on an existing trigger:
- Click “Edit prompt” to customize what the assistant does for each event.
- Optionally scope each trigger to specific repositories or tags so it only fires for a subset of your codebase.
Inbound Webhooks
Inbound webhooks let external systems trigger the assistant by sending an HTTP POST request. Use them to integrate the assistant with tools outside the ZeroPath platform — CI/CD pipelines, bug bounty platforms, alerting systems, custom scripts, or any service that can send HTTP requests.Creating an Inbound Webhook
- Open Configure → Triggers.
- Under the Webhooks section, click “Add trigger”.
- Give the trigger a name and write a prompt template. Use
{webhookBody}as a placeholder for the incoming request payload. - Click “Save”. ZeroPath generates a unique webhook URL with a secret token.
{webhookBody} in your prompt template.
Example
Prompt template:Scoping
Like other triggers, inbound webhooks can be scoped to specific repositories or tags. If scoped, the webhook still fires but the assistant’s context is narrowed to the selected repos.Trusted Mode
Event triggers and scheduled tasks have a Trusted toggle that controls the assistant’s execution permissions.- Trusted — organization-wide runs can use shell access, file read/write, and configured MCP tools. Use this only when the prompt content is controlled by your team.
- Untrusted (default) — the assistant runs with no shell access and blocked access to sensitive configuration files. Use this for triggers that process external input, such as inbound webhooks carrying payloads from outside your organization.
trusted setting records the requested setting; effectiveTrusted reports the execution setting. Scoped runs have no shell, built-in web browsing or search, shared organization memory, custom MCP servers, or previous-run file context. They use only the selected repositories through approved ZeroPath tools. The configured Slack channel can still receive the run’s summary.
Scoped runs use a fixed set of built-in tools to read, write, and edit their own workspace and discover approved ZeroPath tools. Built-in agent delegation and skill loading are unavailable.
Repository-bound chats and PR-bot conversations use the same repository boundary. They investigate source through ZeroPath code tools rather than shared local clones. A Plan first job can investigate and propose a plan, but platform changes require the separate execution job created after approval.
When to Use Untrusted Mode
Mark a trigger as untrusted when its prompt includes content from outside your trust boundary:- Inbound webhooks receiving payloads from external systems
- Triggers processing bug bounty reports, vendor advisories, or customer-submitted data
- Any trigger where
{webhookBody}or other placeholders carry externally-authored text
What Changes in Untrusted Mode
The table describes organization-wide runs. Scoped schedules use a separate workspace for each run and cannot read other runs’ files. Configuration, secrets, and environment files remain blocked.
The assistant can still perform platform operations (triage findings, trigger scans, create patches via MCP, post to Slack, manage schedules) in untrusted mode.
Prompt Variables
Event trigger prompts support placeholder variables that are filled in when the event fires:Scheduled Tasks
You can create recurring schedules from Configure → Schedules, the public API, or API-token local MCP. Organization-wide Assistant conversations can also author schedules. Remote MCP connections can run existing schedules but cannot author them. Cron expressions use UTC. Schedules require five cron fields. Existing unsupported expressions remain visible as Needs update, with aconfigurationError in API responses. Edit the cadence to resume; expressions with seconds are not converted automatically.
Creating Schedules from the UI
- Open Configure → Schedules and click “New Schedule”.
- Choose a template to start from (Daily Triage, Weekly Security Digest, or SCA Monitoring), or build one from scratch.
- Enter a name, select a cron expression (or use one of the built-in presets like “Weekdays at 9am UTC” or “Every hour”), and write the prompt that tells the assistant what to do.
- Optionally scope the schedule to specific repositories or tags so the assistant only operates on a subset of your codebase.
- Click Save. You can enable, disable, edit, or trigger any schedule manually from the list.
412; deleting its last tag or repository never turns it into an organization-wide schedule. To broaden it deliberately, choose Use all repositories when editing. API callers explicitly clear both repositoryIds and tagIds.
Creating Schedules via Chat
In an organization-wide Assistant conversation or through API-token local MCP, you can ask:- “Create a weekly triage of all new findings every Monday at 9am”
- “Check for critical SCA vulnerabilities daily at midnight”
- “Run a security posture summary every Friday at 4pm”
Failure Notifications
If a scheduled task exceeds its runtime limit without completing, ZeroPath automatically marks it as failed and sends a notification to the Slack channel configured in your assistant settings. The notification includes the task name and a link to view the run, so you can quickly investigate what went wrong. Failure notifications are retried with exponential backoff if the initial delivery does not succeed.Recurring Task Context
Organization-wide scheduled runs can use results from the previous three runs as context. This enables:- Trend tracking — “Last week there were 12 critical findings, this week there are 8. Improvement in repos X and Y.”
- Incremental work — the assistant can pick up where it left off rather than starting from scratch.
- Audit trail — every run’s output is preserved for review.
412 so you can repair the selection before retrying.
View all active schedules under Configure → Schedules.
Slack Integration
The assistant can interact with your team through Slack — respond to questions, take direction, and post updates.Setup
- Ensure your organization has a Slack integration connected.
- Open Assistant → Configure → Settings, enter the channel ID under Slack updates, and click Save.
- The assistant will respond to @-mentions in channels and direct messages.
Talking to the Assistant
In channels: @-mention the ZeroPath bot with a request:@ZeroPath Can you triage the 5 new critical findings from today’s scan?In DMs: Send a direct message to the ZeroPath bot — no @-mention needed:
What’s the current security posture across our repos?The assistant reacts with an :eyes: emoji immediately to acknowledge your message, creates a job, and posts results back in the thread. It sends progress updates for longer tasks so you know what it’s doing. For automated runs triggered by scheduled tasks or event triggers, the assistant keeps Slack quiet: it posts one headline message to the channel, keeps all activity in that thread, and delivers a single consolidated summary when the run finishes rather than sending frequent progress updates. This prevents notification noise for runs that nobody is watching live. When the assistant uses sub-agents to work in parallel (for example, triaging multiple findings simultaneously), sub-agents return their results to the main run — only the main run posts to Slack, so each automated job produces at most one channel message and one summary reply.
Supported Actions
Thread conversations are persistent — you can reply to any thread the assistant has participated in, and it will automatically respond to follow-up messages without needing another @-mention.
Jira & Confluence Integration
When your organization has a Jira integration connected, the assistant can create and update Jira tickets and query Confluence for documentation, runbooks, and architecture context. This lets the assistant:- Create remediation tickets linked to ZeroPath findings
- Look up existing tickets for context when triaging
- Search Confluence for architecture documentation to inform threat modeling and reachability analysis
Linear Integration
When your organization has a Linear integration connected, the assistant can create and update Linear issues. Use this to:- Create remediation tickets directly from triage results
- Query existing tickets for remediation context
PR Workflow for Linear Tickets
When the assistant opens a pull request to fix a Linear ticket, it:- Includes the Linear ticket key (for example,
ZP-123) in the branch name, PR title, and PR body so Linear automatically links the PR to the ticket. - Moves the Linear ticket to Todo after posting the PR link, so the ticket owner can review and verify the fix. The ticket is not moved to a completed or closed state — it stays in Todo until you verify the fix and close it manually.
Custom MCP Servers
You can extend the assistant’s capabilities by installing additional MCP servers. Ask the assistant to install a server (e.g., GitHub, PagerDuty, or any MCP-compatible tool), and it will configure the server for your organization’s pod. Custom MCP servers persist across restarts and are available on the next message after installation.Memory
The assistant stores organizational knowledge in persistent memory using mem0. This includes:- Triage decisions and reasoning
- Team preferences and security policies
- Repository-specific knowledge (architecture, common patterns, known issues)
- Remediation plans and outcomes
Viewing and Managing Memory
Open Configure → Memory to browse all stored memories. You can:- Search memories by keyword to find specific entries.
- Edit any memory entry inline to correct or refine what the assistant has stored.
- Delete individual entries that are no longer relevant.
- Clear all memories to reset the assistant’s organizational knowledge entirely. This action cannot be undone.
Best Practices
- The assistant automatically searches memory before each task and stores outcomes after. You don’t need to tell it to remember things explicitly.
- If you want to correct a past decision, tell the assistant directly — it will update its memory.
- Use global instructions to guide memory behavior (e.g., “always check memory for prior decisions on similar CVEs before triaging”).
Permissions
Access to the assistant is controlled by three permissions:
These are assigned through Teams in the platform settings.
Repository-Level Access Control
Assistant conversations and jobs that are bound to a specific repository respect your organization’s repository-level access controls. If a user loses access to a repository (for example, through a team permission change), conversations and jobs tied to that repository are no longer visible to them. This applies uniformly across listing, viewing, sending messages, and archiving conversations — access is evaluated at read time, so revoking repository access takes effect immediately without any stored visibility state to update.Audit Logging
Key assistant actions are recorded in the organization audit log, including creating conversations, sending messages, archiving and unarchiving conversations, and canceling jobs. Each audit entry includes the conversation and job IDs so downstream SIEM integrations can correlate events. Actions taken by the assistant are attributed to ZeroPath Assistant in the audit log and in individual finding timelines, so they are clearly distinguishable from actions taken by human team members. Background system operations (automated maintenance tasks) are labeled System.API Access
The public Assistant API supports configuration, schedules, event triggers, and reading run results. Conversation management, memory administration, job listing/cancellation, and live streaming use the dashboard. Use an organization service token for unattended administration. It belongs to one organization, has organization-wide authority, and needs no human owner or browser session. A personal token acts with its owner’s current permissions. Configuration and schedule management require Manage Agent. Actions record the acting credential rather than impersonating its creator. Set these variables to use the examples. Replace the organization and tag IDs with your own:POST with JSON and these headers:
-
Read settings with
POST /api/v2/agent/getConfig:The response containsconfig, with effective settings and nullablesavedConfigmetadata. Reading does not create configuration and never returns webhook secrets. -
Enable the Assistant with
POST /api/v2/agent/updateConfig:Optional fields areslackChannelId,globalInstructions,maxConcurrentRuns, andchatRetentionDays. Omitted fields stay unchanged. Authorize Slack in Settings → Integrations before setting its channel. Configuration is available through administrative API tokens and the dashboard, not MCP tools. -
Create an untrusted, tag-scoped schedule with
POST /api/v2/agent/createCronSchedule:This runs Mondays at 09:00 UTC. Save the returnedschedule.id.trustedis the requested setting;effectiveTrustedis false for repository- and tag-scoped schedules. -
Run it immediately with
POST /api/v2/agent/triggerCronSchedule:Save the returnedjobId. An immediate run keeps the recurring cadence unchanged and is available for paused schedules. A disabled Assistant fails with HTTP412. -
Poll
POST /api/v2/agent/getJobwith that ID:resultSummarycontains a brief outcome. Complete reports from scoped scheduled runs are saved asASSISTANTmessages before temporary run files are removed.job.statusbecomesCOMPLETED,FAILED, orCANCELLED. The response includesresultSummary, customer-visiblemessages, and the run’s effectivetrustedvalue. Pending or running jobs can have a null summary. Results respect current organization, authorship, and repository permissions.