N6k – Let users and agents run untrusted SQL on production databases
Comments on “N6k – Let users and agents run untrusted SQL on production databases”
Claim-checked. Scored by all three judges, and its checkable claims were compared with the sources it cites. How far stories are checked
n6kd, an open-source server on GitHub, exposes DuckDB catalogs over WebSocket using the n6k protocol, so users and AI agents can run SQL against production data under row-level limits. A YAML policy sets per-table select, insert, update and delete predicates, and OIDC token claims such as $sub can scope each client to its own rows. Without a policy file, every catalog is served read/write. The project's documentation is the only source for these claims, and it shows no independent testing.
Why it ranked
No. 22 of 46 with a score of 0.55. The panel rated it highest on new information (0.91) and technical depth (0.85), lowest on audience breadth (0.44). The judges disagreed most on overclaim (spread 0.60), so the story is marked contested. Placed No. 22, No. 44 by score alone: the placement terms moved other stories past it.
- AI judgeJudge 2claude-haiku-5-5
- A tool release for serving DuckDB catalogs with row-level policies to clients and agents; technical and practically useful to data builders, but niche and mostly a README-style release with limited independent evidence.
- AI judgeJudge 3gpt-5.6-luna
- A technically detailed launch of a DuckDB-serving protocol with row-level policies, OIDC claims, agent access, isolation controls, and BigQuery integration. It is actionable and novel, though evidence of adoption or production use is limited.
Each judge wrote its line after answering the rubric, with the site and the author still hidden. Every answer behind this is in the table under Score.
Score
0.55total under rubric v2.3Contestedjudges differ by 0.41 on substantiated, 0.60 on overclaim
- Significance0.46
- Reader interest0.65
- Audience breadth0.44
- Practical relevance0.71
- Substantiated0.67
- Technical depth0.85
- New information0.91
- Counts against: Promotional0.12
- Counts against: Overclaim0.35
Each judge’s answer per question (0–1), their mean and spread, and what the question adds to the score (weight × mean).
| Question | Judge 1 | Judge 2 | Judge 3 | Mean | Spread | Weight | Contribution (weight times mean) |
|---|---|---|---|---|---|---|---|
| SignificanceHow much does this change what people in tech know or can do? | 0.50 | 0.30 | 0.57 | 0.46 | 0.27 | +0.24 | +0.109 |
| Reader interestWould a well-informed senior engineer or tech founder want to read this today, and likely pass it on? | 0.62 | 0.55 | 0.78 | 0.65 | 0.23 | +0.26 | +0.169 |
| Audience breadthHow many people who build technology does it concern? | 0.50 | 0.35 | 0.48 | 0.44 | 0.15 | +0.13 | +0.058 |
| Practical relevanceHow useful is it to someone who builds software or tech products? | 0.82 | 0.60 | 0.72 | 0.71 | 0.22 | +0.22 | +0.157 |
| SubstantiatedHow well is it backed? Consider whether it is the primary source, and whether its main claims come with data, code, a demo, a reproducible method or citations. | 0.86 | 0.45 | 0.70 | 0.67 | 0.41 , above the contested threshold | +0.05 | +0.034 |
| Technical depthHow technically substantive is it? | 0.99 | 0.70 | 0.86 | 0.85 | 0.29 | +0.05 | +0.043 |
| New informationDoes it contain information absent from the stories covered in the last 7 days (list provided)? | 0.88 | 0.90 | 0.96 | 0.91 | 0.08 | +0.05 | +0.046 |
| PromotionalIs it mainly marketing with little substance (a press release, ad or sponsored post with no real information)? A launch post that carries real news is not promotional. | 0.08 | 0.20 | 0.08 | 0.12 | 0.12 | −0.19 | −0.023 |
| OverclaimDo the headline or conclusions claim more than the body supports? | 0.68 | 0.30 | 0.08 | 0.35 | 0.60 , above the contested threshold | −0.11 | −0.039 |
| Sum of contributions | +0.553 | ||||||
| Claim-check penalty | 0.000 | ||||||
| Total, as published | 0.553 | ||||||
Spread is the highest minus the lowest judge answer. marks a spread above 0.40: the judges disagree, and the story is marked contested.
The badge for this ranking, for the author's page or anyone's: one line of HTML, and it links back here.
<a href="https://rubric.hrih.si/editions/2026-11-09/22/"><img src="https://rubric.hrih.si/badge/2026-11-09/22.svg" alt="Ranked #22 on Rubric, 9 Nov 2026" width="238" height="28"></a>Claim check
Claim check: 1 matches source · 7 no source given. Each claim is compared with the source the article itself cites; a flag is published only when both checkers agree.
No source givenVersion
The n6kd install script installs the latest release with its extensions for Linux, or macOS on arm64.
The article gives no link or citation for it.
The article says “Installs the latest release, with its extensions, for Linux, or macOS on arm64”
The source says No source to compare with.
No source givenNumber
The n6kd --listen Unix socket file is created with mode 0600 and removed on exit.
The article gives no link or citation for it.
The article says “the file is mode 0600 and removed on exit”
The source says No source to compare with.
No source givenGeneralization
Without --perms, n6kd serves every catalog in the loaded database as read/write and unbridged.
The article gives no link or citation for it.
The article says “Without --perms, every catalog in the loaded database is served read/write, unbridged”
The source says No source to compare with.
No source givenCausal conclusion
Quack's ATTACH cannot run UPDATE or DELETE, so those must be sent through quack_query.
The article gives no link or citation for it.
The article says “Quack's ATTACH cannot run UPDATE or DELETE; send those through quack_query('quack:localhost:8080”
The source says No source to compare with.
No source givenGeneralization
n6kd checks each OIDC token's signature, iss, aud, and exp, and refuses a failing token as unauthorized.
The article gives no link or citation for it.
The article says “n6kd discovers the issuer's signing keys at boot and checks each token's signature, iss, aud, and exp. A token that fails is refused as unauthorized”
The source says No source to compare with.
Matches sourceGeneralization
An MCP agent such as Claude Code pointed at the quickstart server gets the same limits as any other client.
The cited source says the same thing.
The article says “point an MCP agent such as Claude Code at the quickstart server. It gets the same limits as any other client”
The source says “n6kd mcp` gives an AI agent the same access as a DuckDB client, over MCP. The server applies the same `perms.yml` to the agent as to anyone else”
Source cited by the article: github.com/n6k-io/n6kd/blob/main/examples/agent/README.md
No source givenCausal conclusion
Policy values from token claims are bound as typed constants, never spliced into the SQL.
The article gives no link or citation for it.
The article says “Values are bound as typed constants, never spliced into the SQL”
The source says No source to compare with.
No source givenVersion
The -t template file is rendered with Go text/template before being run as SQL.
The article gives no link or citation for it.
The article says “A -t file is a -f file rendered with Go text/template first”
The source says No source to compare with.
Also covered by
No other coverage was clustered with this story.
Elsewhere
Elsewhere: HN 2 pts, not on front page
Recorded for context only, checked 9 Nov 2026, 05:46 UTC. It played no part in the ranking.