---
title: "Create a NetworkPolicy."
method: POST
path: "/v1/network-policies"
tags: ["network-policies"]
---

# Create a NetworkPolicy.

`POST /v1/network-policies`

Create a new NetworkPolicy with the specified egress rules. The policy can then be applied to blueprints, devboxes, or snapshot resumes.

## Request body

- NetworkPolicyCreateParameters — Parameters required to create a new NetworkPolicy.
  - `name` string, required — The human-readable name for the NetworkPolicy. Must be unique within the account.
  - `description` string, nullable — Optional description for the NetworkPolicy.
  - `allow_all` boolean, nullable — (Optional) If true, all egress traffic is allowed (ALLOW_ALL policy). Defaults to false.
  - `allow_devbox_to_devbox` boolean, nullable — (Optional) If true, allows traffic between the account's own devboxes via tunnels. Defaults to false. If allow_all is true, this is automatically set to true.
  - `allowed_hostnames` string[], nullable — (Optional) DNS-based allow list with wildcard support. Examples: ['github.com', '*.npmjs.org'].
  - `allowed_cidrs` AllowedCidr[], nullable — (Optional) IPv4 CIDR-based allow list with optional port restrictions, additive with allowed_hostnames. Example: [{'cidr': '10.12.0.0/16', 'ports': [{'port': 443}]}].
    - `cidr` string, required — IPv4 CIDR block in canonical form (host bits zero), e.g. '10.12.0.0/16'.
    - `ports` PortRule[], nullable — (Optional) Ports allowed for this CIDR. Empty or omitted means all ports and protocols.
      - `port` integer, required — The allowed port (1-65535), or the start of a port range.
      - `end_port` integer, nullable — (Optional) Inclusive end of the port range (port-65535). Omit for a single port.
      - `protocol` 'TCP' | 'UDP' — L4 protocol for a port rule.
  - `allow_agent_gateway` boolean, nullable — (Optional) If true, allows devbox egress to the agent gateway for credential proxying. Defaults to false.
  - `allow_mcp_gateway` boolean, nullable — (Optional) If true, allows devbox egress to the MCP hub for MCP server access. Defaults to false.
  - `allow_runloop_mirrors` boolean, nullable — (Optional) If true, allows devbox egress to Runloop's package/image registry mirrors. Defaults to false. Implicitly allowed when allow_all is true.

## Response `200`

NetworkPolicy created successfully.

- NetworkPolicyView — A NetworkPolicy defines egress network access rules for devboxes. Policies can be applied to blueprints, devboxes, and snapshot resumes.
  - `id` string, required — The unique identifier of the NetworkPolicy.
  - `name` string, required — The human-readable name of the NetworkPolicy. Unique per account.
  - `description` string, nullable — Optional description of the NetworkPolicy.
  - `egress` EgressRulesView, required — Egress (outbound) network rules for a NetworkPolicy.
    - `allow_all` boolean, required — If true, all egress traffic is allowed and other fields are ignored. Used for ALLOW_ALL policies.
    - `allow_devbox_to_devbox` boolean, required — If true, allows traffic between the account's own devboxes via tunnels.
    - `allowed_hostnames` string[], required — DNS-based allow list with wildcard support. Examples: ['github.com', '*.npmjs.org', 'api.openai.com']. Empty list with allow_all=false means no network access (DENY_ALL behavior).
    - `allowed_cidrs` AllowedCidr[], required — CIDR-based allow list with optional port restrictions, additive with allowed_hostnames.
      - `cidr` string, required — IPv4 CIDR block in canonical form (host bits zero), e.g. '10.12.0.0/16'.
      - `ports` PortRule[], nullable — (Optional) Ports allowed for this CIDR. Empty or omitted means all ports and protocols.
        - `port` integer, required — The allowed port (1-65535), or the start of a port range.
        - `end_port` integer, nullable — (Optional) Inclusive end of the port range (port-65535). Omit for a single port.
        - `protocol` 'TCP' | 'UDP' — L4 protocol for a port rule.
    - `allow_agent_gateway` boolean, required — If true, allows devbox egress to the agent gateway for credential proxying.
    - `allow_mcp_gateway` boolean, required — If true, allows devbox egress to the MCP hub for MCP server access.
    - `allow_runloop_mirrors` boolean, required — If true, allows devbox egress to Runloop's package/image registry mirrors. Implicitly allowed when allow_all is true.
  - `create_time_ms` integer, required — The creation time of the NetworkPolicy (Unix timestamp in milliseconds).
  - `update_time_ms` integer, required — Last update time of the NetworkPolicy (Unix timestamp in milliseconds).

## Other responses

- `400` — Bad request. Name already exists or is invalid.
- `401` — Unauthorized. Invalid or missing authentication.
- `403` — Forbidden. Account does not have devbox capability.
- `500` — Internal server error.

## Changes

- **2026-07-22** `fe489479c0aa` — 4 info
  - added the new optional request property `allow_runloop_mirrors`
  - added the new optional request property `allowed_cidrs`
  - added the required property `egress/allow_runloop_mirrors` to the response with the `200` status
  - added the required property `egress/allowed_cidrs` to the response with the `200` status
- **2026-05-27** `d3ddb452754c` — 6 breaking
  - the request property `allow_agent_gateway` became not nullable
  - the request property `allow_all` became not nullable
  - the request property `allow_devbox_to_devbox` became not nullable
  - the request property `allow_mcp_gateway` became not nullable
  - …2 more
- **2026-02-26** `439b1a08248e` — 1 breaking, 1 warning, 2 info
  - removed the required property `egress/allow_ai_gateway` from the response with the `200` status
  - removed the request property `allow_ai_gateway`
  - added the new optional request property `allow_agent_gateway`
  - added the required property `egress/allow_agent_gateway` to the response with the `200` status
- **2026-02-25** `dd0f43e15cb6` — 4 info
  - added the new optional request property `allow_ai_gateway`
  - added the new optional request property `allow_mcp_gateway`
  - added the required property `egress/allow_ai_gateway` to the response with the `200` status
  - added the required property `egress/allow_mcp_gateway` to the response with the `200` status
- **2026-01-19** `8ebd9dbfacb1` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/runloopai/apis/runloop-api/changes/v1/network-policies/post.md)

---

[API](https://skmtc.dev/runloopai/apis/runloop-api.md) · [All operations](https://skmtc.dev/runloopai/apis/runloop-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/runloopai/runloop-api/revisions/e9dc776053e4/schema)
