I built a tool to stop AI coding agents from leaking my secrets
Veil is a tool designed to protect sensitive API keys from being accessed by AI coding agents. It moves Bearer API keys from .env files into the operating system's keychain while leaving placeholders behind for the agents to use. This ensures that the agents do not see the actual credentials, filling a gap that previous tools like .gitignore did not address.
- ▪Veil scans .env files and transfers Bearer secrets to the OS keychain, replacing them with placeholders.
- ▪The tool operates through a local HTTPS proxy, allowing agents to function without accessing real credentials.
- ▪Veil is not a replacement for secrets managers but complements them by hiding secrets from AI agents.
2 outlets in our directory ran this story, first to last over 3 hours. All of the coverage we found sits in one bucket: centre. That one-sidedness is itself worth noticing.
Hacker News (AI / LLM) files mainly under ai. We currently carry 3,316 of its stories.
Story provenance
Source · retrieval · rights · ranking — open for full record
inspect →
Story provenance
Attribution is not the same as permission. This drawer separates discovery metadata, excerpts, WeSearch-generated summaries, reuse status, and whether the publisher receives the visit. Nothing here claims a legal grant the publisher has not made.
Record
| Original publisher | GitHub |
| Canonical URL | https://github.com/getveil/veil |
| Publication time | Thu, 21 May 2026 14:55:14 +0000 |
| Retrieval time | 2026-05-21T15:06:11.139Z |
| Last seen | 2026-05-21T15:06:11.139Z |
| Headline source | Publisher (no WeSearch rewrite) |
| Excerpt source | publisher body |
| Excerpt method | First ~120 words (~800 chars) of extracted publisher body, fair-use limited. |
| Summary | WeSearch · cerebras-chat (WeSearch summarizer) |
| Summary source text | contentText |
| Citation coverage | Summary is a WeSearch-generated derivative; primary citation is the original publisher URL. |
| Cluster | pF1_HtPmcYw8 · 2 stories |
| Cluster logic | Grouped by semantic title/content similarity across sources within a rolling window. Same-publisher template collisions are excluded from coverage comparison. |
| Ranking reason | Story pages are not engagement-ranked. Hub feeds use recency, with optional source-diversified chronological ordering (cap consecutive stories per source). No personalized ranking. |
| Publisher visit | Yes — open original |
| Substitutes article? | No — link-out required for full text |
Rights status (four layers)
WeSearch handling by dimension
| Indexing | May the item be indexed (stored, ranked, made findable)? | Allowed |
| Snippet | May a short excerpt of the publisher's text be shown? | Allowed |
| AI summary | May WeSearch generate its own short summary of the article? | Limited |
| Retrieval / RAG | May the content be exposed for third-party retrieval-augmented generation? | Not asserted |
| Model training | May the content be used to train AI models? | Not asserted |
| Commercial reuse | May the content be reused commercially? | Not permitted |
Basis: Derived from the published RSS/Atom feed. Contact: [email protected]. Reviewed: 2026-07-24.
Opening excerpt (first ~120 words) tap to expand
.gitignore protected your secrets from git. Veil protects them from AI. Veil moves the Bearer API keys in your .env into your OS keychain, leaves format-preserving placeholders behind, and injects the real values at a local HTTPS proxy so the agent never sees them. One promise, one wire, no daemon. What's in scope. v1 mediates HTTP Authorization: Bearer credentials for the providers listed below, sourced from .env files. HTTP Basic, keyed-crypto schemes (AWS SigV4, GitHub App JWTs, HMAC webhooks), shell environment variables, MCP config files, and non-HTTP protocols are not in scope — Veil leaves them alone. See docs/MVP.md for the full contract. Demo Want to run it yourself? make build && ./scripts/record-demo.sh records this end-to-end against a synthetic .env.
…
Excerpt limited to ~120 words for fair-use compliance. The full article is at GitHub.