跳转到主要内容
有副作用的集成操作和破坏性操作会暂停运行,直到有人批准。只读操作不会暂停。规则在工作区的集成(Integrations)下的审批设置中。

谁会收到通知

工作区所有者和发起该操作的人会收到邮件。已连接 Telegram 时也会通过 Telegram 通知。同一请求会出现在控制台的审批页面。

API 调用会看到什么

流式和非流式调用都会在第一轮审批时停止。 非流式响应包含 status、run_id 和 thread_id。status 为 completed 或 awaiting_approval。仅在运行等待审批时才包含 pending_tool_approvals。仅当策略拒绝了某次调用时才包含 denied_tool_calls,其 reason 为 policy_deny。响应文本包含 [Waiting for approval: …]。 流式调用会先发送 tool_approval 事件,然后在最终 usage 事件上带上相同字段。 review_url 在登录后打开 https://app.fetchhive.com/{workspace_id}/approvals?approval={approval_id}。邮件令牌不会出现在 API 响应中。看起来像密钥的参数值会替换为 [redacted]。 如果响应同时包含 pending_delegations,请先处理工具审批。 关闭工具审批时,status 为 completed,并且不会返回审批数组。

如何答复

打开控制台链接、使用邮件链接,或用 API 密钥决定: POST /v1/public/workspaces/{workspace_id}/tool_action_approvals/{id}/decide decision 为 allow_once 或 deny。always_allow 返回 422 always_allow_requires_dashboard。再次决定返回 409。已过期的审批返回 410。

如何继续

API 密钥调用会在决定之后由服务器自动继续。请轮询该运行或使用 webhook。不要再次调用该线程。 再次调用只用于第一方流式客户端。使用相同的智能体和 thread_id,并带上 decided_tool_approvals: [{ "approval_id": "…" }]。message 可以是空字符串或一条新消息。只会读取 approval_id。 Webhook 触发或带有 async.callback_url 的调用会在决定之后自行继续。回调会先收到 agent.awaiting_approval,然后收到带有 resumed_from_run_id 的 agent.completed。

过期与轮次上限

审批在创建 24 小时后过期,除非设置了 TOOL_APPROVAL_TTL_HOURS。一次运行链在五轮审批后停止,并附加 [Approval limit reached]。

始终允许

始终允许在控制台中设置。API 密钥不能创建该策略。

为受信任的服务器跳过批准

工作区所有者或管理员可以允许一把 API 密钥自动批准操作。在“设置 → API 密钥”中勾选“允许此密钥自动批准操作”。成员不能更改该复选框。 使用该密钥的请求可以在 POST /v1/agent/invoke 上发送 tool_approval: "auto_approve"。它只作用于这一次调用。它不会更改代理已保存的设置,也不会写入策略。省略该字段或发送 policy 时,遵循工作区规则,以及已经保存在代理、计划或部署上的自动批准开关。 破坏性操作仍然会询问。拒绝规则仍然会阻止操作。其他值会在运行开始前返回 400 invalid_tool_approval。 没有该权限的密钥、已登录编辑器的令牌,或 webhook,会在任何模型调用之前返回 403 tool_approval_override_not_permitted。当工作区关闭了自动批准时,返回相同的代码,消息为 “Auto-approve is not available for this workspace.” 这次运行中调用的子代理会收到相同的 tool_approval 值和同一把 API 密钥。代理启动的工作流不会继承它。工作流遵循自己部署上的开关。 响应会回显 tool_approval,值为 auto_approve 或 policy。如果某个操作因为例外而执行,响应还会包含 auto_approved_tool_calls,每一项都有 summary 和 tool_name。流式调用把这两个字段放在最终的 usage 事件上。

从 Telegram、Slack 或 Teams 批准

工作区打开此功能后,Telegram 中的审批消息可以包含“允许一次”和“拒绝”。Slack 可以使用 Fetch Hive 应用,发到频道或私信。Teams 可以使用 Fetch Hive Approvals 应用,发到频道或个人聊天。 能看到该 Telegram 聊天的人都可以按按钮,前提是他们的 Telegram 已关联到工作区成员。尚未关联的 Slack 或 Teams 用户会先被要求关联账号。Teams 在有人发送审批通知里的一次性代码后完成连接。 聊天里不提供“始终允许”。破坏性操作没有允许按钮,需要打开 Fetch Hive 查看。在应用、Telegram、Slack 或 Teams 中做出的决定会更新该消息并去掉按钮。只允许批次中的一项一次时,其余项仍留在各自的卡片上。允许或拒绝本次运行的其余项会更新整个批次。

允许之前修改内容

开启编辑后,“允许一次”可以提交替换后的参数。原始参数仍保留在审批记录上。“始终允许”、拒绝,以及针对本次运行其余项的决定不能附带替换内容。无效的替换会留在卡片上并显示错误,操作不会执行。

同一次运行里的重复操作

循环中对同一操作的多次询问,可以一次性允许或拒绝本次运行的其余项。之后匹配的项遵循该决定。下一次运行会重新询问。破坏性操作,以及设置为必须询问的步骤,仍然逐项询问。

仅我自己与所有人

成员的“始终允许”可以只作用于该成员自己的运行。所有者或管理员可以把它应用到整个工作区,并可以锁定工作区规则,使个人允许不再覆盖它。API 密钥和 webhook 运行只使用工作区规则。

文件、知识库和子智能体

创建文件、保存产物、写入知识库和运行子智能体可以使用相同的询问或阻止规则。没有规则时它们会直接运行。所有者和管理员在审批页面设置这些规则。

MCP 网关

已发布的网关工具可以在运行前询问正在使用 AI 应用的人,或询问你的团队。参见 MCP 网关。