Commit f8a7aa2
fix(ai): explicit allow-list for ask-loop approval (refactor-safety) (#1265)
Round-2 backlog item #2 from the AI-task review. The permission ask-loop
in `actions.py` approved on *any non-`deny` answer* (deny-list shape).
Both backends normalize to exactly `allow`/`deny` today, so this is
**behavior-neutral now** — but a new backend or a refactored token could
slip through the gap.
Flips the three prompt sites (shell/target/path) to an explicit
allow-list via a small `_is_approved()` helper: only a normalized
`allow` proceeds; `None`, `deny`, or any unexpected token denies (fail
closed).
Tests: `test_ai_actions.py` 75→79 (+4: allow proceeds, deny denies,
unexpected token denies, None denies). No regressions.
Folds into the aggregate #1241.
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>1 parent 772f5cc commit f8a7aa2
2 files changed
Lines changed: 42 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
171 | 171 | | |
172 | 172 | | |
173 | 173 | | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
174 | 181 | | |
175 | 182 | | |
176 | 183 | | |
| |||
255 | 262 | | |
256 | 263 | | |
257 | 264 | | |
258 | | - | |
| 265 | + | |
259 | 266 | | |
260 | 267 | | |
261 | 268 | | |
| |||
279 | 286 | | |
280 | 287 | | |
281 | 288 | | |
282 | | - | |
| 289 | + | |
283 | 290 | | |
284 | 291 | | |
285 | 292 | | |
| |||
302 | 309 | | |
303 | 310 | | |
304 | 311 | | |
305 | | - | |
| 312 | + | |
306 | 313 | | |
307 | 314 | | |
308 | 315 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1129 | 1129 | | |
1130 | 1130 | | |
1131 | 1131 | | |
| 1132 | + | |
| 1133 | + | |
| 1134 | + | |
| 1135 | + | |
| 1136 | + | |
| 1137 | + | |
| 1138 | + | |
| 1139 | + | |
| 1140 | + | |
| 1141 | + | |
| 1142 | + | |
| 1143 | + | |
| 1144 | + | |
| 1145 | + | |
| 1146 | + | |
| 1147 | + | |
| 1148 | + | |
| 1149 | + | |
| 1150 | + | |
| 1151 | + | |
| 1152 | + | |
| 1153 | + | |
| 1154 | + | |
| 1155 | + | |
| 1156 | + | |
| 1157 | + | |
| 1158 | + | |
| 1159 | + | |
| 1160 | + | |
| 1161 | + | |
| 1162 | + | |
| 1163 | + | |
1132 | 1164 | | |
1133 | 1165 | | |
1134 | 1166 | | |
| |||
0 commit comments