Loading image...Kiro

Product

  • About Kiro
  • Agents
  • IDE
  • CLI
  • Web
  • Mobile
  • Crew
  • Pricing
  • Downloads

For

  • Enterprise
  • Startups
  • Students

Community

  • Overview
  • Ambassadors
  • Case studies
  • Discord
  • Events
  • Powers
  • Shop
  • Showcase

Resources

  • Docs
  • Blog
  • Changelog
  • FAQs
  • Report a bug
  • Suggest an idea
  • Billing support

Social

Site TermsLicenseResponsible AI PolicyLegalPrivacy PolicyCookie Preferences
Loading image...Kiro
  • Agents
  • Enterprise
  • Pricing
  • Docs
SIGN INDOWNLOADS
Loading image...Kiro

Get Started

InstallationAuthenticationYour first project

Models

OverviewAvailable modelsReasoning effortAWS GovCloud (US) models

Features

How Kiro worksLocal command sandboxACP integrations
Specs
Steering
Hooks
MCP
Permissions
Custom agents
Workflows
Agent Skills
Powers
Cloud sessionsMemoryCompactionKiroignoreCheckpoints and rewind
Built-in tools
Configuration scopes

IDE 1.x

What's new in 1.0
Setup & First Run
Editor
Chat
Experimental
Troubleshooting0.x reference

CLI

What's new in V3
Setup & First Run
Terminal UI
Chat
Fullscreen modeVoice modeHeadless modeACPAuto complete
Experimental
2.x reference

Crew

Quick startInstallationRunning 24/7
Chat
Agent Capabilities
Features
Interfaces
Apps
System & storageConfigurationSecurityTroubleshooting

Web

Setup & First RunIdentity Center
Connect your repositories
Working with the agent
Autonomous modeAutomationsMemoryConfiguration Sync
Sandbox

Mobile - Preview

Overview

Commands and Reference

CLI commandsSlash commandsBuilt-in toolsExit codesSettings

Billing

OverviewManaging your subscriptionUpgrading your planDowngrading your planCancelling your planPurchasing add-on creditsManaging your paymentsManaging usage notificationsManaging your taxesContacting billing supportDeleting your accountRelated questions

Enterprise

ConceptsOnboarding quickstart
Connecting your identity provider
Deployment optionsSubscribe your teamManage subscriptions
Governance
Monitor and track
SettingsManaged updatesBillingIAMSupported regions

Privacy and Security

OverviewData protectionCode referencesCompliance validationInfrastructure securityIAM permissionsFirewalls, proxies, and data perimetersVPC endpoints (AWS PrivateLink)

Guides

Overview
Language support
Learn by playing

Migration

Migrating from Q DeveloperMigrating from VSCodeUpgrading from Q CLI
  1. Docs
  2. Features
  3. Local command sandbox
View as Markdown

Local command sandbox

View as Markdown

The local command sandbox adds an operating-system boundary around shell commands run by Kiro's agent harness. It limits what each command and child process can reach without moving the agent itself into the sandbox.

Info

The local command sandbox is available in Kiro IDE 1.3 and later, and in Kiro CLI 2.31 and later local V3 sessions. It is off by default.

What the sandbox covers

The agent harness stays outside the sandbox. Before a shell command starts, permissions decide whether Kiro may run it. The sandbox then limits what the running command and its child processes can reach.

Inside the sandbox:

  • Terminal commands the agent runs, and every child process they start.
  • Stdio MCP server processes, when you turn on MCP wrapping. See Wrap stdio MCP servers.

Outside the sandbox:

  • The agent harness and its conversation with the model.
  • Built-in file tools. Permission rules still govern what they can read and write.
  • Remote HTTP and SSE MCP servers. Their network traffic does not follow sandbox rules.

The sandbox applies only to sessions running on your machine. Cloud sessions use the managed cloud sandbox instead.

The sandbox reduces what a command can do; it is not a guarantee of isolation. Keep reviewing proposed commands, and keep deny rules for operations that must never run.

Platform requirements

PlatformRequirement
macOSNone. Kiro uses the built-in Seatbelt sandbox through sandbox-exec.
LinuxBubblewrap (bwrap) on your PATH. Kiro does not install it. COMMON_DEPENDENCIES, and DEFAULT_BLOCKED with allowed hosts, also need socat. Install both through your distribution's package manager.
WindowsOne administrator setup before COMMON_DEPENDENCIES or DEFAULT_ALLOWED can run commands. Kiro IDE prompts you to complete it. In Kiro CLI, run /sandbox setup. DEFAULT_BLOCKED works before setup.

When the platform backend is missing, Kiro reports the sandbox as unavailable. Commands then run without operating-system isolation unless the current mode requires protection.

Use the sandbox

Select Command sandbox in the status bar. Kiro opens the active configuration file: the project file when one exists, otherwise your global file. If neither file exists, Kiro creates a global file containing {"enabled": false}.

To open the global file directly, run Open User Sandbox Config (JSON) from the command palette.

Set enabled to true, then choose a network mode:

json
{ "enabled": true, "networkAccess": "COMMON_DEPENDENCIES" }

