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 ls-tree*": allow
|
||||
"git ls-files*": allow
|
||||
"echo *": allow
|
||||
"grep *": allow
|
||||
"python3*": 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