- Notifications
You must be signed in to change notification settings - Fork1k
docs: add documentation for upcoming Agent Boundary feature#20099
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Open
jcjiang wants to merge17 commits intomainChoose a base branch fromboundaries-docs
base:main
Could not load branches
Branch not found:{{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline, and old review comments may become outdated.
+139 −10
Open
Changes fromall commits
Commits
Show all changes
17 commits Select commitHold shift + click to select a range
2e8f879
created new docs page for agent boundaries, linked to from security.md
jcjiang97d3f23
added boundaries section to index.md
jcjiang84913d9
added examples of how to integrate CLI into workspace
jcjiang6ffa954
Added additional content to architecture and premium sections, ready …
jcjiang98861c9
add manifest entry
david-fraley490728d
fix manifest path
david-fraleyfacfa7d
add title
david-fraley9377904
fmt
david-fraleye019af8
more format stuff
david-fraley7312199
typo fix
david-fraleyf53411a
added section on unprivileged vs. privileged mode
jcjiang5e39783
fixed formatting (maybe?)
jcjiang2a21a7f
removed modules instructions and other sections that are not necessar…
jcjiangd4ced50
Update docs/ai-coder/agent-boundary.md
jcjiang256a1f0
fixed changes as suggested by david
jcjiangd6c6ca3
Merge branch 'boundaries-docs' of https://github.com/coder/coder into…
jcjiang471ea1a
Merge branch 'main' into boundaries-docs
jcjiangFile filter
Filter by extension
Conversations
Failed to load comments.
Loading
Uh oh!
There was an error while loading.Please reload this page.
Jump to
Jump to file
Failed to load files.
Loading
Uh oh!
There was an error while loading.Please reload this page.
Diff view
Diff view
There are no files selected for viewing
121 changes: 121 additions & 0 deletionsdocs/ai-coder/agent-boundary.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,121 @@ | ||
# Agent Boundary | ||
Agent Boundaries are process-level firewalls that restrict and audit what autonomous programs, such as AI agents, can access and use. | ||
Example of Agent Boundaries blocking a process. | ||
The easiest way to use Agent Boundaries is through existing Coder modules, such as the [Claude Code module](https://registry.coder.com/modules/coder/claude-code). It can also be ran directly in the terminal by installing the [CLI](https://github.com/coder/boundary). | ||
> [!NOTE] | ||
> The Coder Boundary CLI is free and open source. Integrations with the core product, such as with modules offering stronger isolation, are available to Coder Premium customers. | ||
## Supported Agents | ||
Boundary supports the securing of any terminal-based agent, including your own custom agents. | ||
## Features | ||
Boundaries extend Coder's trusted workspaces with a defense-in-depth model that detects and prevents destructive actions without reducing productivity by slowing down workflows or blocking automation. They offer the following features: | ||
- _Policy-driven access controls_: limit what an agent can access (repos, registries, APIs, files, commands) | ||
- _Network policy enforcement_: block domains, subnets, or HTTP verbs to prevent exfiltration | ||
- _Audit-ready_: centralize logs, exportable for compliance, with full visibility into agent actions | ||
## Getting Started with Boundary | ||
For Early Access, users can use Agent Boundaries through its [open source CLI](https://github.com/coder/boundary), which can be run to wrap any process or invoked through rules in a YAML file. | ||
### Wrap the agent process with the Boundary CLI | ||
Users can also run Boundary directly in your workspace and configure it per template or per script. While free tier users won't get centralized policy management or the deeper, "strong isolation," they can still enforce per workspace network rules and log decisions locally. | ||
1. Install the [binary](https://github.com/coder/boundary) into the workspace image or at start-up. You can do so with the following command: | ||
```hcl | ||
curl -fsSL https://raw.githubusercontent.com/coder/boundary/main/install.sh | bash | ||
``` | ||
1. Use the included `Makefile` to build your project. Here are a few example commands: | ||
```hcl | ||
make build # Build for current platform | ||
make build-all # Build for all platforms | ||
make test # Run tests | ||
make test-coverage # Run tests with coverage | ||
make clean # Clean build artifacts | ||
make fmt # Format code | ||
make lint # Lint code | ||
jcjiang marked this conversation as resolved. Show resolvedHide resolvedUh oh!There was an error while loading.Please reload this page. | ||
``` | ||
From here, there are two ways to integrate the open source Boundary CLI into a workspace. | ||
#### Wrap a command inline with flags | ||
1. Wrap the tool you want to guard. Below are some examples of usage: | ||
```hcl | ||
# Allow only requests to github.com | ||
boundary --allow "github.com" -- curl https://github.com | ||
# Allow full access to GitHub issues API, but only GET/HEAD elsewhere on GitHub | ||
boundary \ | ||
--allow "github.com/api/issues/*" \ | ||
--allow "GET,HEAD github.com" \ | ||
-- npm install | ||
# Default deny-all: everything is blocked unless explicitly allowed | ||
boundary -- curl https://example.com | ||
``` | ||
Additional information, such as Allow Rules, can be found in the [repository README](https://github.com/coder/boundary). | ||
#### Use a config file (YAML) to set rules | ||
Another option is to define rules in a YAML file, which only needs to be invoked once as opposed to through flags with each command. | ||
1. Create a YAML file to store rules that will be applied to all `boundary` commands run in the Workspace. In this example, we call it `boundary.yaml`. | ||
A config example can be seen below: | ||
```hcl | ||
allow: | ||
- domain: [github.com](http://github.com) | ||
path: /api/issues/* | ||
- domain: [github.com](http://github.com) | ||
methods: [GET, HEAD] | ||
``` | ||
1. Run a `boundary` command. For example: | ||
```hcl | ||
boundary run --config ./boundary.yaml -- claude | ||
``` | ||
You will notice that the rules are automatically applied without any need for additional customization. | ||
### Unprivileged vs. Privileged Mode | ||
There are two approaches you can take to secure your agentic workflows with Agent Boundary. | ||
#### Unprivileged Mode | ||
In this case, a specific agent process or tool (for example, Claude Code or a CLI agent) runs inside of a constrained sandbox. This is the default mode in which Boundary will operate in and does not require root access. | ||
Agents are prevented from reaching restricted domains or exfiltrating data, without blocking the rest of the dev's environment. | ||
This is the fastest way to add real guardrails, but a determined user could still operate a tool outside of Boundary restrictions because the broader environment allows it. This mode relies on tools respecting certain settings, like HTTP proxies, and can lead to silent failures if a tool bypasses them. | ||
#### Privileged Mode | ||
In this case, boundaries are enforced at the level of the environment that the agent lives in. These are workspace- or session-level controls, including how the developer connects to it. | ||
Currently, this must be turned on with a flag and ran with higher-level permissions such as root access or `CapNetAdmin`. | ||
In addition to process-level egress rules, privileged mode locks down all pathways that could bypass policy, such as restricting or disabling SSH tunnels or parallel unbound IDEs. This delivers deterministic, policy-as-code enforcement and offers the highest assurance for regulated environments, but results in slightly more friction for mixed human-and-agent workflows. | ||
### Opting out of Boundary | ||
If you tried Boundary through a Coder module and decided you don't want to use it, you can turn it off by setting the flag to `boundary_enabled=false`. |
10 changes: 9 additions & 1 deletiondocs/ai-coder/index.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.Learn more about bidirectional Unicode characters
12 changes: 3 additions & 9 deletionsdocs/ai-coder/security.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.Learn more about bidirectional Unicode characters
Binary file addeddocs/images/guides/ai-agents/boundary.png
Loading
Sorry, something went wrong.Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 6 additions & 0 deletionsdocs/manifest.json
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.Learn more about bidirectional Unicode characters
Oops, something went wrong.
Uh oh!
There was an error while loading.Please reload this page.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.