openclaw - 💡(How to fix) Fix [Bug]: # Bug Report: exec approval 的命令哈希机制导致 allow-always 无法有效覆盖常用命令 [1 comments, 1 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
openclaw/openclaw#61653Fetched 2026-04-08 02:56:25
View on GitHub
Comments
1
Participants
1
Timeline
3
Reactions
0
Author
Participants
Timeline (top)
labeled ×2commented ×1

Bug Report: exec approval 的命令哈希机制导致 allow-always 无法有效覆盖常用命令

版本:OpenClaw 2026.4.1 (da64a97)

问题描述 每次 agent 执行命令时,即使操作类型完全相同(如运行 Python 脚本),只要命令参数有任何细微差异,就会生成新的命令哈希(=command:xxxxxxxx),触发新的 exec 审批弹窗。用户点击「Always allow」只能永久授权该特定哈希,无法覆盖同类命令,导致审批窗口无限循环出现。

复现步骤

  1. 配置 tools.exec.ask = "on-miss"
  2. 让 agent 执行任意 Python 命令,点击「Always allow」
  3. 让 agent 执行参数略有不同的同类 Python 命令
  4. 新的审批弹窗再次出现

期望行为 allow-always 应支持基于可执行文件路径或命令类型的授权,而不仅仅是完整命令哈希。例如:

  • 允许对 python.exe 整体授权
  • 允许对 workspace/** 目录下的所有脚本授权
  • 或提供一个「信任此可执行文件的所有调用」选项

当前影响 用户三天内点击了数百次 allow-always,问题未得到改善。唯一的临时解决方案是让 agent 强制复用固定脚本文件以保持命令哈希不变,但这限制了 agent 的灵活性。

建议方案 在审批 UI 中增加「信任此程序(Trust executable)」按钮,对同一可执行文件的所有调用永久放行,与现有的命令级 allow-always 并存。

Root Cause

Bug Report: exec approval 的命令哈希机制导致 allow-always 无法有效覆盖常用命令

版本:OpenClaw 2026.4.1 (da64a97)

问题描述 每次 agent 执行命令时,即使操作类型完全相同(如运行 Python 脚本),只要命令参数有任何细微差异,就会生成新的命令哈希(=command:xxxxxxxx),触发新的 exec 审批弹窗。用户点击「Always allow」只能永久授权该特定哈希,无法覆盖同类命令,导致审批窗口无限循环出现。

复现步骤

  1. 配置 tools.exec.ask = "on-miss"
  2. 让 agent 执行任意 Python 命令,点击「Always allow」
  3. 让 agent 执行参数略有不同的同类 Python 命令
  4. 新的审批弹窗再次出现

期望行为 allow-always 应支持基于可执行文件路径或命令类型的授权,而不仅仅是完整命令哈希。例如:

  • 允许对 python.exe 整体授权
  • 允许对 workspace/** 目录下的所有脚本授权
  • 或提供一个「信任此可执行文件的所有调用」选项

当前影响 用户三天内点击了数百次 allow-always,问题未得到改善。唯一的临时解决方案是让 agent 强制复用固定脚本文件以保持命令哈希不变,但这限制了 agent 的灵活性。

建议方案 在审批 UI 中增加「信任此程序(Trust executable)」按钮,对同一可执行文件的所有调用永久放行,与现有的命令级 allow-always 并存。

RAW_BUFFERClick to expand / collapse

Bug type

Regression (worked before, now fails)

Beta release blocker

No

Summary

Bug Report: exec approval 的命令哈希机制导致 allow-always 无法有效覆盖常用命令

版本:OpenClaw 2026.4.1 (da64a97)

问题描述 每次 agent 执行命令时,即使操作类型完全相同(如运行 Python 脚本),只要命令参数有任何细微差异,就会生成新的命令哈希(=command:xxxxxxxx),触发新的 exec 审批弹窗。用户点击「Always allow」只能永久授权该特定哈希,无法覆盖同类命令,导致审批窗口无限循环出现。

复现步骤

  1. 配置 tools.exec.ask = "on-miss"
  2. 让 agent 执行任意 Python 命令,点击「Always allow」
  3. 让 agent 执行参数略有不同的同类 Python 命令
  4. 新的审批弹窗再次出现

期望行为 allow-always 应支持基于可执行文件路径或命令类型的授权,而不仅仅是完整命令哈希。例如:

  • 允许对 python.exe 整体授权
  • 允许对 workspace/** 目录下的所有脚本授权
  • 或提供一个「信任此可执行文件的所有调用」选项

当前影响 用户三天内点击了数百次 allow-always,问题未得到改善。唯一的临时解决方案是让 agent 强制复用固定脚本文件以保持命令哈希不变,但这限制了 agent 的灵活性。

建议方案 在审批 UI 中增加「信任此程序(Trust executable)」按钮,对同一可执行文件的所有调用永久放行,与现有的命令级 allow-always 并存。

技术细节(日志证据)

失败命令示例: python email_sender.py --content-file Day_007_剂量反应关系.md python email_sender.py --content-file Day_008_xxx.md

两条命令脚本相同,仅参数不同,产生不同哈希, 导致每次都触发新审批,allow-always 完全失效。

exec-approvals.json 在每次 gateway 启动时被重置为空, 手动写入的条目全部丢失,进一步加剧问题。

建议修复

  1. allowlist 支持可执行文件级匹配(忽略参数)
  2. allowlist 支持通配符模式匹配完整命令
  3. exec-approvals.json 不应在启动时被清空

Steps to reproduce

Bug Report: exec approval 的命令哈希机制导致 allow-always 无法有效覆盖常用命令

版本:OpenClaw 2026.4.1 (da64a97)

问题描述 每次 agent 执行命令时,即使操作类型完全相同(如运行 Python 脚本),只要命令参数有任何细微差异,就会生成新的命令哈希(=command:xxxxxxxx),触发新的 exec 审批弹窗。用户点击「Always allow」只能永久授权该特定哈希,无法覆盖同类命令,导致审批窗口无限循环出现。

复现步骤

  1. 配置 tools.exec.ask = "on-miss"
  2. 让 agent 执行任意 Python 命令,点击「Always allow」
  3. 让 agent 执行参数略有不同的同类 Python 命令
  4. 新的审批弹窗再次出现

期望行为 allow-always 应支持基于可执行文件路径或命令类型的授权,而不仅仅是完整命令哈希。例如:

  • 允许对 python.exe 整体授权
  • 允许对 workspace/** 目录下的所有脚本授权
  • 或提供一个「信任此可执行文件的所有调用」选项

当前影响 用户三天内点击了数百次 allow-always,问题未得到改善。唯一的临时解决方案是让 agent 强制复用固定脚本文件以保持命令哈希不变,但这限制了 agent 的灵活性。

建议方案 在审批 UI 中增加「信任此程序(Trust executable)」按钮,对同一可执行文件的所有调用永久放行,与现有的命令级 allow-always 并存。

技术细节(日志证据)

失败命令示例: python email_sender.py --content-file Day_007_剂量反应关系.md python email_sender.py --content-file Day_008_xxx.md

两条命令脚本相同,仅参数不同,产生不同哈希, 导致每次都触发新审批,allow-always 完全失效。

exec-approvals.json 在每次 gateway 启动时被重置为空, 手动写入的条目全部丢失,进一步加剧问题。

建议修复

  1. allowlist 支持可执行文件级匹配(忽略参数)
  2. allowlist 支持通配符模式匹配完整命令
  3. exec-approvals.json 不应在启动时被清空

Expected behavior

Bug Report: exec approval 的命令哈希机制导致 allow-always 无法有效覆盖常用命令

版本:OpenClaw 2026.4.1 (da64a97)

问题描述 每次 agent 执行命令时,即使操作类型完全相同(如运行 Python 脚本),只要命令参数有任何细微差异,就会生成新的命令哈希(=command:xxxxxxxx),触发新的 exec 审批弹窗。用户点击「Always allow」只能永久授权该特定哈希,无法覆盖同类命令,导致审批窗口无限循环出现。

复现步骤

  1. 配置 tools.exec.ask = "on-miss"
  2. 让 agent 执行任意 Python 命令,点击「Always allow」
  3. 让 agent 执行参数略有不同的同类 Python 命令
  4. 新的审批弹窗再次出现

期望行为 allow-always 应支持基于可执行文件路径或命令类型的授权,而不仅仅是完整命令哈希。例如:

  • 允许对 python.exe 整体授权
  • 允许对 workspace/** 目录下的所有脚本授权
  • 或提供一个「信任此可执行文件的所有调用」选项

当前影响 用户三天内点击了数百次 allow-always,问题未得到改善。唯一的临时解决方案是让 agent 强制复用固定脚本文件以保持命令哈希不变,但这限制了 agent 的灵活性。

建议方案 在审批 UI 中增加「信任此程序(Trust executable)」按钮,对同一可执行文件的所有调用永久放行,与现有的命令级 allow-always 并存。

技术细节(日志证据)

失败命令示例: python email_sender.py --content-file Day_007_剂量反应关系.md python email_sender.py --content-file Day_008_xxx.md

两条命令脚本相同,仅参数不同,产生不同哈希, 导致每次都触发新审批,allow-always 完全失效。

exec-approvals.json 在每次 gateway 启动时被重置为空, 手动写入的条目全部丢失,进一步加剧问题。

建议修复

  1. allowlist 支持可执行文件级匹配(忽略参数)
  2. allowlist 支持通配符模式匹配完整命令
  3. exec-approvals.json 不应在启动时被清空

Actual behavior

Bug Report: exec approval 的命令哈希机制导致 allow-always 无法有效覆盖常用命令

版本:OpenClaw 2026.4.1 (da64a97)

问题描述 每次 agent 执行命令时,即使操作类型完全相同(如运行 Python 脚本),只要命令参数有任何细微差异,就会生成新的命令哈希(=command:xxxxxxxx),触发新的 exec 审批弹窗。用户点击「Always allow」只能永久授权该特定哈希,无法覆盖同类命令,导致审批窗口无限循环出现。

复现步骤

  1. 配置 tools.exec.ask = "on-miss"
  2. 让 agent 执行任意 Python 命令,点击「Always allow」
  3. 让 agent 执行参数略有不同的同类 Python 命令
  4. 新的审批弹窗再次出现

期望行为 allow-always 应支持基于可执行文件路径或命令类型的授权,而不仅仅是完整命令哈希。例如:

  • 允许对 python.exe 整体授权
  • 允许对 workspace/** 目录下的所有脚本授权
  • 或提供一个「信任此可执行文件的所有调用」选项

当前影响 用户三天内点击了数百次 allow-always,问题未得到改善。唯一的临时解决方案是让 agent 强制复用固定脚本文件以保持命令哈希不变,但这限制了 agent 的灵活性。

建议方案 在审批 UI 中增加「信任此程序(Trust executable)」按钮,对同一可执行文件的所有调用永久放行,与现有的命令级 allow-always 并存。

技术细节(日志证据)

失败命令示例: python email_sender.py --content-file Day_007_剂量反应关系.md python email_sender.py --content-file Day_008_xxx.md

两条命令脚本相同,仅参数不同,产生不同哈希, 导致每次都触发新审批,allow-always 完全失效。

exec-approvals.json 在每次 gateway 启动时被重置为空, 手动写入的条目全部丢失,进一步加剧问题。

建议修复

  1. allowlist 支持可执行文件级匹配(忽略参数)
  2. allowlist 支持通配符模式匹配完整命令
  3. exec-approvals.json 不应在启动时被清空

OpenClaw version

版本:OpenClaw 2026.4.1 (da64a97)

Operating system

widdows11

Install method

No response

Model

qwen3.5-plus,

Provider / routing chain

Feishu (飞书) WebSocket → OpenClaw 2026.4.1 local gateway → Alibaba Cloud Bailian (coding.dashscope.aliyuncs.com/v1) → Primary: qwen3.5-plus, Fallbacks: qwen3-max / qwen3-coder-next / MiniMax-M2.5

Additional provider/model setup details

No response

Logs, screenshots, and evidence

Impact and severity

No response

Additional information

No response

extent analysis

TL;DR

Modify the allow-always mechanism to support authorization based on executable file paths or command types, rather than just complete command hashes.

Guidance

  • Review the exec-approvals.json file to understand how it is being used and why it is being reset on gateway startup.
  • Consider implementing a feature to trust executables, allowing all calls to the same executable to be permanently allowed.
  • Modify the allowlist to support matching based on executable files (ignoring parameters) and wildcard patterns for complete commands.
  • Ensure that exec-approvals.json is not cleared on startup to prevent loss of manually added entries.

Example

No specific code example can be provided without more context, but the allowlist modification could involve adding a new configuration option, such as allowlist_executables, that takes a list of executable paths or patterns.

Notes

The current implementation of allow-always is too restrictive, as it only authorizes specific command hashes. This leads to an infinite loop of approval prompts when parameters change. A more flexible approach is needed to support common use cases.

Recommendation

Apply a workaround by modifying the allowlist to support executable-level matching and wildcard patterns, and ensure that exec-approvals.json is not cleared on startup. This will help mitigate the issue until a more permanent fix can be implemented.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

FAQ

Expected behavior

Bug Report: exec approval 的命令哈希机制导致 allow-always 无法有效覆盖常用命令

版本:OpenClaw 2026.4.1 (da64a97)

问题描述 每次 agent 执行命令时,即使操作类型完全相同(如运行 Python 脚本),只要命令参数有任何细微差异,就会生成新的命令哈希(=command:xxxxxxxx),触发新的 exec 审批弹窗。用户点击「Always allow」只能永久授权该特定哈希,无法覆盖同类命令,导致审批窗口无限循环出现。

复现步骤

  1. 配置 tools.exec.ask = "on-miss"
  2. 让 agent 执行任意 Python 命令,点击「Always allow」
  3. 让 agent 执行参数略有不同的同类 Python 命令
  4. 新的审批弹窗再次出现

期望行为 allow-always 应支持基于可执行文件路径或命令类型的授权,而不仅仅是完整命令哈希。例如:

  • 允许对 python.exe 整体授权
  • 允许对 workspace/** 目录下的所有脚本授权
  • 或提供一个「信任此可执行文件的所有调用」选项

当前影响 用户三天内点击了数百次 allow-always,问题未得到改善。唯一的临时解决方案是让 agent 强制复用固定脚本文件以保持命令哈希不变,但这限制了 agent 的灵活性。

建议方案 在审批 UI 中增加「信任此程序(Trust executable)」按钮,对同一可执行文件的所有调用永久放行,与现有的命令级 allow-always 并存。

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

openclaw - 💡(How to fix) Fix [Bug]: # Bug Report: exec approval 的命令哈希机制导致 allow-always 无法有效覆盖常用命令 [1 comments, 1 participants]