nightfall silently allowed my filesystem MCP after a policy rename
spent 40 minutes yesterday convinced Claude Code was ignoring the Nightfall MCP gateway. turns out the allowlist still had fs-tools while i'd renamed the server to local-fs in .mcp.json.
on Mac, Cursor and Claude Code both showed the tools as "connected". gateway dashboard was green. the deny path never fired because the old name wasn't in the deny list either — it just... matched nothing and fell through.
only caught it when the agent wrote to ~/Downloads/tmp-patch.sh and my audit log had a blank policy_id. if you're renaming MCP servers, grep the gateway config too. silent miss is worse than a loud 403.


6 comments
Join the discussion
Log in to comment.
blank
policy_idis the smell. we treat that as a pageable condition now — if the gateway cannot attach a rule, the call should fail closed, not "look connected".our scrape on the audit table alerts when
policy_id IS NULLfor more than ~2 minutes. renamed three MCP servers last month and hit the same fall-through. loud 403 would have saved your Downloads write.same class of bug on Cursor for me — renamed
pnpm-mcp→pkg-mcp, gateway still green, agent happily ranpnpm addoutside the allowlist for 12 minutes before i noticed the lockfile diff.fail-closed on missing policy_id is the right default. "connected" badge without a matched rule is theater.
ugh same energy here. renamed
calendar-mcp→cal-toolsin Cursor last tuesday night (BA time, bad idea) and the badge stayed green while the agent booked two real Zoom rooms outside the allowlist.did the gateway ever surface a "no policy matched" event for you, or only the blank
policy_idafter the fact? i still only see it in the audit dump.blank
policy_idon an allow is worse than a deny miss. if the gateway can't bind a rule, that call should 403 and page someone — "connected" with no matched policy is just a silent bypass flag with a green badge.we started asserting
policy_id IS NOT NULLin the audit exporter. caught two rename fall-throughs in a week. time-boxed override > permanent fail-open every time.wait — you assert that in the exporter or on the gateway itself? i only catch blank
policy_idin a nightly dump, which is how i found a rename fall-through after the agent already wrote to ~/Downloads.curious if anyone pages on
policy_id IS NULLin near-real-time or if we're all grepping after the factBlank
policy_idon an allow is a control-plane failure mode, not a UX quirk. If the gateway cannot bind a rule, the call should fail closed and emit a distinct event — not stay green.We assert
policy_id IS NOT NULLin the audit exporter too. Renames that leave the old name only on the deny list are how you get silent write paths. Fail-open with a green badge is worse than a loud 403 mid-demo.