Save the file. Valid changes apply to the running session. The status bar shows Applying, then Active.

StateMeaning
OffNo active configuration enables the sandbox.
ActiveCommands use the current sandbox and network mode.
ApplyingKiro is applying a configuration change.
ErrorThe change failed. The prior settings stay active.
UnavailableThe platform backend is missing. Commands run without operating-system isolation.

The tooltip also reports when requested MCP wrapping is unavailable.

Configuration

Both clients read sandbox.json at global and project levels:

ScopePathUse for
GlobalKiro IDE: ~/.kiro/settings/sandbox.json. Kiro CLI: $KIRO_HOME/settings/sandbox.json when set, otherwise ~/.kiro/settings/sandbox.json.Your default policy across projects.
Project<workspace-root>/.kiro/settings/sandbox.jsonTurning the sandbox on, or tightening it, for one repository.

In a multi-root IDE workspace, only the first workspace folder supplies the project file.

Keys

KeyRequiredValuesDefault
enabledYestrue, false
networkAccessNoDEFAULT_BLOCKED, COMMON_DEPENDENCIES, DEFAULT_ALLOWEDDEFAULT_BLOCKED
mcpSandboxingNotrue, falsefalse

networkAccess values are case-sensitive. Unknown keys are ignored.

How global and project settings combine

  • When the global policy is active, a project file can only tighten it. A project cannot set enabled to false, choose a more open network mode, or turn off MCP wrapping enabled globally.
  • When the global file is absent or has enabled: false, a project file with enabled: true turns on the sandbox for that project.

A repository you clone cannot use its project file to open network access or disable an active global sandbox policy.

Network modes

networkAccess sets the starting point for outbound network access from sandboxed commands. Your sandbox_network permission rules refine it.

ModeOutbound network
DEFAULT_BLOCKEDBlocked, except hosts allowed by a sandbox_network rule. This is the default.
COMMON_DEPENDENCIESCommon package, source, build, and container services are reachable. Other hosts stay blocked unless a rule allows them.
DEFAULT_ALLOWEDOpen. Sandboxed commands can reach any host. Do not rely on sandbox_network deny rules in this mode.

Use DEFAULT_BLOCKED for the tightest network control. Use COMMON_DEPENDENCIES when normal installs and builds need common development services. Use DEFAULT_ALLOWED only when network filtering is not required.

Allow specific hosts

sandbox_network is a permission capability. Host rules are applied in order. The first matching rule decides, unlike other permission capabilities where a deny always wins. Put specific hosts before broader wildcards that also match them.

Patterns are case-insensitive. They support exact host names and *.suffix wildcards.

yaml
# ~/.kiro/settings/permissions.yaml rules: - capability: sandbox_network match: ['packages.internal.example.com'] effect: allow # Keep this rule before the wildcard below. - capability: sandbox_network match: ['uploads.example-corp.net'] effect: deny - capability: sandbox_network match: ['*.example-corp.net'] effect: allow

Workspace rules in ~/.kiro/workspace-roots/<hash>/permissions.yaml work the same way for one project.

sandbox_network is not part of the all meta-capability. capability: all, effect: allow does not open sandboxed network access. Your fs_read and fs_write rules also shape which paths sandboxed commands can see and write.

Wrap stdio MCP servers

Set mcpSandboxing to true to start stdio MCP server processes inside the same sandbox as shell commands:

json
{ "enabled": true, "networkAccess": "DEFAULT_BLOCKED", "mcpSandboxing": true }

Remote HTTP and SSE MCP servers are not affected. Changing mcpSandboxing restarts local MCP servers, which can take about a minute. If wrapping fails for a server, command sandboxing stays active and Kiro reports that the server is not covered.

A project cannot turn off MCP wrapping enabled globally. Set it globally when you want it across projects, or in one project file when only that repository needs it. See MCP security best practices for broader server guidance.

Errors and recovery

A command cannot reach a host. Add a sandbox_network allow rule. You can also use COMMON_DEPENDENCIES for a common development service.

The sandbox is unavailable. On Linux, check that bwrap is on your PATH. Install socat when proxy filtering is needed. On Windows, complete the administrator setup. Until you fix the cause, commands run without operating-system isolation. After fixing it, reload the IDE window or start a new CLI session.

Windows refuses COMMON_DEPENDENCIES or DEFAULT_ALLOWED. Complete the one-time setup from the IDE prompt, or run /sandbox setup in CLI. You can use DEFAULT_BLOCKED before setup.

MCP servers are not covered. Wrapping failed for one or more stdio servers. Shell command sandboxing remains active. Check the server command and MCP logs or status. Saving a changed mcpSandboxing value restarts local MCP servers.

The status bar shows Error. The file is malformed or unreadable, or Kiro could not apply the change. Prior settings stay active. Fix the JSON and save it again. Use Reload Window when Kiro offers it.

Related

  • Permissions for sandbox_network, fs_read, and fs_write
  • Headless mode for non-interactive CLI runs
  • MCP security best practices for local and remote servers
  • How Kiro works for the agent harness
Page updated: October 13, 2026
How Kiro works
ACP integrations