Commit 9ce209b
committed
fix(mcp): stop server-access save mutating the live in-memory ACL profile
BuildAllowedServerList wrote McpServersMode=Allowlist and AllowedMcpServers back
onto the live ToolAudienceProfile object returned by ResolveProfile — the same
object IsServerAllowed/IsToolGranted/GetEffectiveMode read for access decisions.
A save interrupted by an exception after that mutation but before the file write
would leave the in-memory ACL coerced to allowlist mode.
Fold the helper into SaveServerAccess, which now accumulates each audience's
allow-list in a local working dictionary (seeded once from the original profile so
multiple changes to the same audience still build on each other) and writes the
mode and list straight to the serialization dictionary. The live profile is never
mutated.1 parent a371c5b commit 9ce209b
3 files changed
Lines changed: 58 additions & 24 deletions
File tree
- openspec/changes/harden-config-tui-io-and-failloud
- src
- Netclaw.Cli.Tests/Mcp
- Netclaw.Cli/Mcp
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
36 | 36 | | |
37 | 37 | | |
38 | 38 | | |
39 | | - | |
| 39 | + | |
40 | 40 | | |
41 | 41 | | |
42 | 42 | | |
| |||
Lines changed: 35 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
327 | 327 | | |
328 | 328 | | |
329 | 329 | | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
| 341 | + | |
| 342 | + | |
| 343 | + | |
| 344 | + | |
| 345 | + | |
| 346 | + | |
| 347 | + | |
| 348 | + | |
| 349 | + | |
| 350 | + | |
| 351 | + | |
| 352 | + | |
| 353 | + | |
| 354 | + | |
| 355 | + | |
| 356 | + | |
| 357 | + | |
| 358 | + | |
| 359 | + | |
| 360 | + | |
| 361 | + | |
| 362 | + | |
| 363 | + | |
| 364 | + | |
330 | 365 | | |
331 | 366 | | |
332 | 367 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
509 | 509 | | |
510 | 510 | | |
511 | 511 | | |
| 512 | + | |
| 513 | + | |
| 514 | + | |
| 515 | + | |
| 516 | + | |
| 517 | + | |
| 518 | + | |
| 519 | + | |
512 | 520 | | |
513 | 521 | | |
514 | 522 | | |
515 | | - | |
516 | | - | |
| 523 | + | |
| 524 | + | |
| 525 | + | |
| 526 | + | |
| 527 | + | |
| 528 | + | |
| 529 | + | |
| 530 | + | |
517 | 531 | | |
518 | | - | |
| 532 | + | |
| 533 | + | |
| 534 | + | |
| 535 | + | |
| 536 | + | |
| 537 | + | |
519 | 538 | | |
520 | 539 | | |
521 | 540 | | |
522 | 541 | | |
523 | | - | |
524 | | - | |
525 | | - | |
526 | | - | |
527 | | - | |
528 | | - | |
529 | | - | |
530 | | - | |
531 | | - | |
532 | | - | |
533 | | - | |
534 | | - | |
535 | | - | |
536 | | - | |
537 | | - | |
538 | | - | |
539 | | - | |
540 | | - | |
541 | | - | |
542 | | - | |
543 | 542 | | |
544 | 543 | | |
545 | 544 | | |
| |||
0 commit comments