Component
agent-sec-core (Hermes plugin — skill-ledger capability)
Bug Description
agent-sec-core 的 Hermes 插件 (hermes-plugin/src/capabilities/skill_ledger.py) 在 pre_tool_call 钩子中调用 agent-sec-cli skill-ledger show <skill_dir> 来检查 skill 安全状态。当 skill 位于 ~/.hermes/skills/ 但 skill-ledger daemon 的 managedSkillDirs 只覆盖 /usr/share/anolisa/skills/* 时,CLI 返回 latestStatus: "unmanaged" 且 message: null。
插件的代码逻辑:
message = summary.get("message")
if not isinstance(message, str) or not message.strip():
return None # ← 跳过 warning 生成
由于 message 为 null,插件直接 return None,不生成任何 warning。但该 skill 可能在 /usr/share/anolisa/skills/ 中已被 scan/certify,只是被拷贝到 ~/.hermes/skills/ 后变成了 unmanaged。
这导致 4 个 TestHermesSkillLedger 用例持续失败(连续 5 天 07-05~07-09):
test_none_skill_shows_warning
test_deny_skill_shows_warning
test_drifted_skill_shows_warning
test_tampered_skill_shows_warning
Steps to Reproduce
cd /root/agentic-os-tests/agent-sec-core
source /root/.cargo/env 2>/dev/null
python3 -m pytest -xvs 'tests/test_hermes_intercept_tmux.py::TestHermesSkillLedger::test_none_skill_shows_warning'
Expected
当 LLM 调用 skill_view 查看 none/deny/drifted/tampered 状态的 skill 时,TUI 应显示 [agent-sec-core skill-ledger warning] 内联警告。
Actual
TUI 无 warning 输出,LLM 被 interrupted,测试 180s 超时或 assertion 失败。
Root Cause
- 插件将
skill_view 调用解析为 ~/.hermes/skills/<name> 路径
agent-sec-cli skill-ledger show ~/.hermes/skills/<name> 返回 unmanaged(因为 ~/.hermes/skills/ 不在 managedSkillDirs 中)
message: null → 插件跳过 warning 生成
Environment
- anolisa commit: b099d3e (main, 2026-07-09)
- agent-sec-core version: 0.7.1
- ECS: AgenticOS-agent-sec-core nightly test
Relevant Log
AssertionError: 查看 skill 'e2e-agent-sec-none-skill' 未输出 skill-ledger warning。
TUI 输出:
· interrupted
❯ 你必须调用 skill_view 工具来查看 e2e-agent-sec-none-skill 的内容...
Suggested Fix
- 当
latestStatus == "unmanaged" 时,插件应在 managed skill roots(/usr/share/anolisa/skills/)中查找同名 skill 并重新查询
- 如果 managed root 中有结果,使用该结果代替 unmanaged 结果
- 如果所有 managed root 都没有,生成合成 warning:"unmanaged — not tracked by Skill Ledger. Security status unknown."
Verification
Patch applied on fresh ECS clone + bash scripts/rpm-build.sh agent-sec-core → exit 0, 7 RPMs produced (including agent-sec-cli-0.7.1 207M).
Component
agent-sec-core (Hermes plugin — skill-ledger capability)
Bug Description
agent-sec-core的 Hermes 插件 (hermes-plugin/src/capabilities/skill_ledger.py) 在pre_tool_call钩子中调用agent-sec-cli skill-ledger show <skill_dir>来检查 skill 安全状态。当 skill 位于~/.hermes/skills/但 skill-ledger daemon 的managedSkillDirs只覆盖/usr/share/anolisa/skills/*时,CLI 返回latestStatus: "unmanaged"且message: null。插件的代码逻辑:
由于
message为null,插件直接 return None,不生成任何 warning。但该 skill 可能在/usr/share/anolisa/skills/中已被 scan/certify,只是被拷贝到~/.hermes/skills/后变成了 unmanaged。这导致 4 个 TestHermesSkillLedger 用例持续失败(连续 5 天 07-05~07-09):
test_none_skill_shows_warningtest_deny_skill_shows_warningtest_drifted_skill_shows_warningtest_tampered_skill_shows_warningSteps to Reproduce
Expected
当 LLM 调用
skill_view查看 none/deny/drifted/tampered 状态的 skill 时,TUI 应显示[agent-sec-core skill-ledger warning]内联警告。Actual
TUI 无 warning 输出,LLM 被 interrupted,测试 180s 超时或 assertion 失败。
Root Cause
skill_view调用解析为~/.hermes/skills/<name>路径agent-sec-cli skill-ledger show ~/.hermes/skills/<name>返回unmanaged(因为~/.hermes/skills/不在managedSkillDirs中)message: null→ 插件跳过 warning 生成Environment
Relevant Log
Suggested Fix
latestStatus == "unmanaged"时,插件应在 managed skill roots(/usr/share/anolisa/skills/)中查找同名 skill 并重新查询Verification
Patch applied on fresh ECS clone +
bash scripts/rpm-build.sh agent-sec-core→ exit 0, 7 RPMs produced (including agent-sec-cli-0.7.1 207M).