Cloud Agents
Cursor Cloud Agent Security and Network Access, Explained
Cloud Agents run in isolated VMs in Cursor's AWS infrastructure and are available in Privacy Mode. Secrets are encrypted at rest and in transit, and each is set as an Environment Variable, Runtime Secret or Build Secret. Every commit is signed with an HSM-backed Ed25519 key. Agents reach the internet by default, and network access modes can restrict that.

On this page
- How does Cursor protect secrets passed to cloud agents?
- How are cloud agent commits verified and access locked down?
- What should I know about how cloud agents run my code?
- How long does Cursor retain cloud agent data?
- How do I control which networks cloud agents can reach?
- Which network setting wins: the user, the environment, or the team?
- Do cloud agents need inbound access to reach a private service?
- What IP ranges do cloud agents connect from?
How does Cursor protect secrets passed to cloud agents?
Secrets provided to Cloud AgentsAgents that run in a Cursor-managed virtual machine, check out the repo, do the work and open a pull request, then shut down, with no load on your laptop. Press Enter for the full definition. are encrypted at rest and in transit, and no one other than the Cloud Agent user can see them. You decide how exposed each secret is by setting its type:
- Secret type
- Environment Variable
- Exposure
- Visible to the cloud agent; encrypted at rest and in transit
- Best for
- Non-sensitive configuration the agent benefits from seeing, such as flags or public URLs
- Secret type
- Runtime Secret
- Exposure
- Loaded as an env var, but redacted from tool-call results, chat transcript, commits, and commit messages and replaced with
[REDACTED] - Best for
- Sensitive credentials that should not be exposed to the agent or committed
- Secret type
- Build Secret
- Exposure
- Available only to the Docker build process; not exposed to the running agent's environment
- Best for
- Private package registries or build-time credentials
| Secret type | Exposure | Best for |
|---|---|---|
| Environment Variable | Visible to the cloud agent; encrypted at rest and in transit | Non-sensitive configuration the agent benefits from seeing, such as flags or public URLs |
| Runtime Secret | Loaded as an env var, but redacted from tool-call results, chat transcript, commits, and commit messages and replaced with [REDACTED] | Sensitive credentials that should not be exposed to the agent or committed |
| Build Secret | Available only to the Docker build process; not exposed to the running agent's environment | Private package registries or build-time credentials |
Runtime Secrets were previously called Redacted Secrets. Because they still function internally as environment variables, they remain visible to users interacting with the agent's environment via the Terminal.
Runtime Secret redaction is narrower than the name suggests. The value stays in the process environment, which is how your test suite can authenticate at all. What gets replaced with [REDACTED] is the copy that would otherwise land in tool-call results, the chat transcript, commits and commit messages. Treat the type as a control on what gets written down, and assume anyone who can open a Terminal in that environment can read the value.
To use a Build Secret securely inside your Dockerfile, reference it from a RUN step with a Docker secret mount, for example RUN --mount=type=secret,id=MY_TOKEN,env=MY_TOKEN,required=true ./scripts/install-private-deps.sh.
This exact topic is a hands-on Lesson: Choose the right Cursor surface — about 7 minutes, free to read. Or try it live in the simulator →
Rather do it than read about it? Run 11 interactive Cursor walkthroughs in a simulated editor. Free, no account needed.
How are cloud agent commits verified and access locked down?
Two controls cover provenance and access, and neither needs per-agent setup.
- Signed commits
- Cloud AgentsAgents that run in a Cursor-managed virtual machine, check out the repo, do the work and open a pull request, then shut down, with no load on your laptop. Press Enter for the full definition. sign every commit with an HSM-backed Ed25519 key, automatically and with no setup. On GitHub the commits show a "Verified" badge, and Cloud Agent PRs satisfy branch protection rules that require signed commits.
- Protected Git Scopes
- Team admins can lock a Git organization to your Cursor organization so only your teams can start Cloud AgentsAgents that run in a Cursor-managed virtual machine, check out the repo, do the work and open a pull request, then shut down, with no load on your laptop. Press Enter for the full definition. on its repositories.
A signature proves where a commit came from, not that anyone reviewed it. A branch rule that checks only for a signature passes Cloud Agent PRs with no extra configuration, so it has not reviewed anything on your behalf. Of the two controls, we think Protected Git Scopes changes your exposure more, because it decides who can start an agent on those repositories at all.
What should I know about how cloud agents run my code?
Cursor lists six things you should know about how Cloud AgentsAgents that run in a Cursor-managed virtual machine, check out the repo, do the work and open a pull request, then shut down, with no load on your laptop. Press Enter for the full definition. run, and several of them describe risks you take on by running one:
- Grant read-write privileges to Cursor's GitHub app for the repos you want to edit; Cursor uses this to clone the repo and make changes.
- Your code runs inside Cursor's AWS infrastructure in isolated VMs and is stored on VM disks while the agent is accessible.
- The agent has internet access by default; you can configure network egress controls for users, teams, and saved environments to restrict the domains it can access.
- The agent auto-runs all terminal commands so it can iterate on tests, unlike the foreground agent, which requires approval for every command. Auto-running introduces data exfiltration risk: an attacker could use a prompt injection attack to trick the agent into uploading code to a malicious site.
- If Privacy ModeCursor's setting that guarantees code data is not used for training by Cursor or its model providers, and that an admin can enforce org-wide; data-retention terms are a separate, contractual layer. Press Enter for the full definition. is disabled, Cursor collects prompts and dev environments to improve the product.
- If you disable Privacy ModeCursor's setting that guarantees code data is not used for training by Cursor or its model providers, and that an admin can enforce org-wide; data-retention terms are a separate, contractual layer. Press Enter for the full definition. when starting a cloud agent and then enable it mid-run, the agent continues with Privacy Mode disabled until it completes.
The auto-run item carries the most risk, because running every command is also what a prompt injection needs to get code out of the VM. Cursor's Run Modes page says the same of Cloud AgentsAgents that run in a Cursor-managed virtual machine, check out the repo, do the work and open a pull request, then shut down, with no load on your laptop. Press Enter for the full definition.: Run Modes apply to local agents, and a Cloud Agent runs inside its own dedicated machine, so it never asks you to approve an action.
The two pages describe local agents differently. The security page says a foreground agent asks before every command. On the Run Modes page, a local agent's mode decides which commands run without asking, and Run Everything runs every tool call automatically.
The network access modes further down address the Cloud Agent risk. They limit where code can go once a command runs.
How long does Cursor retain cloud agent data?
Every run stores two kinds of data, and each follows its own retention rule.
- Conversation history
- The agent's transcript: prompts, model responses, tool calls and demo artifacts. Kept indefinitely by default so you can revisit and resume past runs.
- Environment snapshots
- Encrypted point-in-time copies of the VM disk that let agents start or resume without recloning. Stored for a maximum of 30 days of inactivity. Each start or resume extends the expiry by another 30 days, and a snapshot unused for 30 days is deleted automatically, regardless of plan or policy.
The Delete Agent API removes a cloud agent's conversation transcript and its artifacts on demand. It doesn't delete environment snapshots, which can't be deleted on demand and follow the 30-day window instead. Plan around the snapshot: it is a copy of the VM disk, and it outlives the agent you deleted. If a credential ever reached that disk, rotate it instead of waiting out the window.
Custom retention windows are in early access for select Enterprise teams. Admins can set the team's Cloud Agent retention window to Indefinite or 90 days from Team Settings on the Cloud AgentsAgents that run in a Cursor-managed virtual machine, check out the repo, do the work and open a pull request, then shut down, with no load on your laptop. Press Enter for the full definition. dashboard. Setting it to 90 days runs a background job that deletes conversations older than the window, and it applies to every agent run the team owns, including saved-environment and API runs. Snapshots keep their 30-day inactivity window. Switching back to Indefinite stops further deletions but does not restore data already removed.
How do I control which networks cloud agents can reach?
By default, Cloud AgentsAgents that run in a Cursor-managed virtual machine, check out the repo, do the work and open a pull request, then shut down, with no load on your laptop. Press Enter for the full definition. reach the internet. You control outbound traffic with one of three access modes, which users, saved environments and team admins set from the Cloud Agents dashboard. The modes apply to Cursor-hosted Cloud Agents, while runs on Self-Hosted Machines use the machine's own network, firewall and proxy.
- Mode
- Allow all network access
- Behavior
- Cloud AgentsAgents that run in a Cursor-managed virtual machine, check out the repo, do the work and open a pull request, then shut down, with no load on your laptop. Press Enter for the full definition. can reach any external host; no domain restrictions apply.
- Mode
- Default + allowlist
- Behavior
- Cloud AgentsAgents that run in a Cursor-managed virtual machine, check out the repo, do the work and open a pull request, then shut down, with no load on your laptop. Press Enter for the full definition. can reach the default domains plus any domains you add to your allowlist.
- Mode
- Allowlist only
- Behavior
- Cloud AgentsAgents that run in a Cursor-managed virtual machine, check out the repo, do the work and open a pull request, then shut down, with no load on your laptop. Press Enter for the full definition. can only reach the domains you explicitly add to your allowlist.
| Mode | Behavior |
|---|---|
| Allow all network access | Cloud AgentsAgents that run in a Cursor-managed virtual machine, check out the repo, do the work and open a pull request, then shut down, with no load on your laptop. Press Enter for the full definition. can reach any external host; no domain restrictions apply. |
| Default + allowlist | Cloud AgentsAgents that run in a Cursor-managed virtual machine, check out the repo, do the work and open a pull request, then shut down, with no load on your laptop. Press Enter for the full definition. can reach the default domains plus any domains you add to your allowlist. |
| Allowlist only | Cloud AgentsAgents that run in a Cursor-managed virtual machine, check out the repo, do the work and open a pull request, then shut down, with no load on your laptop. Press Enter for the full definition. can only reach the domains you explicitly add to your allowlist. |
Even in Allowlist only mode, a small set of domains stay accessible so Cloud Agents can function, including Cursor's own services and source control management (SCM) providers.
We suggest starting on Default + allowlist, whose default domains are the ones the desktop agent's sandbox uses, and tightening once you know the host list. Allowlist only is tempting because you write its whole boundary yourself, but it breaks first. Beyond your list, only a small set of domains stays reachable, Cursor's own services and SCM providers among them. Whatever your install step fetches fails until you add it, and a wildcard becomes the easy fix.
Cursor-hosted Cloud AgentsAgents that run in a Cursor-managed virtual machine, check out the repo, do the work and open a pull request, then shut down, with no load on your laptop. Press Enter for the full definition. upload artifacts (screenshots, videos, and log references shown on PRs) to cloud-agent-artifacts.s3.us-east-1.amazonaws.com. If you use Default + allowlist or Allowlist only, add that exact host. Don't broaden it to *.s3.us-east-1.amazonaws.com: the wildcard opens egress to every bucket in the region and creates an exfiltration path for a prompt-injected agent. Blocking the host only disables uploads; sessions and other tool calls keep working.
Workers on Self-Hosted Machines upload to agent-stores.s3.us-east-1.amazonaws.com and fall back to cloud-agent-artifacts only when that store isn't available, so a worker's firewall has to block both hosts to stop uploads. My Machines lists every host a worker needs.
Which network setting wins: the user, the environment, or the team?
The environment wins, then the user, then the team default, and each level can set its own mode and allowlist. A user-level setting applies to every Cloud Agent you create. A saved environment can set a mode outright, or inherit the user or team setting and optionally add an environment allowlist. That lets a production-adjacent environment run Allowlist only while the rest stay on Default + allowlist. The team-level allowlist is also the sandbox default network allowlist, so one list covers both.
When a team-level setting exists: an environment's own mode applies to agents using that environment; if the environment inherits and a user has configured a setting, the user setting takes precedence; otherwise the team default applies. Enterprise admins can use Lock Network Access Policy so the team-level setting applies to every member and users cannot override it. A locked setting doesn't reach Self-Hosted Machines, including runs routed there by Require Self-Hosted Machines.
Precedence matters more as a team grows. On a small team, everyone sets their own mode and a mistake gets fixed by asking. On a larger one, a team default is only a default, because a member who already set a preference keeps it. An admin who switches the team to Allowlist only has changed things only for people who never configured a setting of their own.
Lock Network Access Policy makes the team setting apply to every member's Cursor-hosted agents, and locking is Enterprise-only. When a run fails on network access, check which scope applied before you edit anything. Changing a level that didn't apply leaves the run failing the same way.
Do cloud agents need inbound access to reach a private service?
No. Cloud AgentsAgents that run in a Cursor-managed virtual machine, check out the repo, do the work and open a pull request, then shut down, with no load on your laptop. Press Enter for the full definition. do not need to run on your hardware, and your private services do not need to accept inbound traffic from the public internet. For a service in a VPC or intranet, run Tailscale userspace networking, Cloudflare Tunnel, or a similar private-network client inside the agent environment. The agent connects out through an authenticated path while the service stays where it is.
The right client depends on the target. Cloudflare Tunnel fits a service you can reach through an authenticated HTTPS hostname, because the agent then calls that hostname like any other external URL and you allowlist it the same way. For TCP targets such as private databases, use a tunnel client that exposes a local TCP listener and point the agent at localhost instead.
Enterprise teams with private GitHub Enterprise Server or GitLab Enterprise can use private connectivity with AWS PrivateLinkAn AWS connection Cursor uses for private Git provider and repository-origin traffic; it does not cover model-provider traffic. Press Enter for the full definition. or Cloudflare Tunnel. The setup guide covers the Tailscale flags and where to store Cloudflare Access tokens.
You don't need to self-host the runtime to reach a private database. My Machines and Team Pools are for owning the machine that runs tool calls, which is a different problem. Choose where cloud agents run has that comparison.
What IP ranges do cloud agents connect from?
Outbound connections from Cloud AgentsAgents that run in a Cursor-managed virtual machine, check out the repo, do the work and open a pull request, then shut down, with no load on your laptop. Press Enter for the full definition. come from specific IP ranges. Cursor publishes them in CIDR notation through a JSON API endpoint, so you can allowlist them on firewalls if needed. Fetch them with curl https://cursor.com/docs/ips.json, which returns these fields:
- version
- Schema version number for the API response.
- modified
- ISO 8601 timestamp of when the IP ranges were last updated.
- cloudAgents
- An object of IP ranges keyed by cluster.
- gitEgressProxy
- The IP addresses used by the git egress proxy.
Watch modified, because it is the only signal in the payload that the ranges moved. A firewall rule built from a single curl can keep passing review long after it stopped matching what Cursor uses.
The git egress proxy carries only git traffic. Other requests from the agent, including GitHub API calls and gh, come from the Cloud Agent ranges. Teams that use Cloud AgentsAgents that run in a Cursor-managed virtual machine, check out the repo, do the work and open a pull request, then shut down, with no load on your laptop. Press Enter for the full definition. alongside Origin add a further list of IPs on top of the proxy addresses. Cursor calls that list stable and gives teams on IP allow lists advance notice before any address is added or removed.
Cursor changes its IP addresses from time to time for scaling and operational needs, and does not recommend allowlisting by IP address as your primary security mechanism. If you must use the ranges, Cursor strongly encourages regular monitoring of the JSON API endpoint. For git hosts specifically, Cursor recommends the git egress proxy IP allow list, which routes all git traffic through a narrower set of IPs and works across all git hosts, including GitHub, GitLab, Azure DevOps, and Bitbucket.
Frequently asked questions
Are Cloud Agents available in Privacy Mode?
Yes, but not in Privacy Mode (Legacy), which blocks the cloud storage Cloud Agents need. Cursor never trains on your code and only retains code for running the agent. If Privacy Mode is disabled, Cursor collects prompts and dev environments to improve the product. If you enable Privacy Mode mid-run after starting with it disabled, the agent finishes the run with Privacy Mode disabled.
What's the difference between a Runtime Secret and an Environment Variable secret?
An Environment Variable secret is visible to the cloud agent and is best for non-sensitive configuration such as flags or public URLs. A Runtime Secret (formerly Redacted Secret) is still loaded as an environment variable, but Cursor redacts it from the agent's tool-call results, chat transcript, commits and commit messages and replaces it with [REDACTED]. Because it still works as an env var internally, users who open the environment's Terminal can see it.
Are the Default + allowlist domains the same as the desktop agent's sandbox allowlist?
Yes. Cursor documents the default domains in Default + allowlist mode as the same default network allowlist the desktop Agent's sandbox uses. The team-level allowlist an admin configures on the Cloud Agents dashboard also applies to both Cloud Agent network access and the sandbox network policy, so there is no second list to maintain.
Can I delete a cloud agent's data on demand?
You can use the Delete Agent API to permanently delete a cloud agent's conversation transcript and its artifacts. It does not delete environment snapshots, which can't be deleted on demand and instead follow a rolling 30-day inactivity retention window.
Sources & last verified
- Cursor Docs - Cloud Agent Security & Network
- Cursor Docs - Run Modes: default network allowlist and Cloud Agents
- Cursor - Protected Git Scopes (model & integration management)
- Cursor - Enterprise private connectivity
- Cursor Docs - Self-Hosted Machines: what leaves your network
Cursor ships frequently. Last updated October 28, 2026.