[bug] Dangerous-command rules miss standard forms: git push -f, dd with reordered args, systemctl poweroff, dead ":>" regex
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 75/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- shell, typescript
Direzione di ricerca
L'issue punta al file packages/coding-agent/src/step/command-policy.ts righe 93-105, dove sono definite le regole dangerous-command. Inizia esaminando i pattern regex per i comandi dd, git, systemctl e :>. Esegui i frammenti di test forniti per confermare i falsi negativi. La correzione comporta l'aggiornamento delle regex per farle corrispondere alle forme standard dei comandi e l'aggiunta dei comandi mancanti al set lifecycle. Controlla permissions.ts per capire come funziona decideStepToolCall. Scrivi test per ogni regola corretta per assicurarti che ora attivino una conferma.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
What happened?
The dangerous-command rules in packages/coding-agent/src/step/command-policy.ts:93-105 miss several standard, unobfuscated forms of the exact command classes they are meant to catch. Since the default permission preset is bypass ("Run ordinary tools without approval; dangerous commands still ask") and an unmatched command analyzes as ordinary and is allowed with no confirmation (decideStepToolCall, permissions.ts), these execute silently in the default configuration:
dd bs=4M if=disk.img of=/dev/sda/dd of=/dev/sda if=/dev/zero— thecopy-devicerule/\bdd\s+if=/iurequiresif=immediately afterdd; anybs=/of=first defeats it.git push -f origin main/git push origin +main—destructive-gitonly matches--force, not-for+refspec.git -C repo reset --hard/git -c x=y push --force— the regex requires the subcommand to immediately followgit, so any global option defeats all three git rules.systemctl poweroff/systemctl halt/init 0—DANGEROUS_LIFECYCLE_COMMANDSonly containsreboot/shutdown.:> /dev/sda—/\b:>\s*\/dev\//ucan never match realistic input:\bbefore:requires a preceding word character, so only odd forms likex:> /dev/sdamatch. The rule is effectively dead code.
Steps to reproduce
/\bdd\s+if=/iu.test("dd bs=4M if=disk.img of=/dev/sda") // false
// destructive-git:
/\bgit\s+(?:reset\s+--hard|clean\s+-[^\n]*f|push\s+[^\n]*--force(?:-with-lease)?)/iu.test("git push -f origin main") // false
/\b:>\s*\/dev\//u.test(":> /dev/sda") // false
Feeding each command through analyzeCommandPolicy returns { kind: "ordinary" }, and decideStepToolCall("run_command", ..., bypass) returns { action: "allow" } — while rm -rf ./build and git push --force correctly return confirm.
Expected behavior
Standard forms of these dangerous commands should trigger confirmation, as the bypass preset promises. Suggestions: match of=/dev/ anywhere in dd args; evaluate git via parsed argv (as isRecursiveForceRemove already does) to cover -f, +refspec, and git -C/-c prefixes; add poweroff/halt and init 0|6 to the lifecycle set; fix or drop the :> rule; add tests using each rule’s standard spellings. Happy to implement this if you’d like.
Version
main @ e411b1a
- Lingua principale
- TypeScript
- Stelle
- 850
- Fork
- 62
- Merge medio
- 1g 12h
- PR unite (30g)
- 43
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di stepfun-ai/Step-Code
-
area/build bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
stepfun-ai/Step-Code#190 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
area/tools bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
stepfun-ai/Step-Code#186 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
area/tools bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
stepfun-ai/Step-Code#185 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
area/tools bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
stepfun-ai/Step-Code#184 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
stepfun-ai/Step-Code#179 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di stepfun-ai/Step-Code
Issue simili
-
ai-driven-qa bug claude Minor
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
linagora/twake-contacts-frontend#241 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
I maintainer di solito rispondono entro 1 giorno
-
ui(ListToolbar): search takes the full row on a phone instead of sharing it with the result countAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 64/100
I maintainer di solito rispondono entro 1 giorno
-
priority:high
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
ahmedkhaleel2004/gitdiagram#228 ·