frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

Open in hackernews

Show HN: Kontext CLI – Credential broker for AI coding agents in Go

https://github.com/kontext-dev/kontext-cli
47•mc-serious•5h ago
We built the Kontext CLI because AI coding agents need access to GitHub, Stripe, databases, and dozens of other services — and right now most teams handle this by copy-pasting long-lived API keys into .env files, or the actual chat interface, whilst hoping for the best.

The problem isn't just secret sprawl. It's that there's no lineage of access. You don't know which developer launched which agent, what it accessed, or whether it should have been allowed to. The moment you hand raw credentials to a process, you've lost the ability to enforce policy, audit access, or rotate without pain. The credential is the authorization, and that's fundamentally broken when autonomous agents are making hundreds of API calls per session.

Kontext takes a different approach. You declare what credentials a project needs in a .env.kontext file:

  GITHUB_TOKEN={{kontext:github}}
  STRIPE_KEY={{kontext:stripe}}
  LINEAR_TOKEN={{kontext:linear}}
Then run `kontext start --agent claude`. The CLI authenticates you via OIDC, and for each placeholder: if the service supports OAuth, it exchanges the placeholder for a short-lived access token via RFC 8693 token exchange; for static API keys, the backend injects the credential directly into the agent's runtime environment. Either way, secrets exist only in memory during the session — never written to disk on your machine. Every tool call is streamed for audit as the agent runs.

The closest analogy is a Security Token Service (STS): you authenticate once, and the backend mints short-lived, scoped credentials on-the-fly — except unlike a classical STS, we hold the upstream secrets, so nothing long-lived ever reaches the agent. The backend holds your OAuth refresh tokens and API keys; the CLI never sees them. It gets back short-lived access tokens scoped to the session.

What the CLI captures for every tool call: what the agent tried to do, what happened, whether it was allowed, and who did it — attributed to a user, session, and org.

Install with one command: `brew install kontext-dev/tap/kontext`

The CLI is written in Go (~5ms hook overhead per tool call), uses ConnectRPC for backend communication, and stores auth in the system keyring. Works with Claude Code today, Codex support coming soon.

We're working on server-side policy enforcement next — the infrastructure for allow/deny decisions on every tool call is already wired, we just need to close the loop so tool calls can also be rejected.

We'd love feedback on the approach. Especially curious: how are teams handling credential management for AI agents today? Are you just pasting env vars into the agent chat, or have you found something better?

GitHub: https://github.com/kontext-dev/kontext-cli Site: https://kontext.security

Comments

amjd•2h ago
Congrats on the launch! What are the key advantages of this compared to OneCLI[1]?

[1]: https://github.com/onecli/onecli

mc-serious•2h ago
Great question. Two main differences:

Workflow: OneCLI runs as a self-hosted Docker gateway — you route agent traffic through localhost:10255. Kontext doesn't change how you use Claude Code at all, just kontext start --agent claude.

Visibility layer: OneCLI intercepts outbound HTTP requests. Kontext hooks into Claude's PreToolUse/PostToolUse events, so you see bash commands, file ops, and API calls and not just network traffic.

Trust model tradeoff worth naming: OneCLI is fully self-hosted. Kontext holds secrets server-side and mints short-lived tokens per session. We do this via token exchange, RFC 8693, and natively build upon Oauth to support only handing over short-lived tokens - you don't need to capture refresh tokens for external tool calls at all.

esafranchik•2h ago
Does this work with any tool calls that make an HTTP request? e.g. calling `curl` directly vs writing a script to make the request, then calling it
mc-serious•2h ago
Yes, with one important distinction: our visibility is at the agent tool boundary, not the raw network layer.

So if Claude Code invokes Bash and runs curl ..., we see that tool invocation. If it invokes Bash and runs python script.py, and that script makes HTTP requests internally, we still see the Bash invocation.

Vishi3•2h ago
Can I integrate this with my coding agents?
traceroute66•2h ago
Sounds awfully similar to Tailscale Aperture[1]

[1] https://tailscale.com/blog/aperture-self-serve

mc-serious•1h ago
Thanks for flagging - wasn't aware of Aperture! It's a little different to what the Kontext CLI does though.

Aperture solves “make multiple coding agents talk to the right LLM backend through an Aperture proxy.” We solve “launch a governed agent session with identity, short-lived third-party credentials, and tool-level auditability.” They overlap at the launcher layer, but the security goals are different.

airstrike•2h ago
Really cool and much needed!

I was actually just about to get started writing this but in Rust....

mc-serious•1h ago
Nice! I'd love to hear what you think about our approach, and what features you'd like to see first.
sarahroehm•2h ago
Finally a solution which focuses on contextual authorization - evaluating the agent's reasoning trace when it requests a credential, only issuing it if the intent matches what the user authorized.. developer-focused and self-serve.Happy Launch day!!
0xOsprey•2h ago
Yup I needed this bad for my NanoClaw

Nice work

sjdv1982•1h ago
What if kontext runs under the same user as Claude? Could it in principle inspect the kontext process and extract the key from memory?
measurablefunc•22m ago
It should be possible to do this w/ eBPF. Monitor network i/o & rewrite the request on the fly to include the proper tokens & signatures. The agent can just be given placeholder tokens. That way all the usual libraries work as expected & the secrets/signatures are handled w/o worrying about another abstraction layer. Here is some prior art: https://riptides.io/blog/when-ebpf-isnt-enough-why-we-went-w...
zimbatm•20m ago
This is how keychains should be designed. Never return the secret, but mint a new token, or sign a request.

