[Docs index](/docs.md) / [Tool Creation](/docs/tool-creation/overview.md) / Managing Permissions

---

# Managing Permissions

Every tool runs in a sandbox that has no network access and no environment variables by default. You explicitly grant the permissions each tool needs. This guide covers how to configure network access and environment variables.

## Before you begin

- You need to be editing a tool version (the permissions tab is on the tool edit page).
- You need to know which external domains your tool calls and what credentials it needs.

## Opening the permissions panel

Navigate to **Tools**, click the tool, click **Edit** on the version you want to configure, then click the **Permissions** tab in the right panel.

The panel has two sections: **Network Access** and **Environment Variables**.

## Configuring network access

Network access controls which domains your tool can make HTTP requests to. If your tool calls an external API, you must add that API's domain here.

### Adding a domain

1. In the **Network Access** section, type the domain in the text field (for example, `api.example.com`).
2. Click **Add** or press Enter.
3. The domain appears in the list above.

### Using wildcards

You can use wildcards to allow access to all subdomains of a domain. For example, `*.example.com` allows requests to `api.example.com`, `data.example.com`, and any other subdomain.

### Removing a domain

Hover over a domain in the list and click the **trash icon** to remove it.

## Configuring environment variables

Environment variables let your tool access API keys, tokens, and other credentials securely. The values are injected at runtime and never appear in your code or logs.

> **Security:** Always enter credential values in the **Permissions** tab, never in chat. The value input on this tab is masked, and the secret is stored on the server -- it is never sent to the LLM and never written to your chat history. Pasting an API key into a chat message (for example, "Set `API_KEY` to `sk_live_...`") exposes it to the model, any logs that capture model input, and anyone with access to the conversation. Do the same for domains on the network whitelist: configure them here so the full permission set lives in one reviewable place.

### Adding a custom variable

1. In the **Environment Variables** section, make sure the **Custom Value** tab is selected.
2. Enter the **Variable Name** (for example, `API_KEY`). Names are automatically uppercased.
3. Enter the **Value**. This field is masked for security.
4. Click **Add Custom Variable**.

The variable appears in the list with a purple "Custom" badge.

### Adding a variable from a connection

If your workspace has data connections configured (for example, an API key stored in a connection), you can link an environment variable to it.

1. Click the **From Connection** tab.
2. Enter the **Variable Name** (for example, `OPENAI_API_KEY`).
3. Select the **Connection** from the dropdown. Each connection shows its provider name and scope (Workspace or Personal).
4. If the connection has multiple fields, select the **Field** you want.
5. Click **Add Environment Variable**.

The variable appears in the list with a blue "Connection" badge and shows which connection field it is linked to.

Connection-linked variables are resolved at runtime. If the connection's credentials are rotated, the tool automatically picks up the new values.

### Removing a variable

Hover over a variable in the list and click the **trash icon** to remove it.

## How permissions are resolved

If the same environment variable is configured at both the workspace level and the user level, the user-level value takes precedence. This allows individual users to override workspace defaults when needed.

## Permission levels

| Scope | What it means |
|-------|--------------|
| Workspace | Available to all executions of the tool within the workspace |
| User override | Available only when a specific user triggers the tool. Overrides the workspace value. |

## Related guides

- [Creating a tool](creating-a-tool.md)
- [Testing a tool](testing-a-tool.md)
- [Troubleshooting](troubleshooting.md)

---

## Navigation

### In this section: Tool Creation

- [Tool Creation](/docs/tool-creation/overview.md)
- [Use Cases and Playbooks](/docs/tool-creation/use-cases.md)
- [Creating a Tool](/docs/tool-creation/creating-a-tool.md)
- [Testing a Tool](/docs/tool-creation/testing-a-tool.md)
- [Editing and Versioning](/docs/tool-creation/editing-and-versioning.md)
- **Managing Permissions** (current)
- [Troubleshooting](/docs/tool-creation/troubleshooting.md)

#### Playbooks

- [Build Shipment Tracking Tools for Your Logistics Provider](/docs/tool-creation/playbook-logistics-tracking-tools.md)
- [Build Tools to Connect Your CRM to AI](/docs/tool-creation/playbook-crm-integration-tools.md)
- [Build Tools to Query Your ERP Inventory System](/docs/tool-creation/playbook-erp-inventory-tools.md)
- [Build Tools to Query Your Payment Processor](/docs/tool-creation/playbook-payment-processor-tools.md)
- [Playbook: Build a Log Anomaly Monitor Across Axiom and Sentry](/docs/tool-creation/playbook-log-anomaly-monitor.md)

### Other sections

- [MCP Servers](/docs/mcp-servers/overview.md)
- [Agent Filesystem](/docs/agent-filesystem/overview.md)
- [Chat Sharing](/docs/chat-sharing/overview.md)
- [Scheduled Triggers](/docs/scheduled-triggers/overview.md)
- [Agent Skills](/docs/agent-skills/overview.md)
- [Sandcastles](/docs/sandcastles/overview.md)
- [Subagents](/docs/subagents/overview.md)
- [Workspace Permissions](/docs/workspace-permissions/overview.md)

[Back to docs index](/docs.md)
