# Security and Compliance
Source: https://docs.antimetal.com/admin/security
How Antimetal handles security, privacy, and access
Antimetal operates on your production infrastructure. This page covers how we handle security, privacy, and data access.
## Security
All data is encrypted in transit using TLS 1.2 or higher and at rest using AES-256. Credentials are stored using AWS KMS. Infrastructure is hosted on AWS and provisioned via Infrastructure-as-Code with least-privilege IAM roles. Access to production systems is controlled, logged, and protected with MFA.
* Background checks are conducted for all employees
* Employees receive regular security training
* Endpoint protection and device management enforced via MDM
* Regular penetration testing and third-party audits
* Customer data is never entered into external AI tools by employees
Antimetal is SOC 2 Type II certified. Our controls and procedures have been independently audited and validated to meet industry standards for security, availability, and confidentiality.
Contact [security@antimetal.com](mailto:security@antimetal.com) for a copy of the report.
Antimetal is HIPAA compliant. Protected health information is handled in accordance with HIPAA requirements. Contact [security@antimetal.com](mailto:security@antimetal.com) for details.
Report security concerns to [security@antimetal.com](mailto:security@antimetal.com).
## Privacy and Data
All tenant data runs in isolated environments with strict separation boundaries. There is no cross-contamination between customers. Lightweight metadata such as alert identifiers and investigation status may be temporarily retained for tracking purposes.
Antimetal uses third-party AI APIs from Anthropic, OpenAI, and Google. All providers are configured with no-data-retention policies. Customer data is never used to train shared or generalized models. Each customer's data is handled in a segregated environment with multi-tenant isolation controls.
AI accelerates root cause analysis and generates remediation recommendations tied to evidence. All AI outputs are linked to underlying data so customers can validate results independently. Audit logs capture all AI-assisted activity. AI augments investigation quality but never operates outside customer visibility.
## Integration Permissions
Each integration requests only the minimum permissions needed. See the individual integration pages for details on specific scopes and access levels.
Minimal OAuth scopes, no message persistence
Repository access, pull requests, CI/CD monitoring
Read-only IAM Role via CloudFormation
Read-only service account across projects
Read-only API and Application keys
Read-only service account or access policy token
Read-only internal integration token
Read-only User API Token
Read-only API key
## Best Practices
Antimetal surfaces recommendations tied to evidence. Review them before acting. All recommendations include links to the underlying data so you can verify independently.
Use the [Antimetal dashboard](https://overlook.antimetal.com) to store integration credentials. Do not share API keys over Slack or email.
When possible, scope integration permissions to specific projects, repositories, or environments. Each integration page documents the minimum required permissions.
# Retrieve artifacts by IDs
Source: https://docs.antimetal.com/api-reference/artifacts/retrieve-artifacts-by-ids
/assets/openapi.mintlify.json get /artifacts
Fetches multiple evidential artifacts by their IDs. Supports up to 100 IDs per request.
# Create a new issue
Source: https://docs.antimetal.com/api-reference/issues/create-a-new-issue
/assets/openapi.mintlify.json post /issues
Creates a new issue and optionally starts an automated investigation. The issue is created from the provided details, with a seed generated internally. Investigation runs asynchronously - poll GET /issues/{id} to check status.
# Delete an issue
Source: https://docs.antimetal.com/api-reference/issues/delete-an-issue
/assets/openapi.mintlify.json delete /issues/{id}
Permanently deletes an issue and all associated data
# Fetch an issue by ID (UUID)
Source: https://docs.antimetal.com/api-reference/issues/fetch-an-issue-by-id-uuid
/assets/openapi.mintlify.json get /issues/{id}
Retrieves detailed information about a specific issue by its ID (UUID)
# Fetch investigation results by ID (UUID)
Source: https://docs.antimetal.com/api-reference/issues/fetch-investigation-results-by-id-uuid
/assets/openapi.mintlify.json get /issues/{id}/results
Retrieves detailed investigation results including root cause analysis and remediation steps
# Fetch issue by number
Source: https://docs.antimetal.com/api-reference/issues/fetch-issue-by-number
/assets/openapi.mintlify.json get /issues/by_number/{number}
Lightweight endpoint to retrieve basic issue information by issue number
# Fetch issues for an organization
Source: https://docs.antimetal.com/api-reference/issues/fetch-issues-for-an-organization
/assets/openapi.mintlify.json get /issues
Returns a paginated list of issues for the authenticated organization
# Update issue status by ID (UUID)
Source: https://docs.antimetal.com/api-reference/issues/update-issue-status-by-id-uuid
/assets/openapi.mintlify.json patch /issues/{id}
Updates the status of an existing issue by its ID (UUID)
# Ask Antimetal's AI agent a question
Source: https://docs.antimetal.com/api-reference/query/ask-antimetals-ai-agent-a-question
/assets/openapi.mintlify.json post /query
Sends a question to Antimetal's AI agent and returns a natural language answer. Pass the returned conversation_id in subsequent requests to continue the conversation. Set stream: true (and Accept: text/event-stream) to receive a Server-Sent Events stream.
# MCP
Source: https://docs.antimetal.com/connect
Connect to Antimetal's MCP server from your AI tools
Antimetal exposes a remote MCP server at `https://mcp.antimetal.com` that any MCP-compatible client can connect to. This gives your AI tools direct access to Antimetal's investigation, root cause analysis, and remediation capabilities.
Before connecting, make sure you've [set up your integrations](/integrations/overview) so Antimetal has access to your infrastructure and observability data.
For Claude Code and Cursor, install the [Antimetal Skills plugin](/product/skills) instead — it bundles the MCP server with pre-built investigation and fix workflows.
For other clients, add the server using the configuration below. All of these clients support OAuth for remote MCP and will prompt you to log in on first use. You can also generate an API key from the [Antimetal dashboard](https://overlook.antimetal.com/settings/api-keys) and use it as a bearer token if you prefer.
Add the following to your VS Code settings (`settings.json`):
```json theme={null}
{
"mcp": {
"inputs": [
{
"type": "promptString",
"id": "antimetal-api-key",
"description": "Antimetal API Key",
"password": true
}
],
"servers": {
"antimetal": {
"type": "http",
"url": "https://mcp.antimetal.com",
"headers": {
"Authorization": "Bearer ${input:antimetal-api-key}"
}
}
}
}
}
```
Add the following to your Claude Desktop config:
* macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
* Windows: `%APPDATA%\Claude\claude_desktop_config.json`
```json theme={null}
{
"mcpServers": {
"antimetal": {
"type": "http",
"url": "https://mcp.antimetal.com",
"headers": {
"Authorization": "Bearer YOUR_ANTIMETAL_API_KEY"
}
}
}
}
```
Replace `YOUR_ANTIMETAL_API_KEY` with your actual API key.
Add the following to your Windsurf MCP config (`~/.codeium/windsurf/mcp_config.json`):
```json theme={null}
{
"mcpServers": {
"antimetal": {
"type": "http",
"url": "https://mcp.antimetal.com",
"headers": {
"Authorization": "Bearer YOUR_ANTIMETAL_API_KEY"
}
}
}
}
```
```bash theme={null}
codex mcp add antimetal --transport http https://mcp.antimetal.com -- --header "Authorization: Bearer $ANTIMETAL_API_KEY"
```
# Antimetal Overview
Source: https://docs.antimetal.com/index
Learn how to set up and use Antimetal
Antimetal handles everything that happens after you deploy. It investigates, fixes, and prevents issues by connecting your cloud platforms, observability tools, and code.
* **Diagnose** - When an alert fires, Antimetal pulls together data from your logs, metrics, traces, code, and incident history to identify the root cause.
* **Fix** - Antimetal generates production-ready fixes tied to evidence, so your team can review, validate, and ship.
* **Prevent** - Antimetal surfaces blind spots and inefficiencies before they become incidents.
## Get Started
Connect your monitoring, observability, and infrastructure tools to Antimetal.
How issues move from alert to root cause to resolution.
Connect to Antimetal from Claude Code, Cursor, VS Code, and other AI tools.
SOC 2 Type II certified. How we handle security, privacy, and data access.
# Azure
Source: https://docs.antimetal.com/integrations/azure
Create an Entra service principal for Antimetal monitoring
## Overview
This guide walks you through creating a Microsoft Entra service principal to enable the Antimetal integration for Azure. Once connected, Antimetal can investigate incidents across App Service, Azure SQL (Database, Elastic Pool, and Managed Instance), Storage, Service Bus, Function Apps, AKS, Container Apps, Cosmos DB, MySQL, PostgreSQL, Redis, Event Hubs, Data Explorer, and Application Insights. It queries Log Analytics (KQL), Azure Monitor metrics, Resource Health, and the Activity Log to correlate symptoms with configuration changes and deployment events.
Go to the Azure integration setup in the Antimetal dashboard.
## Prerequisites
* An Azure subscription you want to monitor
* Permission to register applications in Microsoft Entra ID
* Permission to assign roles on the target subscription (Owner or User Access Administrator)
## Setup
1. Go to the [Azure Portal](https://portal.azure.com)
2. Navigate to **Microsoft Entra ID > App registrations**
3. Click **+ New registration**
4. Fill in:
* **Name:** `antimetal-monitoring`
* **Supported account types:** Accounts in this organizational directory only
5. Click **Register**
6. On the overview page, copy the **Application (client) ID** and **Directory (tenant) ID**
1. In the app registration, go to **Certificates & secrets**
2. Click **+ New client secret**, set a description and expiration
3. Click **Add**
4. Copy the secret **Value** immediately
The secret value is only shown once. Copy it before leaving the page.
For each subscription you want to monitor:
1. Navigate to **Subscriptions** and open the target subscription
2. Go to **Access control (IAM)**
3. Click **+ Add > Add role assignment**
4. Select the **Reader** role, then click **Next**
5. Under **Members**, select **User, group, or service principal**, click **+ Select members**
6. Search for `antimetal-monitoring`, select it, click **Select**
7. Click **Review + assign**, then **Review + assign** again to confirm
8. Copy the **Subscription ID** from the subscription overview
```bash theme={null}
az ad sp create-for-rbac \
--name antimetal-monitoring \
--role Reader \
--scopes /subscriptions/
```
Output includes `appId` (client ID), `password` (client secret), and `tenant`. Save these values.
```bash theme={null}
az role assignment create \
--assignee \
--role Reader \
--scope /subscriptions/
```
### Configure the Antimetal integration
1. Navigate to the Antimetal Azure integration page
2. Paste the **Tenant ID**, **Client ID**, **Client Secret**, and (optional) default **Subscription ID**
3. Click **Connect**
## Permissions and Access
Antimetal uses a read-only service principal scoped to the subscriptions you select. No write, delete, or configuration changes are performed in your Azure environment.
| Role | Scope | Access |
| --------------------------------------------------------------------------------------------------------- | ---------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [Reader](https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles/general#reader) | Selected subscriptions | Standard Azure built-in role. Grants `*/read` across the subscription — view all resources and their configuration, but no data-plane access (no Key Vault secrets, no Storage blob contents, no database rows) and no mutations. |
Antimetal uses this access to list resources, read configuration and deployment state, query Azure Monitor metrics and Log Analytics (KQL), and read the Activity Log. Queries against databases (SQL, Cosmos, MySQL, PostgreSQL, Data Explorer) and Storage blob contents are only available if you separately grant the corresponding data-plane roles — Reader alone does not enable them.
If a Log Analytics workspace uses [workspace-level access control mode](https://learn.microsoft.com/en-us/azure/azure-monitor/logs/manage-access#access-control-mode) (default for workspaces created before March 2019), additionally assign the **Log Analytics Reader** role at the workspace level. Workspaces created after March 2019 default to resource-context mode and do not require this.
Credentials are stored encrypted and rotated per your Entra app's secret expiration policy. Revoke access at any time by deleting the `antimetal-monitoring` app registration or removing its role assignments.
# Azure DevOps
Source: https://docs.antimetal.com/integrations/azure-devops
Create a read-only Personal Access Token for Antimetal
## Overview
This guide walks you through creating an Azure DevOps Personal Access Token (PAT) to enable the Antimetal integration for inspecting repositories, pull requests, work items, pipelines, wikis, and test plans.
Only connect this integration if your team uses Azure DevOps for source control, work items, or pipelines. It is not required for the [Azure](/integrations/azure) cloud integration.
Go to the Azure DevOps integration setup in the Antimetal dashboard.
## Prerequisites
* An Azure DevOps organization
* Permission to create Personal Access Tokens
* Access to the projects you want Antimetal to inspect
## Setup
In Azure DevOps, click your profile icon (top right) and select **User Settings > Personal Access Tokens**.
1. Click **+ New Token**
2. Fill in:
* **Name:** `Antimetal`
* **Organization:** the organization you want to connect
* **Expiration:** set according to your org's rotation policy
3. Under **Scopes**, select **Custom defined**
Select **Read** access only for each of the following scopes. See Microsoft's [Personal Access Tokens guide](https://learn.microsoft.com/en-us/azure/devops/organizations/accounts/use-personal-access-tokens-to-authenticate?view=azure-devops) for full details.
* **Code** (Read)
* **Work items** (Read)
* **Build** (Read)
* **Test Management** (Read)
* **Wiki** (Read)
* **Project and team** (Read)
Do not enable any write, manage, or execute scopes.
Click **Create**, then copy the token value.
The token is only shown once. Copy it before leaving the page.
In the Antimetal UI, paste:
* **Organization URL:** `https://dev.azure.com/`
* **Personal Access Token:** the token you just created
Click **Connect**.
## Permissions and Access
Antimetal uses a read-only PAT scoped to the permissions below. No write operations are performed in your Azure DevOps organization.
| Scope | Access |
| ---------------- | ------------------------------------------------------------------ |
| Code | Read repositories, branches, pull requests, commits, file contents |
| Work items | Read work items, queries, iterations |
| Build | Read build definitions, runs, logs, artifacts |
| Test Management | Read test plans, suites, and results |
| Wiki | Read wiki pages and search |
| Project and team | Read project and team metadata |
Tokens are stored encrypted. Azure DevOps PATs have a maximum 1-year lifetime — rotate before expiration by creating a new token and updating the credential in Antimetal. Revoke access at any time by deleting the token from **User Settings > Personal Access Tokens**.
# CloudWatch
Source: https://docs.antimetal.com/integrations/cloudwatch
Set up an IAM Role with CloudWatch access for Antimetal
## Overview
This guide walks you through setting up an IAM Role with CloudWatch access to enable the Antimetal integration.
Go to the CloudWatch integration setup in the Antimetal dashboard.
## Prerequisites
* An AWS account
* A user account with permissions to create cross-account IAM Roles
## Setup
Navigate to **Integrations > CloudWatch > Connect** in the Antimetal dashboard, or use the link above. Antimetal generates a unique External ID for your organization automatically.
Click **Deploy Stack in AWS**. This opens the [CloudFormation quick-create page](https://console.aws.amazon.com/cloudformation/home?region=us-east-1#/stacks/quickcreate?stackName=AntimetalCloudWatchIntegration\&templateURL=https://antimetal-cloudformation-templates.s3.amazonaws.com/antimetal-cloudwatch-role.yaml\¶m_TrustedAccountId=379240662884) with the External ID and Trusted Account ID pre-filled in the template parameters.
To prevent Antimetal from accessing certain log groups, paste comma-separated log group ARNs in the **ExcludedLogGroups** field.
You can find ARNs in **CloudWatch Console > Log groups > \[select group] > Copy ARN**.
Scroll to the bottom and check the box confirming that the stack may create IAM resources.
Click **Create stack** and wait until the status shows `CREATE_COMPLETE`. Then go to the **Outputs** tab and copy the **Value** next to **RoleArn** — this is the Role ARN you'll paste into Antimetal.
Back in the Antimetal dashboard, paste the Role ARN, select your AWS region, and click **Add**. The External ID is pre-filled automatically.
## Update an existing integration
When Antimetal asks you to update your permissions, follow these steps:
1. Open [CloudFormation](https://console.aws.amazon.com/cloudformation/) in the AWS account and region where you created the Antimetal stack, then select that stack.
2. Choose **Update**, then **Replace existing template**. Select **Amazon S3 URL** and enter:
`https://antimetal-cloudformation-templates.s3.amazonaws.com/antimetal-cloudwatch-role.yaml`
3. Keep your existing **TrustedAccountId**, **RoleName**, and **ExcludedLogGroups** values. For **ExternalId**, select **Use existing value**.
4. Keep the remaining stack options, acknowledge IAM resource changes, review the proposed update, and choose **Update stack**.
5. Wait for `UPDATE_COMPLETE`. Your Role ARN stays the same, so you do not need to reconnect the integration in Antimetal.
## Resources
* [Video walkthrough](https://www.loom.com/share/d90db9a046374bcbbb9d13df0d105cdb?sid=67d3cfe4-dcff-4de7-a31d-5bcde43c68cf)
## Permissions and Access
Antimetal uses a read-only cross-account IAM Role provisioned via CloudFormation. No write operations are performed in your AWS environment.
# Datadog
Source: https://docs.antimetal.com/integrations/datadog
Generate API and application keys in Datadog for Antimetal
## Overview
This guide walks you through generating the necessary API and application keys in Datadog to enable the Antimetal integration.
Go to the Datadog integration setup in the Antimetal dashboard.
## Prerequisites
* A Datadog account with permissions to generate API keys
* Access to Organization Settings in Datadog
## Setup
Go to [Datadog](https://app.datadoghq.com), click on your user icon (bottom left), and select **Organization Settings**.
Click **API Keys** in the left sidebar, then select **New Key**. Name it `Antimetal`.
Save the secret API key securely — it won't be shown again.
Click **Application Keys** in the left sidebar, then click **New Key**. Name it `Antimetal`.
By default, the app key inherits the owner's permissions. To limit access, click **Edit Scopes** and grant read access to:
* APM
* Case and Incident Management
* Compliance
* Dashboards
* Error Tracking
* Events
* Log Management
* Metrics
* Monitors
* Service Level Objectives
* Synthetics
See the [full list of permissions](https://docs.datadoghq.com/account_management/rbac/permissions/).
Paste the keys and select your region in the Antimetal UI.
You can find your region by looking at your Datadog URL (e.g., `app.datadoghq.eu` for EU).
## Resources
* [Video walkthrough](https://www.loom.com/share/49f8c7ceb68e461db82d26f8bc21e40a?sid=0e1374cc-1e36-46b2-b9f1-ac5883412545)
## Permissions and Access
Antimetal uses read-only API and Application keys. No write operations are performed in your Datadog environment. Required scopes: APM, Metrics, Logs, Events, Monitors, Case & Incident Management.
# GCP
Source: https://docs.antimetal.com/integrations/gcp
Create a GCP service account for Antimetal monitoring
## Overview
This guide explains how to connect GCP to Antimetal for traces, logs, and metrics, and add optional permissions for cost optimization.
Go to the GCP integration setup in the Antimetal dashboard.
## Prerequisites
* A GCP account with permissions to create service accounts
* Access to IAM & Admin settings
* Admin access to the projects you want to monitor
## Setup
1. Go to [Google Cloud Console](https://console.cloud.google.com)
2. Navigate to the project where you do your monitoring/observability work
3. Go to **IAM & Admin > Service Accounts**
4. Click **+ CREATE SERVICE ACCOUNT**
5. Fill in the details:
* **Name:** `antimetal-monitoring`
* **ID:** `antimetal-monitoring`
* **Description:** `Service account for Antimetal monitoring integration`
6. Click **CREATE AND CONTINUE**
7. Copy the created service account email address
For each project you want to monitor (including the one where you created the service account):
1. Navigate to the target project
2. Go to **IAM & Admin > IAM**
3. Click **+ GRANT ACCESS**
4. In **New principals**, enter the service account email:
```
antimetal-monitoring@[YOUR-PROJECT-ID].iam.gserviceaccount.com
```
5. Assign these roles:
* `Monitoring Viewer` (roles/monitoring.viewer)
* `Logs Viewer` (roles/logging.viewer)
* `Cloud Trace User` (roles/cloudtrace.user)
* `Error Reporting Viewer` (roles/errorreporting.viewer)
* `Cloud Asset Viewer` (roles/cloudasset.viewer)
6. Click **Save**
7. Repeat for all projects you want to monitor
1. Go to **IAM & Admin > Service Accounts**
2. Click on your `antimetal-monitoring` service account
3. Go to the **Keys** tab
4. Click **ADD KEY > Create new key** with JSON format
Create the service account in your monitoring/observability project and add IAM bindings for each project you want to monitor, granting these roles:
* `roles/cloudasset.viewer`
* `roles/errorreporting.viewer`
* `roles/monitoring.viewer`
* `roles/logging.viewer`
* `roles/cloudtrace.user`
Create a JSON key for the service account. This can be done through IaC output or manually through the console.
### Configure the Antimetal integration
1. Navigate to the Antimetal GCP integration page
2. Upload or paste the contents of the downloaded JSON key file
3. Specify the project IDs you granted permissions to
### Required permissions summary
The service account will have these read-only permissions across your specified projects:
| Role | Access |
| ---------------------- | --------------------------------------------------------- |
| Monitoring Viewer | Read access to metrics and monitoring data |
| Logs Viewer | Read access to Cloud Logging data |
| Cloud Trace User | Read access to distributed tracing data |
| Error Reporting Viewer | Read access to error groups and events |
| Cloud Asset Viewer | Read access to cloud resource metadata and configurations |
## Cost optimization permissions (Beta)
These permissions help Antimetal identify unused or oversized infrastructure, assess existing commitments, and estimate potential savings using your resource usage and pricing.
To let Antimetal assess your GCP resources for cost-saving opportunities, add the permissions below to the service account created above or already connected to Antimetal. Reuse its existing JSON key and keep its current permissions.
### Project access
This role provides read-only access. It does not permit changing or deleting infrastructure.
Open **IAM & Admin > IAM** in each relevant project. Find the existing service-account email and click **Edit principal**, or select **Grant access** if it is not listed. Add the role below:
| Role | Where to grant it | What it enables |
| ----------------------------------------------- | ---------------------------------------- | ------------------------------------------------------------------- |
| Recommender Viewer (`roles/recommender.viewer`) | Projects included in the cost assessment | Read Google's optimization recommendations and supporting insights. |
Include projects that purchased resource-based commitments, even if they are outside the workload projects.
### Billing account access
Billing account access adds the commitment and pricing information that project access alone cannot provide:
* **Existing API-visible supported spend-based and flexible commitment orders:** the amount purchased, commitment term, and expiry. This helps estimate future commitment costs and account for commitments you already own where coverage is available.
* **Resource-based committed use discount (CUD) recommendations and insights:** Google's assessment of additional commitment opportunities across the billing account.
* **Customer-specific prices:** discover available SKUs and their current account-specific rates to estimate savings using your pricing rather than public list prices.
This supports commitment planning and estimated savings. It does not provide historical billed spend or a forecast of your total cloud bill.
A billing account administrator must grant the following roles to your existing Antimetal service account on each billing account included in the assessment.
Using an account with permission to create organization-level custom roles, open **IAM & Admin > Roles** and select the organization that owns the billing account. Create a custom role named **Antimetal Cost Viewer** with these permissions:
| Permission | What it enables |
| ----------------------------------- | ------------------------------------------------------------------------------------------------ |
| `consumerprocurement.orders.list` | List API-visible orders, including supported spend-based and flexible commitment orders. |
| `consumerprocurement.orders.get` | Read commitment amounts, terms, and expiry details for a supported API-visible commitment order. |
| `billing.billingAccountPrice.get` | Read the current account-specific price for an identified supported usage-rate SKU. |
| `billing.billingAccountSkus.list` | List account-visible SKUs and their metadata. |
| `billing.billingAccountPrices.list` | List current account-specific SKU prices in bulk. |
Create the role at **organization scope**, not project scope. Project-defined custom roles cannot be assigned to billing accounts. [Google's custom-role instructions](https://docs.cloud.google.com/billing/docs/how-to/custom-roles)
For each billing account, open **Billing**, select the account, and go to **Account management**. Add the existing service-account email as a principal and assign the applicable roles below. If it is already listed, edit its access without removing existing roles.
| Role | What it enables | Where to grant it |
| ----------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Antimetal Cost Viewer** (created above) | Read supported commitment orders, discover SKUs, and retrieve customer-specific prices. | Relevant billing account. |
| **Spend Based Commitment Recommender Viewer** (`roles/recommender.ucsViewer`, Beta) | Read spend-based CUD recommendations and supporting insights. | Relevant billing account. |
| **Billing Account Usage Commitment Recommender Viewer** (`roles/recommender.billingAccountCudViewer`, Beta) | Read resource-based CUD recommendations and supporting insights. | Billing account when commitment discounts are shared across projects. If discounts apply only to the purchasing project, use `roles/recommender.viewer` on that project instead, as described under Project access. |
Order access covers the billing account and can include other Marketplace purchases, not only CUDs. Account-price reads expose customer pricing through Google's Preview Pricing API.
In **APIs & Services > Library**, check that the following APIs are enabled. Enable only those that are missing.
* **Recommender API** (`recommender.googleapis.com`) for recommendations and insights
* **Cloud Commerce Consumer Procurement API** (`cloudcommerceconsumerprocurement.googleapis.com`) for existing commitment orders
* **Cloud Billing API** (`cloudbilling.googleapis.com`) for pricing
Provide Antimetal with the project IDs and billing account IDs accessible to this service account.
## Permissions and Access
The cost optimization roles add read-only resource, commitment, and pricing access to the monitoring integration. Antimetal does not use these permissions to change infrastructure or purchase commitments.
# GitHub
Source: https://docs.antimetal.com/integrations/github
Connect your GitHub repositories to Antimetal
## Overview
This guide walks you through connecting your GitHub repositories to enable the Antimetal integration.
Go to the GitHub integration setup in the Antimetal dashboard.
## Prerequisites
* A GitHub account with admin access to the repositories you want to connect
* Permission to install GitHub Apps in your organization
## Setup
Navigate to the Antimetal UI and click **Connect GitHub**. This will redirect you to GitHub to install the Antimetal app.
Choose whether to grant access to all repositories or select specific ones.
Review the requested permissions and click **Install & Authorize**.
You'll be redirected back to the Antimetal UI. Verify that your repositories appear in the integrations page.
## Permissions and Access
The Antimetal GitHub App pulls CI status, deploys, security alerts, and PR activity into investigations. Antimetal only opens a pull request when an engineer asks for one. See [Fixes](/product/fixes) for how that works.
### Repository
| Permission | Access |
| ---------------------- | -------------- |
| Actions | Read |
| Checks | Read and write |
| Code scanning alerts | Read |
| Commit statuses | Read |
| Contents | Read and write |
| Dependabot alerts | Read |
| Deployments | Read |
| Discussions | Read |
| Environments | Read |
| Issues | Read and write |
| Merge queues | Read |
| Metadata | Read |
| Pull requests | Read and write |
| Secret scanning alerts | Read |
### Organization
| Permission | Access |
| ------------------------------ | ------ |
| Members | Read |
| Organization custom properties | Read |
# Grafana
Source: https://docs.antimetal.com/integrations/grafana
Connect Grafana Cloud or a self-hosted Grafana instance to Antimetal
## Overview
This guide walks you through connecting Grafana to Antimetal. Antimetal queries Grafana and the data sources wired into it, including Prometheus, Loki, Tempo, and Pyroscope, so you do not need a separate connection for each data source.
Go to the Grafana integration setup in the Antimetal dashboard.
## Setup
Choose the tab that matches your Grafana deployment.
### Prerequisites
* A Grafana Cloud account with access to Loki, Tempo, or Prometheus
* Permissions to view data sources and create access policies
Go to [grafana.com/profile/org](https://grafana.com/profile/org) and select your organization.
From the left sidebar, go to **Connections > Data Sources** and click on your Loki, Tempo, or Prometheus instance.
* Copy the **URL** under Connection (e.g., `https://logs-prod-036.grafana.net`)
* Copy the **User** under Authentication (a numeric ID, e.g., `1264142`)
1. Scroll down to the **Access Policies** section
2. Click **Create Access Policy**
3. Enter a name (e.g., `Antimetal`)
4. Under Permissions, enable all read permissions
5. Click **Create Token**
Copy the token. It is shown only once.
Provide the following in the Antimetal UI:
| Field | Value |
| ------------ | ----------------------- |
| **URL** | The full URL you copied |
| **Username** | The numeric user ID |
| **Password** | The access policy token |
A self-hosted instance usually lives inside your own network. Before connecting, review [Self-Hosted Observability](/integrations/self-hosted-observability) to make it reachable by Antimetal.
### Prerequisites
* A self-hosted Grafana instance, reachable over HTTPS from Antimetal
* Permission to create a service account and token in Grafana
Note the base URL of your Grafana instance, for example `https://grafana.internal.example.com`.
In Grafana, go to **Administration > Service Accounts > Add service account**. Assign the **Viewer** role for read-only access, then add a token.
Copy the token when it is shown. It cannot be retrieved later.
Provide the following in the Antimetal UI:
| Field | Value |
| ------------------------- | ----------------------------- |
| **Grafana URL** | The base URL of your instance |
| **Service Account Token** | The Viewer-scoped token |
## Permissions and Access
Antimetal uses read-only access: a Viewer-scoped service account token for self-hosted instances, or a read-only access policy token for Grafana Cloud. No write operations are performed.
# Honeycomb
Source: https://docs.antimetal.com/integrations/honeycomb
Create a Honeycomb Management API key for Antimetal
## Overview
This guide walks you through creating a Honeycomb Management API key to enable the Antimetal integration. Antimetal uses the key to query your datasets, traces, and triggers through Honeycomb's MCP server.
Go to the Honeycomb integration setup in the Antimetal dashboard.
## Prerequisites
* A Honeycomb team with [Honeycomb Intelligence](https://docs.honeycomb.io/security-compliance/honeycomb-intelligence/) enabled
* Team owner permission, which is required to create a Management API key
## Setup
Log in to Honeycomb and go to **Account > Team Settings > API Keys**.
Click **Create Management API Key** and name it `Antimetal`.
Select the **Model Context Protocol** and **Environments** scopes, and grant **Read** on both. No write scopes are needed.
Copy both the **Key ID** and the **Key Secret**.
The secret is shown only once. Save it securely.
Provide the key in the Antimetal UI in `KEY_ID:KEY_SECRET` format.
Antimetal selects the US (`mcp.honeycomb.io`) or EU (`mcp.eu1.honeycomb.io`) endpoint automatically based on your account.
## Permissions and Access
Antimetal uses a read-only Management API key scoped to Model Context Protocol and Environments. It is restricted to listing and reading datasets, running queries, and analyzing columns. No write operations are performed.
# Incident.io
Source: https://docs.antimetal.com/integrations/incident-io
Create an API key in Incident.io for Antimetal
## Overview
This guide walks you through creating an API key in Incident.io to enable the Antimetal integration.
Go to the Incident.io integration setup in the Antimetal dashboard.
## Prerequisites
* An Incident.io account with a Team subscription
* Permission to generate API keys
## Setup
Navigate to **Settings > API Keys**.
Click **Add New** and name the key `Antimetal`.
Enable the following permissions:
* View data, like public incidents and organisation settings
* View all incident data, including private incidents
* View catalog types and entries
* View all incident data, including private incidents, and manage incident memberships
* Read schedules
Click **Create**. On the next page, copy the API key.
This will only be shown once. Save it securely.
Paste the token in the Antimetal UI.
## Permissions and Access
Antimetal uses a read-only API key scoped to incidents, catalog entries, schedules, and organization data.
# Integrations Overview
Source: https://docs.antimetal.com/integrations/overview
Connect Antimetal to your existing tools and workflows
Connect Antimetal to the platforms your team already relies on. Antimetal pulls data from your cloud providers, monitoring tools, and source control to investigate, fix, and prevent production issues.
## How Integrations Work
All integrations are set up in the [Antimetal dashboard](https://overlook.antimetal.com/integrations). Some integrations require additional configuration in the third-party tool. Those have dedicated setup guides linked below.
## Monitoring and Observability
Metrics, logs, and incident data.
Dashboards, alerting, and data sources. Cloud or self-hosted.
Error and event data.
Logs, metrics, traces, and synthetics.
Distributed tracing and telemetry.
Log search and analysis.
Log aggregation and querying.
Metrics collection and alerting.
Log querying with LogsQL.
Prometheus-compatible metrics. Self-hosted or Cloud.
Distributed tracing.
Uptime monitoring and telemetry.
Product analytics and feature flags.
Search and analyze indices and clusters.
Error monitoring and stability tracking.
Application performance monitoring.
Product analytics and user behavior.
Log management and analytics.
Cloud-native observability.
Log analytics and monitoring.
Full-stack observability.
Logging and observability.
Log management and analysis.
## Cloud and Infrastructure
AWS CloudWatch logs and metrics.
Google Cloud traces, logs, and metrics.
Azure resources, Monitor metrics, and Log Analytics.
Analytics, monitoring, and observability.
AI Gateway logs, prompts, and responses.
DNS performance analysis and configuration.
Log streaming and analytics.
Deployments and hosting.
Cloud application hosting.
GitOps continuous delivery for Kubernetes.
## Incident Management
Incidents, services, and on-call schedules.
Incident data and schedules.
Incident management and response.
Alerting and incident management.
Monitoring and incident management.
## CI/CD
Pipelines, builds, and deployments.
Continuous integration and delivery.
Repos, pull requests, pipelines, work items, wikis, and test plans.
Feature flags and experimentation.
## Project Management
Issue tracking and project management.
Task management and project tracking.
Jira issues and project management.
Tasks, docs, and project management.
Project management for software teams.
## Security
Endpoint security and threat intelligence.
## Databases
Queries, schemas, and aggregations.
Database management, migrations, and auth.
Search and analyze indices.
MySQL database queries.
Serverless Postgres.
Serverless Redis and Kafka.
Managed PostgreSQL, Kafka, and ClickHouse.
Kafka topics, connectors, and schemas.
## Source Control
Repositories, pull requests, and CI/CD pipelines.
## Chat
Investigate alerts in real time via the Antimetal Slackbot.
Customer support tickets and conversations.
## Developer Tools
Pages, databases, and content.
Enterprise knowledge base.
Debug recordings with video and logs.
Meeting transcripts and summaries.
Service catalog and scorecards.
Service ownership and maturity.
Customer messaging and campaigns.
## All Integrations
For the full list, visit [antimetal.com/integrations](https://antimetal.com/integrations).
# PagerDuty
Source: https://docs.antimetal.com/integrations/pagerduty
Connect PagerDuty to Antimetal
## Overview
This guide walks you through connecting PagerDuty to Antimetal using a User API Token.
Go to the PagerDuty integration setup in the Antimetal dashboard.
## Prerequisites
* A PagerDuty account
* Permission to generate User API Tokens
## Setup
In PagerDuty, click your user profile icon, then select **My Profile** and **User Settings**.
In the **API Access** section, click **Create API User Token** and follow the prompts.
Copy the token and store it securely. It will only be shown once.
Paste the token in the Antimetal UI.
## Permissions and Access
Antimetal connects to PagerDuty with read-only access. No write operations are performed in your PagerDuty environment. Antimetal reads incidents, services, schedules, on-call data, and log entries to support investigation and root cause analysis.
# Self-Hosted Observability
Source: https://docs.antimetal.com/integrations/self-hosted-observability
Connect Antimetal to observability tools you host yourself, such as Grafana, Victoria Logs, Victoria Metrics, Prometheus, and Pyroscope
## Overview
Most observability vendors are SaaS, so Antimetal reaches them directly over their public API. Tools you host yourself are different: they usually live inside your own network or VPC and are not reachable from the public internet.
For these, Antimetal runs a dedicated, read-only connector for your organization. You provide the instance URL and a read-only token, and the connector queries that instance on your behalf. This page covers what the connectors need and how to make a private instance reachable.
It applies to:
* [Grafana (self-hosted)](/integrations/grafana)
* [Victoria Logs](/integrations/victoria-logs)
* [Victoria Metrics](/integrations/victoria-metrics)
* Prometheus and Pyroscope, when accessed as Grafana data sources
If you use a managed version of any of these (for example Grafana Cloud), follow the [Grafana](/integrations/grafana) guide instead. Managed instances are reached over their public endpoint and need no reachability setup.
## What the connector needs
Every self-hosted connector requires two things:
| Requirement | Detail |
| ------------------- | ------------------------------------------------------------------------------------ |
| **Instance URL** | The HTTPS endpoint of your instance, reachable from the Antimetal connector. |
| **Read-only token** | A bearer token or service account scoped to read only. Antimetal performs no writes. |
The connector only ever issues read queries. The specific tools it can call are restricted to a read-only allowlist per integration.
## Making a private instance reachable
If your instance is not exposed to the public internet, choose one of the following. You can start narrow and expand later.
Expose the instance over HTTPS, require the read-only token on every request, and restrict inbound access to Antimetal's egress IP. Traffic is encrypted in transit and authenticated, and only Antimetal's address can reach the endpoint.
Allowlist Antimetal's egress IP: `44.195.180.21/32`. This is a single static address, so it is safe to pin in your firewall rules.
To keep traffic off the public internet entirely, contact us at [support@antimetal.com](mailto:support@antimetal.com) to discuss private networking options such as a VPN or a private link between your network and the Antimetal connector.
## Permissions and Access
The connector uses a read-only token and is restricted to a read-only tool allowlist. No write or ingestion operations are performed. See each tool's page for the exact scope.
# Sentry
Source: https://docs.antimetal.com/integrations/sentry
Set up an internal integration in Sentry for Antimetal
## Overview
This guide walks you through setting up an internal integration in Sentry to enable the Antimetal integration.
Go to the Sentry integration setup in the Antimetal dashboard.
## Prerequisites
* A Sentry account with access to your organization's Settings
* Permission to create Internal Integrations
## Setup
Log in to [Sentry](https://sentry.io), click **Settings** in the navigation bar. Under **Integrations**, click **Create New Integration**, select **Internal Integration**, and click **Next**.
Name it `Antimetal` and grant read access to the following scopes:
* `project:read`
* `team:read`
* `issue & event:read`
* `organization:read`
* `member:read`
* `alerts:read`
Click **Save Changes**.
On the **Edit Internal Integration** page, scroll down to the authentication token section and click **Create New Token**.
Save the token securely — it won't be shown again.
Paste the token and your organization slug in the Antimetal UI.
You can find your organization slug in your general organization settings.
## Permissions and Access
Antimetal uses a read-only internal integration token scoped to projects, teams, issues, events, organization info, members, and alerts.
# Slack
Source: https://docs.antimetal.com/integrations/slack
Investigate alerts and get weekly digests, directly in Slack
## Overview
The Antimetal Slackbot connects to your Slack workspace and works in two ways:
* **Investigations** — when an alert fires in a connected channel, Antimetal posts a root cause analysis automatically or on demand, with suggested fixes
* **Weekly digest** — every Monday, Antimetal posts a plain-language recap of last week's alerts to a channel of your choice
AI-generated responses may occasionally be inaccurate or incomplete. Always verify suggested actions before applying them to production systems.
## Setup
**Prerequisites:** A Slack workspace where you have permission to install apps, and at least one alert channel where the bot should operate.
From the Antimetal dashboard, navigate to **Settings > Integrations** and click **Connect Slack**. You'll be redirected to Slack to authorize the app in your workspace.
Connect your Slack workspace from the Antimetal dashboard.
Invite `@Antimetal` to your alerts channel:
```bash theme={null}
/invite @Antimetal
```
You can also invite it from the channel's member settings.
Once added, the bot will post a welcome message in the channel confirming it's active and ready to investigate alerts.
## Investigations
### Auto-investigations
Auto-investigations run automatically when an alert fires in a channel where `@Antimetal` is present. You enable them per alert, not per channel.
In the Antimetal dashboard, navigate to **Settings > Issues** and select the alert you want to automate.
Toggle on **Auto-investigate** for that alert.
When the alert fires, Antimetal will automatically trigger an investigation and post the results in the thread.
### Manual investigations
Reply to any alert thread with `@Antimetal` to trigger an on-demand investigation. The bot detects the mention and runs a root cause analysis on that alert.
```
@Antimetal
```
## Weekly digest
Antimetal turns a week of noisy alerts into a short, prioritized list of what actually broke, delivered to your chosen channel every Monday at 9 AM Eastern.
Most monitoring fires hundreds of alerts a week. Flapping monitors, staging failures, P3 infrastructure warnings, and third-party analytics make up most of them. The digest suppresses that noise and groups the rest by root cause, so security incidents, broken auth, and complete feature failures surface first. Group names and vocabulary adapt to your product using your org's own rules, so the digest reads in terms of what your users were doing instead of the stack that failed underneath.
The digest is driven by the `/digest` slash command. Run it from any channel in your workspace.
### Enabling the digest
In the channel where you want digests delivered, run:
```
/digest setup
```
Antimetal confirms the delivery channel and the recurring schedule. The first digest posts on the next scheduled Monday. Run `/digest run` if you want a preview immediately.
### Commands
| Command | What it does |
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
| `/digest` | Shows whether the digest is configured and, when it is, lists the commands available to you. |
| `/digest setup` | Sets the current channel as the delivery destination and turns on the weekly schedule. Run again in a different channel to move the destination. |
| `/digest run` | Triggers an immediate one-off digest for the past 7 days. Posts to the configured delivery channel. |
| `/digest off` | Stops the weekly schedule and removes the delivery channel. Run `/digest setup` in any channel to re-enable. |
All responses are ephemeral. Only the user who ran the command sees the acknowledgement. The digest itself posts publicly to the configured delivery channel.
## Permissions
The Antimetal Slackbot requests the following OAuth scopes:
| Scope | Purpose |
| ------------------- | ---------------------------------------------------------------------------------- |
| `app_mentions:read` | Respond when mentioned in channels |
| `channels:history` | Read alert messages in public channels |
| `channels:join` | Join public channels when invited |
| `channels:read` | List available channels |
| `chat:write` | Post investigation results and remediation steps |
| `commands` | Register the `/digest` slash command for configuring and triggering weekly digests |
| `files:read` | Read files shared in conversations |
| `groups:history` | Read messages in private channels the bot is in |
| `groups:read` | List private channels the bot is invited to |
| `groups:write` | Manage private channels the bot is in |
| `im:history` | Read direct messages with the bot |
| `im:read` | View direct message conversations |
| `im:write` | Send direct messages (for onboarding DMs when a user opens the Messages tab) |
| `mpim:read` | View multi-party direct message metadata |
| `reactions:read` | Read message reactions |
| `reactions:write` | Add reactions to messages |
| `usergroups:read` | View user groups |
| `users:read` | View user profiles |
| `users:read.email` | View user email addresses |
The bot has no access to channels it hasn't been explicitly invited to. Slack message content is not persisted — lightweight metadata (alert identifiers, investigation status) may be temporarily retained for tracking purposes.
## Support
If you run into any issues with the Antimetal Slack integration, contact us directly at [support@antimetal.com](mailto:support@antimetal.com). We're here to help with installation, configuration, or anything else.
# Vercel
Source: https://docs.antimetal.com/integrations/vercel
Connect your Vercel account to Antimetal for deployment monitoring and runtime log analysis
## Overview
This guide walks you through connecting your Vercel account to Antimetal. Once connected, Antimetal can monitor your deployments, analyze build logs, and investigate runtime errors across all your Vercel projects.
Go to the Vercel integration setup in the Antimetal dashboard.
## Prerequisites
* A Vercel account with permissions to create access tokens
* If using Vercel Teams, your team slug (found in your team's URL: `vercel.com/`)
## Setup
Go to [Vercel Access Tokens](https://vercel.com/account/settings/tokens) and click **Create**.
* **Token Name**: `Antimetal`
* **Scope**: Select **Full Account** to allow Antimetal to access all teams and projects, or scope to a specific team
* **Expiration**: Choose an expiration that fits your security policy
Save the token securely — it won't be shown again.
Paste your access token in the Antimetal dashboard integration page.
We recommend entering your Vercel team slug to scope queries to the right team. This is the value in your team's URL: `vercel.com/`.
## What Antimetal Can Access
Once connected, Antimetal can:
* **List teams** — Discover all Vercel teams associated with your account
* **List projects** — Browse projects within a team
* **Get project details** — View project configuration and settings
* **List deployments** — Track deployment history and find failures
* **Get deployment details** — Investigate individual deployment status and metadata
* **Retrieve build logs** — Debug why deployments failed during the build step
* **Query runtime logs** — Search and filter production runtime logs by status code, source, time range, and more
## Permissions and Access
Antimetal uses your access token for **read-only** operations. No deployments are triggered, no settings are modified, and no data is written to your Vercel account.
# Victoria Logs
Source: https://docs.antimetal.com/integrations/victoria-logs
Connect your VictoriaLogs instance to Antimetal
## Overview
This guide walks you through connecting a VictoriaLogs instance to Antimetal. Antimetal runs a dedicated read-only connector that queries your instance using LogsQL.
Go to the Victoria Logs integration setup in the Antimetal dashboard.
VictoriaLogs is self-hosted only today (Cloud support is on the VictoriaMetrics roadmap). It usually lives inside your own network, so before connecting, review [Self-Hosted Observability](/integrations/self-hosted-observability) to make it reachable by Antimetal.
## Prerequisites
* A running VictoriaLogs instance, reachable over HTTPS from Antimetal
* A read-only bearer token if your instance requires authentication
## Setup
Note the base URL of your VictoriaLogs instance, for example `https://vmlogs.internal.example.com`.
If your instance is protected, provision a bearer token scoped to read-only query access.
| Field | Value |
| -------------------- | ------------------------------------------------------------- |
| **VictoriaLogs URL** | The base URL of your instance |
| **Bearer Token** | Read-only token (optional if the instance is unauthenticated) |
## Permissions and Access
Antimetal uses a read-only connector restricted to query and exploration tools (`query`, `hits`, `facets`, field and stream listings, and `stats_query`). VictoriaLogs exposes no write or ingestion tools, and none are enabled.
# Victoria Metrics
Source: https://docs.antimetal.com/integrations/victoria-metrics
Connect VictoriaMetrics (self-hosted or Cloud) to Antimetal
## Overview
This guide walks you through connecting VictoriaMetrics to Antimetal. Antimetal runs a dedicated read-only connector that queries your instance using PromQL and MetricsQL.
Go to the Victoria Metrics integration setup in the Antimetal dashboard.
## Setup
Choose the tab that matches your deployment.
A self-hosted instance usually lives inside your own network. Before connecting, review [Self-Hosted Observability](/integrations/self-hosted-observability) to make it reachable by Antimetal.
### Prerequisites
* A running VictoriaMetrics instance, reachable over HTTPS from Antimetal
* Whether your deployment is single-node or cluster
* A read-only bearer token if your instance requires authentication
Note the base URL of your instance, for example `https://vm.internal.example.com`, and whether it runs as `single` or `cluster`.
| Field | Value |
| ----------------------- | ------------------------------------------------------------- |
| **VictoriaMetrics URL** | The base URL of your instance |
| **Instance Type** | `single` or `cluster` |
| **Bearer Token** | Read-only token (optional if the instance is unauthenticated) |
### Prerequisites
* A VictoriaMetrics Cloud account
* An API key with read access
In the VictoriaMetrics Cloud console, create an API key with read access.
Provide the **Cloud API Key** in the Antimetal UI. No instance URL is required in Cloud mode.
VictoriaMetrics is Prometheus-compatible, so existing Prometheus queries work directly.
## Permissions and Access
Antimetal uses a read-only connector restricted to query and inspection tools (`query`, `query_range`, `labels`, `series`, `rules`, `alerts`, TSDB status, and, in Cloud, deployment and region inspection). No write operations are performed.
# Fixes
Source: https://docs.antimetal.com/product/fixes
Review a proposed fix, run it yourself, or open a PR straight from Antimetal
When an investigation finishes, Antimetal proposes one or more fixes on the **Fixes** tab of the issue. Antimetal does not apply fixes on your behalf. Every fix is reviewed and shipped by an engineer.
## What a fix looks like
A fix is one or more steps with rationale — a CLI command, a config change, a code change, or a mix of these.
Every issue produces both an immediate and a comprehensive fix:
| Category | What it solves |
| ----------------- | -------------------------------------------------------------------------------------------- |
| **Immediate** | The active symptom. Stops the bleeding so the issue isn't compounding while you investigate. |
| **Comprehensive** | The root cause. Prevents the issue from recurring. |
## Executing a fix yourself
Use the copy button on a code block to grab a snippet and run it from your terminal, admin console, or pipeline. The **Open in** menu at the top of the fix sends the full plan to your coding agent of choice. Antimetal does not run CLI commands or hit provider APIs for you.
## Opening a PR
🧪 **PR creation is experimental.** Engineers are responsible for validating every change before merging. Antimetal will never merge for you.
When a fix includes a code change, you can ship it as a PR directly from Antimetal. Before generating the change, Antimetal reads your `AGENTS.md`, `CLAUDE.md`, and any Cursor or Copilot rules files in the repo, alongside its memory of your system and past incidents — so the change follows your team's code style and conventions.
Antimetal does not run your tests or builds against the fix. Validate the change locally or in CI before merging.
The action menu gives you two paths: ship the PR (or a draft) straight from Antimetal, or take the diff to your own editor or coding agent.
**Ship from Antimetal**
* **Create PR** opens a pull request on your repo, branching from the default branch. Requires the [GitHub integration](/integrations/github). Once it's open, treat it like any other PR: push more commits, rebase, or rewrite the diff.
* **Create draft PR** does the same as a draft, so reviewers aren't pinged while you tighten things up. Mark it ready when it's where you want it.
**Take it to your editor**
* **Open in Codex / Cursor / Devin / GitHub Copilot** hands the fix and its context off directly so you can keep iterating in your editor.
* **Copy fix as prompt** copies the fix and surrounding context as a prompt you can paste into any IDE or coding agent.
### What an Antimetal PR looks like
* The PR is authored by `antimetal[bot]`, so reviewers can tell at a glance that the change came from an agent.
* Antimetal tags matching `CODEOWNERS` and assigns a directly responsible engineer for the change, picked by scoring each contributor's history with the affected code paths.
### How to respond to an Antimetal PR
When an Antimetal PR lands in your queue, you have four paths:
* **Approve and merge** if the diff is correct as-is.
* **Take it over the line** by adding commits, rebasing, or rewriting parts of the diff before merging.
* **Request changes** if the approach is right but the diff isn't. Leave inline review comments and add any context you have — feedback on what's off or what the agent missed helps Antimetal learn.
* **Close as not relevant** if the underlying issue no longer applies or the agent misread the situation.
# Issue Lifecycle
Source: https://docs.antimetal.com/product/issue-lifecycle
How issues move from alert to resolution in Antimetal
Issues are the core unit of work in Antimetal. Each issue represents something worth investigating: an alert from your monitoring stack, something Antimetal surfaced on its own, or a question you asked directly.
## How issues get created
**From alerts.** When an alert fires in a connected platform (Datadog, Sentry, PagerDuty, CloudWatch, etc.), Antimetal creates an issue and begins investigating automatically.
**From search.** Ask anything about your infrastructure, services, or systems and kick off an investigation from what you find.
**From chat.** Describe a problem directly in Antimetal to create an issue and start an investigation.
Multiple alerts can map to the same issue. Antimetal groups related signals together.
## Issue statuses
| Status | What it means |
| ----------------- | -------------------------------------------------------------------------------------------------------------------- |
| **Investigating** | Antimetal is actively gathering evidence and building a root cause analysis. Default state when an issue is created. |
| **Ready to fix** | Investigation complete. Root cause, findings, and remediation steps are available. |
| **Resolved** | Marked as fixed by your team. |
| **Muted** | Acknowledged but deprioritized. If a new alert fires for a muted issue, it will reopen. |
Antimetal automatically moves issues from **Investigating** to **Ready to fix** when the investigation completes. Resolved and Muted are set manually.
## Managing issues
The [issues board](https://overlook.antimetal.com/issues) is your control plane for managing all issues in one place. Issues are organized by status in a kanban view, and you can search and filter by status or environment.
## The investigation
Antimetal runs an automated investigation:
1. **Evidence collection.** Queries your connected platforms for logs, metrics, traces, events, and code relevant to the incident.
2. **Causal analysis.** Analyzes collected evidence, builds hypotheses, and tests them against the data.
3. **Root cause report.** Produces a summary of what's happening, why, and the supporting findings.
4. **Remediation.** Generates immediate fixes to get your systems back up, long-term root cause fixes, and preventative recommendations.
5. **Causal tree.** Builds a visual graph showing how issues propagate through your system.
You can follow the entire investigation live on the **Steps** tab, watching agent actions, queries, and proposed fixes as they happen in real time.
## Chat
Chat is always available on any issue. You can ask Antimetal questions about the issue, how it relates to other issues, provide additional context, or direct the investigation.
## Answers
The primary view once an investigation completes.
* **What's happening.** Plain-language summary of the incident.
* **Root cause.** The identified cause with an explanation of why it's happening.
* **Findings.** Individual pieces of evidence discovered during the investigation. Each finding links to the underlying data in your provider. Findings are categorized as cause, symptom, or ruled out.
The investigation also shows how many potential causes were ruled out.
## Fixes
Remediation actions surfaced once the investigation completes. **Immediate** fixes are step-by-step suggestions you run yourself (monitor or alert tweaks, CLI commands). **Comprehensive** fixes propose a code change with a diff you can ship as a PR or hand off to a coding agent. See [Fixes](/product/fixes) for what's supported today.
## Steps
A live view of the investigation's chain of thought. Each step is expandable, showing the full input and output: what Antimetal queried, what data came back, and how it reasoned about the evidence.
## Causal Tree
A visual graph showing how issues propagate through your system. Maps out which symptoms led to which causes, what was ruled out, and how everything connects.
## Versions
Each time an investigation is regenerated or new evidence meaningfully changes the analysis, Antimetal creates a new version with a summary of what changed. You can switch between versions to see how the analysis evolved.
# Search
Source: https://docs.antimetal.com/product/search
Ask anything about your infrastructure, services, and systems
Search is how you ask questions and explore your infrastructure in Antimetal. Instead of switching between monitoring tools, run a natural-language query and get answers grounded in real data from your connected platforms.
## How it works
Go to [Search](https://overlook.antimetal.com/chats/new) and type a question about your infrastructure. Antimetal queries your connected platforms, including logs, metrics, traces, events, and code, and returns an answer with supporting evidence.
Examples of things you can search:
* "What's the p99 latency for the payments service?"
* "Are there any errors in the auth service logs from the last hour?"
* "What changed in the checkout service since yesterday?"
* "How much CPU is the API gateway using?"
## Starting an investigation from search
If search surfaces something that needs attention, you can create an issue directly from the results. This kicks off a full [investigation](/product/issue-lifecycle#the-investigation) with root cause analysis and remediation steps.
## Data sources
Search pulls from every platform you've connected to Antimetal. The more [integrations](/integrations/overview) you have, the more complete your results will be.
# Skills
Source: https://docs.antimetal.com/product/skills
Use Antimetal directly from your AI coding tools
Antimetal's plugin lets you interact with your infrastructure investigations, search, and issue management without leaving your AI coding tools. Any MCP-compatible client can connect.
## What you can do
With the Skills integration, your AI tools can:
* **Search your infrastructure.** Run natural-language queries across all connected platforms, the same way [Search](/product/search) works in the Antimetal dashboard.
* **Investigate issues.** Trigger and follow investigations with root cause analysis and remediation steps.
* **Manage issues.** Create, view, and update [issues](/product/issue-lifecycle) directly from your editor or terminal.
* **Query your data.** Pull logs, metrics, traces, and events from your connected integrations.
### Skills
* **`/investigate`** — Entry point for any software problem. Searches issues, queries Antimetal's AI, reads investigative reports and causal graphs, and routes to fix.
* **`/fix`** — Apply Antimetal's remediation to your codebase, adapted for your local environment.
* **`/antimetal-mcp-setup`** — Configure the MCP connection (OAuth or API key).
## Getting set up
Make sure you've connected the platforms you want Antimetal to query. See [Integrations](/integrations/overview) for the full list.
Within a Claude Code session, add the Antimetal marketplace and install the plugin:
```bash theme={null}
/plugin marketplace add antimetal/skills
/plugin install antimetal
```
The first time you use an Antimetal tool or skill, Claude Code will open a browser window to log in to your Antimetal account via OAuth. Tokens are stored securely and refreshed automatically.
Install from the [Cursor Marketplace](https://cursor.com/marketplace) by searching for **Antimetal**, or use the command palette:
```bash theme={null}
/add-plugin antimetal/skills
```
Cursor uses an API key for authentication:
1. Generate an API key from [API Keys Settings](https://overlook.antimetal.com/settings/api-keys).
2. Set the environment variable in your shell profile (`~/.zshrc`, `~/.bashrc`, etc.) so it persists:
```bash theme={null}
export ANTIMETAL_API_KEY="your-api-key-here"
```
3. Restart Cursor to pick up the environment variable.
Antimetal's MCP server is available at `https://mcp.antimetal.com`. See the [setup instructions](/connect) for configuration specific to your client:
* [VS Code](/connect#vs-code)
* [Claude Desktop](/connect#claude-desktop)
* [Windsurf](/connect#windsurf)
* [Codex](/connect#codex)
## Example prompts
```
Investigate the login latency spike from this morning
What are the open high severity issues?
Apply the remediation for the Redis connection timeout issue
What services had the most errors last week?
Triage my current incidents
```
# Quick Start
Source: https://docs.antimetal.com/quick-start
Get up and running with Antimetal
## Prerequisites
* You have connected all your [integrations](/integrations/overview).
## Search with Antimetal
You can ask Antimetal broad questions related to your infrastructure and architecture. Antimetal will leverage the rich understanding it has about your system to give you an answer.
## Investigate an Issue
In order for a new issue to show up on the issues page, kick off an investigation against an alert in [Slack](/integrations/slack).
### Live View
As the investigation is on-going, you will be presented with Antimetal's live chain of thought, giving you clear insight into its reasoning.
The inputs and outputs to all tool calls are directly accessible, enabling you to understand exactly what data Antimetal is pulling in.
### Answers
Once the investigation is complete, you will be directed to the Answers tab, where you will be given clear insight into what happened, the root cause (with an Antimetal confidence score) and a Causal Graph, to highlight the reasoning pathway that Antimetal took to arrive at its conclusion.
Antimetal also presents findings, which directly support its root cause diagnosis. Once again, these findings are completely auditable. They represent the data deemed most relevant to the root cause, and is only a small portion of the data that Antimetal looked over.
### Fixes
The fixes tab contains remediations proposed by Antimetal to address the root cause.
Each fix contains a detailed explanation, as well the ability to copy it as a prompt or open it in your IDE.
### Chat
If you want to ask a question about the report, or add more context, you can do so through the chat experience. You can also choose add more context for Antimetal to use to regenerate the investigation.