We need this also for normal usage like development environments. Or when invoking a command on a remote server.

Are you going to add support for services that don't support OIDC or this going to be a known limitation?

I wrote to Flock's privacy contact to opt out of their domestic spying program

https://honeypot.net/2026/04/14/i-wrote-to-flocks-privacy.html
155•speckx•1h ago•51 comments

Spain to expand internet blocks to tennis, golf, movies broadcasting times

https://bandaancha.eu/articulos/telefonica-consigue-bloqueos-ips-11731
229•akyuu•1h ago•195 comments

Rare concert recordings are landing on the Internet Archive

https://techcrunch.com/2026/04/13/thousands-of-rare-concert-recordings-are-landing-on-the-interne...
332•jrm-veris•5h ago•97 comments

Claude Code Routines

https://code.claude.com/docs/en/routines
135•matthieu_bl•2h ago•84 comments

5NF and Database Design

https://kb.databasedesignbook.com/posts/5nf/
68•petalmind•2h ago•22 comments

Modifying FileZilla to Workaround Bambu 3D Printer's FTP Issue

https://lantian.pub/en/article/modify-computer/modify-filezilla-workaround-bambu-3d-printer-ftp-i...
23•speckx•1h ago•12 comments

Turn your best AI prompts into one-click tools in Chrome

https://blog.google/products-and-platforms/products/chrome/skills-in-chrome/
19•xnx•1h ago•6 comments

40% of lost calories globally are from beef, needing 33 cal of feed per 1 cal

https://iopscience.iop.org/article/10.1088/2976-601X/ae4f6b
45•randycupertino•44m ago•41 comments

Let's Talk Space Toilets

https://mceglowski.substack.com/p/lets-talk-space-toilets
52•zdw•20h ago•10 comments

A new spam policy for “back button hijacking”

https://developers.google.com/search/blog/2026/04/back-button-hijacking
741•zdw•15h ago•438 comments

Show HN: LangAlpha – what if Claude Code was built for Wall Street?

https://github.com/ginlix-ai/langalpha
52•zc2610•4h ago•15 comments

OpenSSL 4.0.0

https://github.com/openssl/openssl/releases/tag/openssl-4.0.0
50•petecooper•1h ago•6 comments

guide.world: A compendium of travel guides

https://guide.world/
10•firloop•5d ago•2 comments

Backblaze has stopped backing up OneDrive and Dropbox folders and maybe others

https://rareese.com/posts/backblaze/
781•rrreese•10h ago•482 comments

Carol's Causal Conundrum: a zine intro to causally ordered message delivery

https://decomposition.al/zines/
21•evakhoury•4d ago•2 comments

jj – the CLI for Jujutsu

https://steveklabnik.github.io/jujutsu-tutorial/introduction/what-is-jj-and-why-should-i-care.html
412•tigerlily•8h ago•354 comments

Show HN: Kontext CLI – Credential broker for AI coding agents in Go

https://github.com/kontext-dev/kontext-cli
47•mc-serious•5h ago•14 comments

Show HN: Kelet – Root Cause Analysis agent for your LLM apps

https://kelet.ai/
30•almogbaku•2h ago•16 comments

The Mouse Programming Language on CP/M

https://techtinkering.com/articles/the-mouse-programming-language-on-cpm/
20•PaulHoule•3d ago•2 comments

Introspective Diffusion Language Models

https://introspective-diffusion.github.io/
191•zagwdt•11h ago•38 comments

Show HN: A memory database that forgets, consolidates, and detects contradiction

https://github.com/yantrikos/yantrikdb-server
12•pranabsarkar•3h ago•6 comments

The M×N problem of tool calling and open-source models

https://www.thetypicalset.com/blog/grammar-parser-maintenance-contract
101•remilouf•5d ago•34 comments

The acyclic e-graph: Cranelift's mid-end optimizer

https://cfallin.org/blog/2026/04/09/aegraph/
49•tekknolagi•4d ago•13 comments

DaVinci Resolve – Photo

https://www.blackmagicdesign.com/products/davinciresolve/photo
972•thebiblelover7•16h ago•249 comments

Nucleus Nouns

https://ben-mini.com/2026/nucleus-nouns
36•bewal416•4d ago•10 comments

The Fediverse deserves a dumb graphical client

https://adele.pages.casa/md/blog/the-fediverse-deserves-a-dumb-graphical-client.md
52•speckx•3h ago•11 comments

Franklin's bad ads for Apple II clones and the beloved impersonator they depict

https://buttondown.com/suchbadtechads/archive/franklin-ace-1000/
110•rfarley04•3d ago•64 comments

Show HN: Plain – The full-stack Python framework designed for humans and agents

https://github.com/dropseed/plain
7•focom•1h ago•0 comments

Lean proved this program correct; then I found a bug

https://kirancodes.me/posts/log-who-watches-the-watchers.html
359•bumbledraven•18h ago•163 comments

The future of everything is lies, I guess: Work

https://aphyr.com/posts/418-the-future-of-everything-is-lies-i-guess-work
208•aphyr•3h ago•169 comments