Integrations and Environments
This page walks through the end-to-end setup:
Creating an environment
Authorizing GitHub
Creating and configuring integrations (Slack / Linear)
How integrations work
At a high level, an integration wires together three things:
Your Warp team
A remote environment that knows how to build and run your code
A trigger surface, like Slack or Linear, where you tag @Warp or DM the bot.
Warp receives the thread/issue content.
Warp spins up (or reuses) an environment based on your Docker image and setup commands.
The agent clones the configured repositories, runs your setup commands, and executes the workflow.
Results are posted back into Slack/Linear and reflected in your repos (i.e., in the form of PRs)
Setting up an integration consists of three high-level steps.
Create an environment for the agent to run your code inside.
Authorize GitHub access so Warp can clone repositories, write code to the correct repos, debug issues, run a cloud version of your codebase, and open pull requests.
Configure the Warp app with an integration.
Creating an environment
What is an environment?
When agents run in the background or in the cloud (via Slack, Linear, etc.), they need a place to execute code. An environment defines that execution context.
An environment consists of:
A Docker image
A set of GitHub repositories
Optional setup commands
You can use one environment per codebase, or share an environment across multiple related repos (e.g. frontend + backend).
1. Docker image
The Docker image is the base system where your code runs. It should include:
Language runtimes (Node, Go, Rust, Python, etc.)
Build tools and CLIs (e.g. cargo, npm, pip)
Any utilities or dependencies that rarely change
Requirements
The image must be publicly accessible on Docker Hub.
You can validate this by running
docker pull <your-image>locally.The image does not need to contain your code. Warp will handle cloning repositories into the container.
Warp will either:
Use an existing official image (e.g. rust:latest, node:20-bullseye, python:3.11), or
Help you build and push a custom image if you have a multi-language stack or more complex dependencies.
2. A set of relevant Github repositories
Warp clones these into the environment each time the agent runs.
Each environment defines the set of repos that agents can access.
Warp clones these repos each time an agent session starts.
You’ll be prompted to install the Warp GitHub app and grant it access to specific repos or orgs.
You can include multiple repos in a single environment, for example:
your-org/frontendyour-org/backend
Public vs private repos
If you only use public repos, the agent can read them without GitHub authorization, but cannot open PRs or push changes.
To enable write operations (PRs, branches, commits), the Warp GitHub app must have access and the triggering user must have write permissions.
3. Optional setup commands
Setup commands run on every new agent session:
They are executed after cloning repositories and before the agent starts its workflow.
Use them for project-specific prep, such as:
Installing frequently changing dependencies
Running bootstrap scripts
Building artifacts or seeding test data
Example environments
Web dev project
node:20-bullseye
your-org/frontend-react your-org/backend-api
npm install -g pnpm
cd frontend-react && pnpm install
cd backend-api && pnpm install
Python project
Custom image based on python:3.11
your-org/cool_python_project
cd cool_python_project && pip install -r requirements.txt
How to create an environment
You can create environments either directly through the CLI or using a guided Agent flow.
Option A — Create it directly via CLI
If you already know what you want:
warp environment create \
--name <name> \
--docker-image <image> \
--repo <owner/repo> \
--repo <owner/repo> \
--setup-command "<command1>" \
--setup-command "<command2>"Key flags:
--name– human-readable label for the environment.--docker-image– image name on Docker Hub.--repo– can be repeated for each repo.--setup-command– can be repeated; commands run in the order provided.
You can inspect existing environments with: warp environment list
Option B — Use the guided setup (/create-environment)
If you’d like Warp to analyze your repos and suggest an environment configuration, use the guided setup Slash Commands: /create-environment
You can run it:
In a git repo directory with no arguments, or
With one or more paths/URLs:
# File paths
/create-environment ./warp-internal ./warp-server
# owner/repo
/create-environment warpdotdev/warp-internal warpdotdev/warp-server
# GitHub URLs
/create-environment https://github.com/warpdotdev/warp-internal.gitThe guided flow will:
Detect the repositories and their languages/toolchains.
Look for an existing Dockerfile or recommend an official base image.
If needed, generate a custom Dockerfile, build the image, and push it to Docker Hub (you may be prompted to log into Docker).
Suggest reasonable setup commands based on your scripts and package managers.
Create the environment through the CLI and return the environment ID.
That environment can then be reused across multiple integrations.
Setting up an integration
Once you have at least one environment, you can create integrations that connect it to Slack or Linear.
warp integration create linear
# or
warp integration create slackIf you omit --environment, the CLI will show a list of environments and prompt you to choose one.
The CLI then:
Links the integration to your Warp team and environment.
Opens a browser flow to install the Warp app into your Slack workspace or Linear workspace.
Generates an integration ID you can later list or delete.
You can optionally attach a custom prompt that is applied to all runs for that integration:
warp integration create slack \
--environment <ENV_ID> \
--prompt "Always prefix PR titles with [WARP-AGENT] and add detailed test steps."Team access and identity mapping
Integrations are scoped to your Warp team, not to a single user. If you create a Slack or Linear integration for your team, everyone on that team can use @Warp in the configured workspace.
Team and billing requirements
To use integrations:
Your team must be on a plan that supports add-on credits
Supported: Build and Business (new)
Not supported (legacy plans): Pro, Turbo, Lightspeed, legacy Business. Learn more about these plan changes in AI FAQs.
Your team must have at least 20 add-on (Reload Credits (Add-on Credits)) credits available
Integrations run entirely on usage-based pricing
They do not draw from an individual user’s monthly base credits
All usage is billed to the team’s add-on credit balance
If your team does not meet these requirements or run out of Reload Credits (Add-on Credits), integrations will not run.
Identity mapping
Warp maps identities by email address:
The email on your Slack or Linear account must match the email on your Warp account
Each teammate must authorize GitHub the first time they trigger an integration if they want agents to open PRs or push branches on their behalf
Data & permissions
Slack / Linear
When you install the Warp app:
Warp gains access to the Slack channels or Linear teams where the app is installed.
Access cannot currently be restricted to specific individual threads or tickets within that workspace/team.
For each run, Warp collects:
The thread or issue content you tagged (and relevant context, such as previous messages in that thread).
Warp only stores the content that becomes part of the agent prompt.
Warp does not store unrelated workspace data.
You can DM the Warp bot directly, mention it in channels, or tag it on specific issues/tickets, depending on the integration.
GitHub
Warp’s GitHub behavior is constrained by two layers:
Installation scope of the Warp GitHub app
When installing the app, you choose which orgs and repos Warp can access.
This can be changed later in your GitHub settings.
Permissions of the user who triggered the run
When an agent runs, it uses the GitHub permissions of the triggering user.
If the user only has read access, agents cannot open PRs or push branches.
Agents cannot escalate permissions or access repos the user cannot see.
Practical implications:
Warp can only clone, read, and write to repos that:
Are included in the environment definition and
Are visible to both the Warp GitHub app and the triggering user.
Troubleshooting
Environments
How do I see what environment my integration is using?
List your integrations:
warp integration listThis shows each integration, its ID, and the environment it’s linked to. Use this to confirm which environment to inspect or update before making changes.
How do I see what’s inside that environment?
Once you know the environment ID, run:
warp environment get <ENV_ID>This prints the full configuration, including:
The environment ID (used in other commands)
The name
The Docker image
Associated repos
This is the most reliable way to verify what the agent will see when it runs.
How do I add or remove repos and setup commands?
Use warp environment update. You can modify environments incrementally without recreating them.
Add a repo:
warp environment update <ENV_ID> --repo owner/repoRemove a repo:
warp environment update <ENV_ID> --remove-repo owner/repoAdd a setup command:
warp environment update <ENV_ID> --setup-command "your command"Remove a setup command (must match exactly):
warp environment update <ENV_ID> --remove-setup-command "exact command"Notes:
Warp may prompt you to adjust GitHub app permissions when adding repos.
Setup commands run in the order they are defined.
How do I delete an environment?
If an environment is no longer needed:
warp environment delete <ID>Only do this once you’ve confirmed no active integrations are relying on that environment. If an integration points to a deleted environment, requests from Slack/Linear will fail until you create a new integration with a valid environment.
Integrations
How do I figure out what environment my integration is using?
List your integrations:
warp integration listThis shows each integration, its ID, and the environment it’s attached to. Use this when you’re unsure which environment to update or delete.
I created a new environment, but don’t see it when running warp integration create
Check:
Environment exists and is healthy:
warp environment listYou’re on the correct Warp team. Make sure your local CLI is logged into the same team where the environment was created.
If both look correct and the environment still doesn’t appear, recreate it and confirm there were no errors during creation.
GitHub & repo access issues
I’m being asked to authorize GitHub when creating/using an environment
This happens when:
You add a repo that Warp doesn’t have access to yet, or
You personally haven’t granted the Warp GitHub app permissions for that repo.
Follow the GitHub popup flow to install/adjust the Warp GitHub app.
The agent can’t open PRs or push changes to my repo
Check the following:
Repo is part of your environment.
Make sure the repo is listed in:
warp environment get <id>
Warp GitHub app has access to that repo
In GitHub’s settings, confirm the Warp app is installed and that the repo is selected.
You have write access
The agent inherits your GitHub permissions. If you only have read access, Warp can’t open PRs or push branches on your behalf.
Docker image & environment failures
I see errors like “pull access denied” or “repository does not exist”
Check:
The Docker image name and tag are correct.
The image is public on Docker Hub.
You can pull it locally:
docker pull <image_name>
If local docker pull fails, fix the image visibility/name first, then recreate or update the environment with a working image.
The agent can’t find tools or runtimes inside the environment
This usually means the Docker image is missing required dependencies. Fix by either:
Updating the Dockerfile used to build the image, then pushing a new version to Docker Hub and updating the environment with the new image, or
Adding additional setup commands to install the missing tools:
warp environment update --setup-command "apt-get update && apt-get install -y "
Last updated
Was this helpful?