# 受保护的环境 (/zh/docs/workspaces/protected-environments)

受保护的环境会在任何内容发送到它之前先询问。把你的生产环境标记为受保护，意外按下的 <kbd>⌘</kbd><kbd>R</kbd>、运行器的一次运行或智能体的一次调用，在有人点头之前都无法到达它。受保护的环境在所有显示它的地方都以红色标记。

## 保护环境 [#protect-an-environment]

1. 打开[环境](/docs/workspaces/environments)页面（<kbd>⌥</kbd><kbd>⌘</kbd><kbd>E</kbd>）。
2. 选择该环境。
3. 打开它名称旁的**受保护**。

该环境的行，以及环境菜单中它的圆点，会变成红色并带上盾牌标志。在文件中，它只有一行，所以这个选择会与每个打开该工作区的人共享：

```toml
name = "Production"
protected = true
```

在 Alpenglow 中，**Production** 是受保护的。

## 什么会先询问 [#what-asks-first]

受保护的环境处于使用中时，下面这些操作在发出之前会先询问：

| 你发起的操作 | 位置 |
| --- | --- |
| 发送任何类型的请求，包括 `GET` 这样的安全方法 | 请求页面：**发送**、**请求 › 发送**（<kbd>⌘</kbd><kbd>R</kbd>）、<kbd>⌘</kbd><kbd>↩</kbd> |
| 连接 WebSocket、Socket.IO、MQTT 或其他会话 | 请求页面：**连接** |
| 在你切换到受保护的环境之前就已打开的会话中的消息 | 请求页面 |
| 一次运行 | [运行器](/docs/requests/runner)：**运行**，每次运行一次 |
| 运行流程 | [流程](/docs/flows)页面：**运行** |
| 快速发送 | [快速发送](/docs/mac/quick-send)面板 |
| 快捷指令操作 | [快捷指令](/docs/mac/shortcuts) App 会显示询问 |
| 调用、检查和监视 | [MCP 服务器](/docs/mcp-servers)页面 |
| 获取 OAuth 2.0 令牌、获取 GraphQL Schema、gRPC 反射 | 请求页面 |

按钮在你点按之前就会说明：**发送**显示为**发送到 Production…**，**连接**显示为**连接到 Production…**，**运行**显示为**在 Production 中运行…**，均为红色。

<Shot id="workspaces-protected-send-button" alt="Production 处于使用中时的 Catalog › List products：“发送”按钮显示为红色的“发送到 Production…”" />

## 询问内容 [#the-question]

询问会写明环境，并显示将要发出的内容：方法和已解析的地址，其中的机密已被遮盖。例如：

> **要发送到 Production 吗？**
>
> Production 受保护。每次发送前都会先询问。
>
> GET https://api.alpenglow.example/v1/products?category=tents&in_stock=true&sort=-price&per_page=10

- **取消**是默认按钮：<kbd>↩</kbd> 会取消，<kbd>Esc</kbd> 同样取消。没有任何内容会意外发送到受保护的环境。
- **发送**（或**连接**、**运行**）才会发送。请用鼠标点按它。
- **切换环境之前不再询问**会让此窗口在你选择另一个环境之前不再询问。Echolot 只把这个选择保留在内存中：它绝不会写入磁盘，并在你切换、关闭窗口或退出时结束。

<Shot id="workspaces-protected-send-question" alt="请求页面上方的询问“要发送到 Production 吗？”，默认按钮为“取消”，并带有复选框“切换环境之前不再询问”" />

## 智能体会怎么做 [#what-agents-do-instead]

AI 智能体永远无法自行越过受保护的环境。无论方法是什么、工作区的智能体规则怎么说，每次发送到它都会在智能体的批准面板中询问你。面板上写着：“此环境受保护，因此无论方法和策略如何，每次发送都会先询问。”那里的**允许一次**不是默认按钮，所以 <kbd>↩</kbd> 不会批准它。**在本次会话中允许**会让同一个调用在窗口关闭之前再次通过而不询问；**拒绝**则拒绝它。

内置的[助手](/docs/ai/assistant)和通过 Echolot 的 MCP 服务器的[外部智能体](/docs/ai/agents)都是如此。工作区中的智能体规则永远不能直接允许向受保护的环境发送。`echolot mcp serve` 以无界面方式运行、没有人可问时，这些发送会被拒绝。

## 命令行 [#the-command-line]

`echolot run`、`echolot send` 和其他命令不会询问：在命令行中选择 `--env production` 本身就是决定。如果 CI 绝不应触及生产环境，请不要把生产环境的凭据放进 CI 的机密中。

## 提示 [#tips]

- 保护每一个指向真实数据的环境，而不仅仅是 Production。
- 状态屏幕 [Echo](/docs/ai/echo) 在受保护的环境处于使用中时会显示红色提醒。
- 想暂时在生产环境上工作而不被询问，请使用**切换环境之前不再询问**，而不要关闭**受保护**：这样对同事和智能体来说，保护依然有效。
