本卡屬 FR-166(母卡 CM-3109),批 15。repo:agent(evidence-agent)。由首腦驗收 CM-3165 時發現,決策者 2026-10-27 裁示開卡。
這張卡做什麼(白話)
CM-3156 讓容器版 Agent 多開一項 NET_RAW 權限(網路除錯的 ping、traceroute、MTU 要用),手冊也寫了這項例外。但 Agent 的資安守衛測試 test_container_hardening_shape::test_sr_09_5_agent_compose_has_no_cap_add 規定 compose 完全不能有 cap_add,從那時起一直是紅的,沒有卡負責。CM-3160 只清 BE 的守衛,不含 Agent。本卡把守衛改成「只准 NET_RAW 這一項」,並在資安報告 SR-09.5 登記例外,讓守衛轉綠而且仍擋得住多開其他權限。
改哪些檔
repo:~/Projects/Billows/Audit-Manager/evidence-agent(工作坊工作區 .worktrees/CM-3109 的 ws 分支)
改:test/test_container_hardening_shape.py(test_sr_09_5_agent_compose_has_no_cap_add)
不改:deploy/docker-compose.yml(cap_add: [NET_RAW] 是決策過的設計)
資安報告例外登記在 BE repo,本卡不碰;回寫附例外登記草稿,由首腦另行處理
怎麼做
- 守衛改成:解析 guidant-ai-agent 區塊的 cap_add,值必須「不存在」或「恰好只有 NET_RAW」;cap_drop 仍要 ALL。測試名可改成 ..._cap_add_only_net_raw,旁邊一行註解寫為什麼(網路除錯 raw socket,SR-09.5 例外)。
- 🔴 不准刪測試、不准 skip、不准把整條放寬成「有 cap_add 就好」。突變要做兩個:compose 改成 cap_add: [NET_RAW, NET_ADMIN] 要紅;拿掉 cap_drop: [ALL] 要紅。
- 回寫附一段 SR-09.5 例外登記草稿(格式照 BE docs/security-report/requirements/SR-08-logging-audit.md 的「例外登記:Agent 主控台網路除錯逐項回結果」那張六欄表:例外範圍/為什麼要例外/為什麼仍守得住/驗證方式/反悔條件/登記),內容依據 BE docs/user-manual/agent/01-prerequisites.md 第 224 行附近對 NET_RAW 的說明。
驗收
- Agent 全套 pytest 綠(目前唯一的紅就是這支);兩個突變都紅。
紀律
- 先 git status;先 git merge ws-CM-3109;顯式 git add 檔名,禁 -am;不切 branch;push 等令;不自派 subagent;不發版、不推 Nexus。
- 做完 commit+卡上回寫(commit hash、改了哪些檔、測試與突變結果),狀態改「修正待驗證」。
建議模型與思考強度(首腦判斷)
Stage 15/Model sonnet/Effort low/Repo agent。一支測試改寫加例外草稿。
批次更正(首腦,2026-10-27)
- 本卡排在第 14 批(內文寫的 15 不對)。CM-3160 守衛清零移到第 15 批,等本卡合回後才收。
完成回報(CM-3168)
- commit:e929127(branch ws-CM-3109-CM-3168,未 push)