Repository navigation
Commit 0719fae
authored
fix(quarantine): server admission stays human under the default trust tier (#1802)
## Summary
Since #1740 (Spec 119) made `scan` the default trust mode, the Spec 086
clean-scan admission gate has been releasing **every** server added
without a `trust_mode`, including one added with `quarantined: true`.
`TestE2E_QuarantineConfigApply` has failed on main since then (bisected
to #1740).
Maintainer decision: server admission stays human. Only an explicit
`trust_mode: "scan"` auto-admits; the default tier only auto-approves
clean tool changes.
- `ServerConfig.AdmitsOnCleanScan()` is true only for an explicit
`trust_mode: "scan"`.
- `maybeAutoApproveScanSettled`, `maybeStartAdmissionScan` and
`scanModeAdmissionOwns` use it. Default-tier servers get the
informational (non-gating) baseline scan instead of the admission one.
- The approval commit re-checks `AdmitsOnCleanScan` (and that the server
is still quarantined) for `scan-auto` approvals inside the same commit,
so a `trust_mode` changed while the scan was running cannot release the
server.
- Web UI: the manual add form sends `trust_mode` only when one is
picked. The selector checks no radio for an unset mode (Scan keeps the
"current default" badge), so Scan can be chosen explicitly. Previously
the form always sent `scan`.
- Docs (`intro.md`, `configuration.md`, `security-quarantine.md`), CLI
`--trust-mode` help and the CHANGELOG Spec 119 entry describe the rule.
## Tests
- New: default-tier server is never auto-approved and gets no admission
scan (`scan_admission_test.go`); `scanModeAdmissionOwns` hands it to the
informational path;
`TestCommitServerApproval_ScanAutoRequiresExplicitScan` (manual and
unset refused, explicit scan released). Each fails without the fix.
- Frontend: explicit Scan is sent when picked; unset form omits
`trust_mode`; selector emits `scan` from the unset state.
- Locally: `internal/server` (server tag, CI skip regex),
`internal/runtime`, `internal/config`, `cmd/...`,
`internal/qapilot/...`, `httpapi`; `TestE2E_QuarantineConfigApply`
passes again; `./scripts/test-api-e2e.sh` all passed; vitest 2791 passed
(the 2 `activity-views.spec.ts` failures also fail on main locally);
`vue-tsc`; both golangci-lint configs report 0 new issues.
- Cross-reviewed with opencode Sol 6.1: round 1 found the commit-time
race and the add-form opt-in gap (both fixed), round 2 CLEAN.1 parent 5a116b7 commit 0719fae
19 files changed
Lines changed: 162 additions & 36 deletions
File tree
- cmd/mcpproxy
- docs
- features
- frontend
- src
- components
- utils
- tests/unit
- internal
- config
- runtime
- server
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
28 | 28 | | |
29 | 29 | | |
30 | 30 | | |
31 | | - | |
32 | | - | |
33 | | - | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
34 | 36 | | |
35 | 37 | | |
36 | 38 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
172 | 172 | | |
173 | 173 | | |
174 | 174 | | |
175 | | - | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
176 | 183 | | |
177 | 184 | | |
178 | 185 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
379 | 379 | | |
380 | 380 | | |
381 | 381 | | |
382 | | - | |
| 382 | + | |
383 | 383 | | |
384 | 384 | | |
385 | 385 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
453 | 453 | | |
454 | 454 | | |
455 | 455 | | |
456 | | - | |
| 456 | + | |
457 | 457 | | |
458 | 458 | | |
459 | 459 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
593 | 593 | | |
594 | 594 | | |
595 | 595 | | |
596 | | - | |
| 596 | + | |
597 | 597 | | |
598 | 598 | | |
599 | 599 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
32 | 32 | | |
33 | 33 | | |
34 | 34 | | |
35 | | - | |
| 35 | + | |
36 | 36 | | |
37 | 37 | | |
38 | 38 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
115 | 115 | | |
116 | 116 | | |
117 | 117 | | |
118 | | - | |
| 118 | + | |
119 | 119 | | |
120 | 120 | | |
121 | 121 | | |
| |||
140 | 140 | | |
141 | 141 | | |
142 | 142 | | |
143 | | - | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
144 | 147 | | |
145 | 148 | | |
146 | 149 | | |
| |||
191 | 194 | | |
192 | 195 | | |
193 | 196 | | |
194 | | - | |
195 | 197 | | |
| 198 | + | |
196 | 199 | | |
197 | 200 | | |
198 | 201 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
17 | 17 | | |
18 | 18 | | |
19 | 19 | | |
20 | | - | |
| 20 | + | |
21 | 21 | | |
22 | 22 | | |
23 | 23 | | |
| |||
118 | 118 | | |
119 | 119 | | |
120 | 120 | | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
121 | 130 | | |
122 | 131 | | |
123 | 132 | | |
| |||
129 | 138 | | |
130 | 139 | | |
131 | 140 | | |
132 | | - | |
| 141 | + | |
133 | 142 | | |
134 | 143 | | |
135 | 144 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
6 | 6 | | |
7 | 7 | | |
8 | 8 | | |
9 | | - | |
10 | | - | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
11 | 12 | | |
12 | 13 | | |
13 | 14 | | |
| |||
94 | 95 | | |
95 | 96 | | |
96 | 97 | | |
97 | | - | |
| 98 | + | |
98 | 99 | | |
99 | 100 | | |
100 | 101 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
91 | 91 | | |
92 | 92 | | |
93 | 93 | | |
94 | | - | |
95 | 94 | | |
96 | 95 | | |
97 | 96 | | |
| |||
115 | 114 | | |
116 | 115 | | |
117 | 116 | | |
118 | | - | |
119 | 117 | | |
120 | 118 | | |
121 | 119 | | |
| |||
146 | 144 | | |
147 | 145 | | |
148 | 146 | | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
149 | 164 | | |
150 | 165 | | |
151 | 166 | | |
| |||
0 commit comments