Commit 87b7f6b
Implementation Plan: Codex Sous-Chef Recipe Context Loss via Auto-Compaction (#3947)
## Summary
Prevent Codex sous-chef sessions from losing recipe content during long
pipeline runs by:
1. **Disabling auto-compaction** — Set `model_auto_compact_token_limit =
999999999` in the Codex `config.toml` via
`ensure_codex_mcp_registered()`, using the existing
`_ensure_top_level_key()` pattern already used for
`tool_output_token_limit`.
2. **Structural recipe-read guard** — Add a new blocking PreToolUse
guard hook (`recipe_read_guard.py`) that denies `run_cmd`/`Bash` calls
containing recipe/skill/agent file path patterns and `run_python` calls
importing `autoskillit.recipe.*`. This provides defense-in-depth that
cannot be compacted away, unlike the prompt-based prohibitions in
`_backend_supplement()`.
## Implementation Plan
Plan file:
`/home/talon/projects/autoskillit-runs/impl-20260608-151346-014727/.autoskillit/temp/make-plan/codex_sous_chef_recipe_context_loss_via_auto_compaction_plan_2026-06-08_153500.md`
Closes #3938
🤖 Generated with [Claude Code](https://claude.com/claude-code) via
AutoSkillit
<!-- autoskillit:pipeline-signature
steps=prepare_pr,run_arch_lenses,compose_pr,annotate_pr_diff,review_pr
-->
## Token Usage Summary
| Step | Model | count | uncached | output | cache_read | peak_ctx |
turns | cache_write | time |
|------|-------|-------|----------|--------|------------|----------|-------|-------------|------|
| run_bem* | sonnet | 1 | 62 | 31.8k | 434.0k | 97.6k | 24 | 89.5k | 9m
23s |
| dispatch:f69547b0-e15c-448a-a61c-366c3d67786d* | sonnet | 1 | 66 |
4.0k | 269.4k | 42.6k | 17 | 43.5k | 10m 32s |
| plan* | opus[1m] | 7 | 5.0k | 63.9k | 5.9M | 94.3k | 210 | 376.6k |
44m 19s |
| verify* | sonnet | 6 | 5.3k | 50.7k | 2.6M | 66.1k | 151 | 216.9k |
27m 9s |
| implement* | MiniMax-M3 | 6 | 381.4k | 29.1k | 6.2M | 74.7k | 279 | 0
| 22m 19s |
| audit_impl* | sonnet | 6 | 4.9k | 33.4k | 1.2M | 48.0k | 97 | 143.6k |
16m 50s |
| prepare_pr* | MiniMax-M3 | 5 | 219.3k | 11.8k | 798.6k | 47.9k | 64 |
0 | 5m 36s |
| compose_pr* | MiniMax-M3 | 5 | 181.4k | 7.3k | 858.4k | 39.0k | 64 | 0
| 4m 13s |
| review_pr* | sonnet | 10 | 1.3k | 180.5k | 7.9M | 90.9k | 427 | 440.6k
| 43m 52s |
| dispatch:2496288b-5215-4250-9d9d-a50396f464c3* | sonnet | 1 | 354 |
12.7k | 3.2M | 85.4k | 125 | 85.6k | 47m 48s |
| resolve_review* | sonnet | 3 | 655 | 34.5k | 5.0M | 98.2k | 187 |
151.8k | 16m 29s |
| dispatch:90358dda-aa18-4129-8dc1-d152f9f5f96c* | sonnet | 1 | 314 |
10.3k | 2.8M | 80.8k | 82 | 110.7k | 35m 1s |
| dispatch:14357aff-0458-4688-aeeb-7546f8b07de4* | sonnet | 1 | 346 |
12.7k | 3.2M | 85.0k | 87 | 85.2k | 32m 2s |
| fix* | sonnet | 1 | 232 | 22.3k | 1.9M | 86.5k | 76 | 64.8k | 10m 28s
|
| dispatch:d8fd01d8-d94b-4d47-a6f0-120c4a965a79* | sonnet | 1 | 346 |
12.3k | 3.4M | 89.5k | 123 | 65.1k | 1h 3m |
| retry_worktree* | sonnet | 1 | 84 | 2.8k | 356.0k | 40.6k | 25 | 23.0k
| 1m 45s |
| dispatch:71dae9f1-25d8-40bc-bdc2-31bcc568ef60* | sonnet | 1 | 178 |
6.1k | 1.5M | 76.7k | 44 | 52.4k | 22m 15s |
| dispatch:1bd28782-d46f-49ab-bf61-0b127e2bc596* | sonnet | 1 | 370 |
12.2k | 3.5M | 86.8k | 97 | 62.4k | 1h 14m |
| **Total** | | | 801.5k | 538.3k | 51.0M | 98.2k | | 2.0M | 8h 7m |
\* *Step used a non-Anthropic provider; caching behavior may differ.*
## Token Efficiency
| Step | LoC Changed | cache_read/LoC | cache_write/LoC | output/LoC |
|------|-------------|----------------|-----------------|------------|
| run_bem | 0 | — | — | — |
| dispatch:f69547b0-e15c-448a-a61c-366c3d67786d | 0 | — | — | — |
| plan | 0 | — | — | — |
| verify | 0 | — | — | — |
| implement | 353 | 17691.0 | 0.0 | 82.4 |
| audit_impl | 0 | — | — | — |
| prepare_pr | 0 | — | — | — |
| compose_pr | 0 | — | — | — |
| review_pr | 0 | — | — | — |
| dispatch:2496288b-5215-4250-9d9d-a50396f464c3 | 7568 | 426.8 | 11.3 |
1.7 |
| resolve_review | 53 | 94520.3 | 2864.8 | 651.7 |
| dispatch:90358dda-aa18-4129-8dc1-d152f9f5f96c | 0 | — | — | — |
| dispatch:14357aff-0458-4688-aeeb-7546f8b07de4 | 0 | — | — | — |
| fix | 14 | 134006.6 | 4625.6 | 1592.7 |
| dispatch:d8fd01d8-d94b-4d47-a6f0-120c4a965a79 | 0 | — | — | — |
| retry_worktree | 0 | — | — | — |
| dispatch:71dae9f1-25d8-40bc-bdc2-31bcc568ef60 | 0 | — | — | — |
| dispatch:1bd28782-d46f-49ab-bf61-0b127e2bc596 | 1230 | 2842.6 | 50.8 |
9.9 |
| **Total** | **9218** | 5535.2 | 218.2 | 58.4 |
## Model Usage Breakdown
| Model | steps | uncached | output | cache_read | cache_write | time |
|-------|-------|----------|--------|------------|-------------|------|
| sonnet | 14 | 14.5k | 426.2k | 37.2M | 1.6M | 6h 51m |
| opus[1m] | 1 | 5.0k | 63.9k | 5.9M | 376.6k | 44m 19s |
| MiniMax-M3 | 3 | 782.1k | 48.1k | 7.9M | 0 | 32m 9s |
---------
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>1 parent 3e77893 commit 87b7f6b
14 files changed
Lines changed: 366 additions & 2 deletions
File tree
- src/autoskillit
- execution
- backends
- hooks
- guards
- tests
- arch
- cli
- execution/backends
- infra
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
19 | 19 | | |
20 | 20 | | |
21 | 21 | | |
| 22 | + | |
22 | 23 | | |
23 | 24 | | |
24 | 25 | | |
| |||
228 | 229 | | |
229 | 230 | | |
230 | 231 | | |
| 232 | + | |
231 | 233 | | |
232 | 234 | | |
233 | 235 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
| 6 | + | |
6 | 7 | | |
7 | 8 | | |
8 | 9 | | |
| |||
80 | 81 | | |
81 | 82 | | |
82 | 83 | | |
| 84 | + | |
83 | 85 | | |
84 | 86 | | |
85 | 87 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
27 | 27 | | |
28 | 28 | | |
29 | 29 | | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
30 | 38 | | |
31 | 39 | | |
32 | 40 | | |
| |||
233 | 241 | | |
234 | 242 | | |
235 | 243 | | |
| 244 | + | |
| 245 | + | |
236 | 246 | | |
237 | 247 | | |
238 | 248 | | |
| |||
294 | 304 | | |
295 | 305 | | |
296 | 306 | | |
| 307 | + | |
| 308 | + | |
| 309 | + | |
| 310 | + | |
| 311 | + | |
297 | 312 | | |
298 | 313 | | |
299 | 314 | | |
| |||
305 | 320 | | |
306 | 321 | | |
307 | 322 | | |
| 323 | + | |
308 | 324 | | |
309 | 325 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
207 | 207 | | |
208 | 208 | | |
209 | 209 | | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
210 | 215 | | |
211 | 216 | | |
212 | 217 | | |
| |||
334 | 339 | | |
335 | 340 | | |
336 | 341 | | |
| 342 | + | |
337 | 343 | | |
338 | 344 | | |
339 | 345 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
18 | 18 | | |
19 | 19 | | |
20 | 20 | | |
| 21 | + | |
21 | 22 | | |
22 | 23 | | |
23 | 24 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | | - | |
| 1 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
874 | 874 | | |
875 | 875 | | |
876 | 876 | | |
877 | | - | |
| 877 | + | |
878 | 878 | | |
879 | 879 | | |
880 | 880 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
190 | 190 | | |
191 | 191 | | |
192 | 192 | | |
| 193 | + | |
193 | 194 | | |
194 | 195 | | |
195 | 196 | | |
| |||
203 | 204 | | |
204 | 205 | | |
205 | 206 | | |
| 207 | + | |
206 | 208 | | |
207 | 209 | | |
208 | 210 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
11 | 11 | | |
12 | 12 | | |
13 | 13 | | |
| 14 | + | |
14 | 15 | | |
15 | 16 | | |
16 | 17 | | |
| |||
41 | 42 | | |
42 | 43 | | |
43 | 44 | | |
| 45 | + | |
44 | 46 | | |
45 | 47 | | |
46 | 48 | | |
| |||
0 commit comments