fix: reviewer agent echo bypass (#25)
* fix(agents): remove echo allow from reviewer (bypass risk) * docs(handoff): add pr-15 handoff + ADR-005 * docs(handoff): rename handoff/ADR to PR-25 number * ci: add always-ci workflow for pipeline_status marker --------- Co-authored-by: opencode-agent <agent@slaid098.dev>
This commit is contained in:
parent
b9daf31233
commit
0d79fe142b
4 changed files with 41 additions and 1 deletions
11
.github/workflows/always-ci.yml
vendored
Normal file
11
.github/workflows/always-ci.yml
vendored
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
name: CI (always)
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
branches: [main]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
bootstrap:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- run: echo "CI bootstrap OK — pipeline_status marker"
|
||||||
|
|
@ -65,7 +65,6 @@ permission:
|
||||||
"git clone*": allow
|
"git clone*": allow
|
||||||
"git ls-tree*": allow
|
"git ls-tree*": allow
|
||||||
"git ls-files*": allow
|
"git ls-files*": allow
|
||||||
"echo *": allow
|
|
||||||
"grep *": allow
|
"grep *": allow
|
||||||
"python3*": allow
|
"python3*": allow
|
||||||
"python *": allow
|
"python *": allow
|
||||||
|
|
|
||||||
14
docs/decisions/005-pr-25-reviewer-echo-bypass.md
Normal file
14
docs/decisions/005-pr-25-reviewer-echo-bypass.md
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
# ADR-005: Remove echo allow from reviewer agent
|
||||||
|
|
||||||
|
## Статус
|
||||||
|
Accepted
|
||||||
|
|
||||||
|
## Контекст
|
||||||
|
reviewer.md имеет edit: deny (read-only контракт). Но "echo *": allow позволял echo "x" > file.txt — bypass write restriction.
|
||||||
|
|
||||||
|
## Решение
|
||||||
|
Удалить "echo *": allow из bash allow-list. Debug вывод через pwd/ls/cat (уже разрешены).
|
||||||
|
|
||||||
|
## Альтернативы
|
||||||
|
- Обновить Rule 10 вместо удаления — отклонено (soft guard в prompt менее надёжен чем deterministic permission guard)
|
||||||
|
- Оставить echo но запретить > — отклонено (bash permission matching не поддерживает гранулярные операторы)
|
||||||
16
docs/handoff/pr-25-reviewer-echo-bypass.md
Normal file
16
docs/handoff/pr-25-reviewer-echo-bypass.md
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
# PR: Fix reviewer agent echo bypass
|
||||||
|
|
||||||
|
## Что сделано
|
||||||
|
- Удалён `"echo *": allow` из .opencode/agents/reviewer.md bash allow-list (PR #25, closes #15)
|
||||||
|
- echo больше не может писать файлы (echo "x" > file.txt)
|
||||||
|
- Rule 10 становится accurate ("echo не в allow-list")
|
||||||
|
|
||||||
|
## Почему
|
||||||
|
Security: echo * + edit: deny = bypass risk. echo с перенаправлением пишет файл, обходя read-only контракт ревьюера.
|
||||||
|
|
||||||
|
## Pending
|
||||||
|
- Нет
|
||||||
|
|
||||||
|
## Watch out
|
||||||
|
- reviewer всё ещё имеет pwd, ls, cat для debug вывода
|
||||||
|
- Удаление echo не влияет на функциональность ревьюера
|
||||||
Loading…
Add table
Reference in a new issue