Commit f04edf8
fix(guardrails): cap launcher, child-shell and eval nesting in the root-delete guard
rdt_check_segment recursed with no depth bound through the runuser -u arm, rdt_su_shell_run and eval. At 120 nested runusers the block message printed but the process exited 0: the recursion had left so little stack that rdt_block died inside its telemetry emission (hook::_json_split, reached through rdt_emit_tel with HOOK_TELEMETRY_SINK set) before reaching exit 2, and deeper nesting died on SIGSEGV. A dynamic-local depth counter now refuses past 24 levels, restored on every return by scope, and nested eval text is charged to the tokenizing budget so eval chains refuse in seconds.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>1 parent 577eb23 commit f04edf8
3 files changed
Lines changed: 65 additions & 1 deletion
File tree
- plugins/guardrails
- hooks
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
| 15 | + | |
15 | 16 | | |
16 | 17 | | |
17 | 18 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
188 | 188 | | |
189 | 189 | | |
190 | 190 | | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
191 | 198 | | |
192 | 199 | | |
193 | 200 | | |
| |||
222 | 229 | | |
223 | 230 | | |
224 | 231 | | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
225 | 244 | | |
226 | 245 | | |
227 | 246 | | |
| |||
638 | 657 | | |
639 | 658 | | |
640 | 659 | | |
| 660 | + | |
| 661 | + | |
| 662 | + | |
| 663 | + | |
| 664 | + | |
| 665 | + | |
| 666 | + | |
641 | 667 | | |
642 | 668 | | |
643 | 669 | | |
| |||
981 | 1007 | | |
982 | 1008 | | |
983 | 1009 | | |
984 | | - | |
| 1010 | + | |
| 1011 | + | |
| 1012 | + | |
| 1013 | + | |
| 1014 | + | |
| 1015 | + | |
| 1016 | + | |
985 | 1017 | | |
986 | 1018 | | |
987 | 1019 | | |
| |||
Lines changed: 31 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
288 | 288 | | |
289 | 289 | | |
290 | 290 | | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
| 300 | + | |
| 301 | + | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
| 309 | + | |
| 310 | + | |
| 311 | + | |
| 312 | + | |
| 313 | + | |
| 314 | + | |
| 315 | + | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
291 | 322 | | |
292 | 323 | | |
293 | 324 | | |
| |||
0 commit comments