ingestion pins mcp-chassis v0.2.0: auth rejections aren't logged; REST metrics collapse to path="/" #155
Closed
opened 2026-10-03 14:42:23 +00:00 by mathias
·
2 comments
No Branch/Tag Specified
main
fix/pipeline-writes-158
fix/edit-path-io-192
fix/create-regular-188
fix/guard-special-179
fix/linkcheck-keeps-write-178
fix/write-dir-redirect-173
fix/tunnel-detect-174
fix/pipeline-root-157
w3/154-mcp-auth-wiring
fix/tunnel-traversal
test/in-brain-targets-171
fix/brain-scan-root-157
fix/graph-wiki-root-157
fix/vectorstore-root-157
fix/notes-root-157
fix/search-root-157
fix/brainwide-root-157
fix/raw-symlinks-153
feat/symlink-tripwire-157
fix/rest-auth-149
fix/123-brain-edit-envelope-check
feat/106-page-aware-extraction
fix/105-source-drift-on-main
fix/104-surface-merge-conflicts-on-main
agent/b1-compile-on-ingest
agent/104-surface-merge-conflicts
agent/105-source-drift
agent/107-loud-unconfigured-alerting
feat/brain-read-edit
fix/capture-i1-refusal-names-target
renovate/configure
feat/consolidate-single-harness
icebox/cmd-routing
feat/brain-pending-promote
fix/close-session-classification-refresh
fix/capture-summarywriter
v0.24.0
v0.23.1
v0.23.0
v0.22.0
v0.21.1
v0.21.0
v0.20.1
v0.20.0
v0.19.1
v0.19.0
v0.18.4
v0.18.3
v0.18.2
v0.18.1
v0.18.0
v0.17.0
v0.16.1
v0.16.0
v0.15.0
v0.14.0
v0.13.2
v0.13.1
v0.13.0
v0.12.1
v0.12.0
v0.11.2
icebox/cmd-routing-2026-07-01
v0.11.1
v0.11.0
v0.10.0
v0.9.0
v0.8.0
v0.7.0
v0.6.0
v0.5.0
v0.4.1
v0.4.0
v0.3.0
v0.2.0
v0.1.0
Labels
Clear labels
agent/ready
blocked/client
blocked/supplier
blocked/upstream
risk/high
risk/low
risk/medium
size/l
size/m
size/s
size/xs
status:dispatch
status:dispatched
status:review
status:reviewing
type/chore
type/decision
type/docs
type/feat
type/fix
type/ops
type/research
type/test
Meets the agent-ready contract; authorizes unattended execution
Waiting on the client
Waiting on a supplier
Waiting on an upstream project or vendor
Irreversible, security-relevant, or control plane
Reversible, local, test-covered
Touches shared state, deploys or data
Too big - split it
Under two days
Under half a day
Under an hour
Maintenance, no behaviour change
Human decision required; never agent/ready
Documentation only
New capability
Corrects broken behaviour
Infrastructure, deploy, runtime
Investigate; output is a finding, not code
Test coverage only
Milestone
No items
No Milestone
Projects
Clear projects
No projects
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: mathias/hyperguild#155
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Found verifying #149 live, 2026-10-03.
ingestion/go.modpinsgit.d-ma.be/mathias/mcp-chassis v0.2.0. Themcp auth rejectedaudit line (reason, remote, token fingerprint, path) arrived in chassisd5aa5b9(gitea-mcp#9), after v0.2.0; current is v0.7.1. Since #149 every REST route sits behindBearerMiddleware, so a caller I didn't know about would get silent 401s. Today the only signal is the 4xx counter. Bump the chassis (check the v0.3–v0.7 changelog:Fingerprint, the accepted-path naming, per-issuer JWKS client) and assert in a test that a rejection is logged.reg.Middlewarelabels by ServeMux pattern, so sincemountRESTevery REST route reports aspath="/". Per-route latency and 4xx breakdown for/query,/writeetc. is lost. Label by the inner REST mux's pattern instead (e.g. middleware insidemountREST).Baseline after deploy
cfe3f24:brain_query_duration_seconds_count{path="/",status="4xx"}= 4, all from my verification probes. A rise there with no matching probe means an unknown caller is being refused.Created via git-mcp on behalf of @mathias
pr-gatekeeper verdict: BLOCKED (PR #181)
PR #181 (head
474473c) is blocked. The full evidence is at #181 (comment).In brief: the auth semantics, metrics labels and routing all checked clean by execution, and CI run 9376 is green. The block is one decorative assertion. The new rejection-log test claims "the credential itself is never logged", but it stays green when the chassis logs the raw presented token. No test checks that the
mcp auth acceptedline leaves out the valid token. Fix: use a sentinel token, assert the bare sentinel is absent on both lines, and re-run the flip. The labelRESTPattern "bounded" comment also overclaims for authenticated unknown paths. That gap predates this PR.pr-gatekeeper verdict: APPROVED and MERGED (PR #181, re-review)
PR mode. Head
e05a13a, squash-merged asc0be5c4. PR label: risk/medium.replacedirective. Withdenylogging the raw token, the suite went RED. Withacceptlogging the raw token: RED. Withdenylogging the Authorization header: RED. Withdenysilenced to Debug: RED. With no change (the control): green. A transformed token in the log, for example uppercased, is not detected. The tests are honestly named "bare token", so that is acceptable.internal/startupretryis deleted and nothing references it.task check(CI=1): exit 0, 0 FAIL lines, golangci-lint 0 issues on both modules. CI run 9409, Lint/Test/Vet: success one05a13a.Not checked: live cluster rollout; whether any alert watches ingestion 5xx or
jwt_dex_unavailable.