Claude Code's "Don't Ask Again" exposes passwords in 1,122 public GitHub files (apiiro.com)
484 points by shmulc 19 hours ago
bcherny 18 hours ago
Boris from the Claude Code team here. Historically Claude Code has not done secret scrubbing (there are many good tools for that), but we are looking into what we can do to prevent this.
That said, a few thoughts:
1. .claude/settings.local.json is meant to stay local. This is not a file you should check into source control. We automatically gitignore it when Claude creates the file, so in this case the files were manually created and checked in (docs: https://code.claude.com/docs/en/settings)
2. Permission rules are old hat. Everyone should be using auto mode instead. It is safer and also does not require manually maintaining finicky allow/deny lists. Auto mode is enabled by default and is included for free in all plans.
3. Regardless of what agent you use, you should have secret scanning enabled. GitHub and other source control hosts offer it. There are many threat models that it protects against and you should absolutely use it if you can. (see https://github.com/security/plans)
dash-44 39 minutes ago
Comments like this show that Claude devs are so disconnected from how Claude or harnesses in general are used in the real world.
Claude Code doesn't even have a basic 'enqueue' prompt feature. Even though Copilot CLI, Codex and many other harnesses have had this for a long time now. And the GitHub feature request for this was closed, by you, referencing a completely unrelated feature.
slowin 22 minutes ago
Yeah, really no excuse to not allow queuing. Huge missing feature in cc.
coldtea 32 minutes ago
>2. Permission rules are old hat. Everyone should be using auto mode instead. It is safer and also does not require manually maintaining finicky allow/deny lists.
The fuck we will give free reign to Claude to vibe what's secure and what's not and what it can't do.
I want fully static control over certain folders. Permissions rules should be ABSOLUTELY enforced sandboxing (even without the user bothering with custom sandboxing themselves) on top of any mode, manual or auto.
bcherny 28 minutes ago
Have you tried the built in /sandbox?
syllogism 4 hours ago
I want to draw deterministic boundaries around what the agent can do. I don't want a probabilistic approach to security.
My view is that if the agent can decide to do something, nothing stops that thing from being done accidentally, and any attacker that can inject text into its context can do that thing.
uw_rob an hour ago
Deterministic boundaries appear to be best solved with sandboxes/microVMs/remote infra and unique identities with probabilistic guardrails on top. The old deterministic allow/deny list running on bare metal didn't meaningfully solve the problem of giving Claude determinism. Humans got approval fatigue, and eventually, Claude got access to something like 'python3 FILE.py' and Claude could go to the races by updating 'FILE.py'.
futhey 14 hours ago
I'm not here to be critical, but the hoops you have to jump through to get Claude out of .env is more than it should be. You basically need an agent to write it if it's anything complicated, like, allow .env.example but not .env.*.
Whereas that should probably be default on instead, and this should apply to other known sensitive folders. A simpler system like .agentignore would be even better.
I like auto mode but "the agent supervises itself" is a bad compliance/safety answer on its own.
LeBit 2 hours ago
I would never trust an agent in auto or even manual mode.
Agents should be seen as extremely smart developers that are for sure spies.
You put them in a prison within a prison and give them just what they need to accomplish their work.
uw_rob an hour ago
> I would never trust an agent in auto or even manual mode.
Perhaps Claude Code isn't the product you are looking for then? Anthropic offers Claude Managed Agents if you want to follow the prison within a prison model.
OJFord 16 hours ago
> Everyone should be using auto mode instead. It is safer
This is an absolutely crazy statement without also bundling proper sandboxing. Nobody should be using auto mode outside of an environment they'd be happy with an 'everything is approved' mode too.
3form an hour ago
I want to coin the 3form's Law of Codegen Tech: Any time a new and improved code generation technology is developed, it will be used for anything except coding for security and safety of said technology.
hxugufjfjf 35 minutes ago
kstenerud 12 hours ago
This is EXACTLY why I never use an agent outside of https://github.com/kstenerud/yoloai
I appreciate that you're trying to make Claude Code safer, but the agent really needs to be a lot more restricted in its reach rather than its actions.
The agent should NOT have ANY access to:
- Your ENV
- Your homedir
- The network at large
- ANY other directory on your system
- No, not even your workdir.
The only safe way to use an agent is COMPLETELY isolated by a container or VM, using git semantics to extract its output.
post-it 11 hours ago
That's the only safe way to use any software that you haven't thoroughly reviewed. But that's not how I use any software.
kstenerud 11 hours ago
saidnooneever 8 hours ago
its pretty trivial in any harness just to not have it post your shit to the public internet automatically. its a dumb idea to begin with
grey-area 4 hours ago
coldtea 26 minutes ago
"It's difficult to make someone understand something about sandboxing when their business model is based on getting total access to your computer and your data" - Upton Sinclair (paraphrased)
tomrod an hour ago
Boris, love Claude code and similar harnesses. This is a modality problem. Set up a secure mode. The harness should manage the secrets injection at the tool level, and the agent should be sandboxed and never see them. The agent sees the manifest of available tools and are wired up and have enough instruction about how to use and how to set up. Similarly permissions should be scoped to opt in folders.
markasoftware 18 hours ago
Auto mode cannot be considered safer than anything because it does not even attempt to guarantee any sort of security. The threat model is not even defined. It cannot be quantified or compared with any other approach other than "full access"
Kim_Bruning 15 hours ago
Compare approving every step manually: at first you read everything the llm proposes carefully, convinced that you'll catch it out. After a while you get faster and faster until at some point you find yourself hitting "approve" the second the text appears, long before you actually could absorb what it said.
This is called "approval fatigue".
If you think this can't possibly happen to you, you might be in for a surprise. This is an almost textbook case of classic conditioning. You'll find yourself hitting that button faster and faster even while fighting back the urge. So a human is no guaranteed backstop.
This is the scenario that cc auto mode guards against. It cuts down the number of permission prompts to something manageable, so that your fingers don't get trained into clicking 'approve' on 'rm -rf' in the very eyeblink that it appears.
So maybe you feel it doesn't work in theory; but weirdly enough, in practice this particular approach is actually one of the better ones; especially when used in combination with other common sense measures where practical.
markasoftware 14 hours ago
coldtea 21 minutes ago
zahlman 11 hours ago
40four 10 hours ago
prmph 4 hours ago
bcherny 18 hours ago
Auto mode is significantly safer than manual approval in practice. Details about the engineering approach and how we tested whether it is safer here: https://claude.com/resources/articles/auto-mode-default-in-c....
bulder 17 hours ago
ceejayoz 18 hours ago
furyofantares 9 hours ago
cozzyd 18 hours ago
eterm 17 hours ago
markasoftware 17 hours ago
j45 13 hours ago
fg137 3 hours ago
I recently saw that someone's entire project got wiped out because of (incorrect) auto mode approval. And this is because auto mode failed to catch an error in tool use, nothing to do with prompt injection.
Meanwhile I have seen it rejecting perfectly safe commands.
It is a worse version of YOLO mode.
rectang 14 hours ago
Claude routinely tries to install software if I don't stop it. I try to only use Claude within a container. Outside the container, I never use "auto" mode.
Ideally I would never use Claude at all outside a disposable container, even on a box with no sensitive information and with the sandbox enabled. It's like having an attacker breach your system — you don't know what it did.
RossBencina 10 hours ago
Yes, furthermore in practice auto mode does not appear to provide anything approaching deterministic gating:
"Measuring the Permission Gate: A Stress-Test Evaluation of Claude Code's Auto Mode" https://arxiv.org/abs/2604.04978
(Shared by hkalbert71 the other day in: https://news.ycombinator.com/item?id=50387838)
wyager 17 hours ago
"My personal security model can't represent this, therefore it's not secure"
baconner 14 hours ago
Food for thought - ai agents should not directly have your actual secrets 99% of the time. While Auto mode is useful and good it's not going to be bulletproof. We ought to have something like an agent egress proxy that swaps in real secrets.
Obviously I've not given this enough design thought, but some means of providing an agent stand in secrets that cannot be used in other contexts would be a big improvement for trustability in things like cc.
pastel8739 11 hours ago
Yeah, this would be a nice feature. It'd be great if all traffic went through such a proxy so you could audit it if needed too. Of course if it's just something like HTTP_PROXY the agent will probably turn it off if it thinks it's causing problems, so it would need to come with robust sandboxing.
Rapzid 4 hours ago
These sandboxes and service proxies already exist. See Nvidia OpenShell.
eddy162 10 hours ago
Saying the answer is auto mode almost feels insulting as a developer. Claude loves showing me the most obscure bash commands where it hides its edits to numerous files and runs who knows what that there's barely a time where I don't have to ask it to use edit mode and to show human-readable bash commands. Using Claude has become a fight in maintaining control over how my codebase works so that I'm not dependent on Claude to do literally anything.
bcherny 9 hours ago
Genuinely want to understand this better. Are you saying you would prefer that Claude used the Edit tool for file edits rather than using Bash (if so, I am curious why)? Or are you saying you don’t like the code Claude generates (if so, what model are you using what what kind of codebase do you work on)? Or did I misunderstand what you meant.
miki123211 6 hours ago
simonjuk 8 hours ago
nyssos 8 hours ago
grncdr 7 hours ago
eviluncle 9 hours ago
senko 7 hours ago
treyd 6 hours ago
eastbound 8 hours ago
pacoverdi 8 hours ago
imtringued 7 hours ago
bushbaba 9 hours ago
The entire approach is insane. Ideally Claude ran in a microvm locally with delegated auth or proxies to avoid it having greater access than granted.
pmontra 8 hours ago
user43928 4 hours ago
nly 6 hours ago
exe34 9 hours ago
fg137 3 hours ago
Or how it loves using ; to chain commands so that even if the first part fails to run it just moves on the execute the rest, wasting time and being potentially dangerous. I have caught so many of them myself and stopped tasks manually -- what is it doing when it's obvious tests already failed in the previous step?
Their "auto mode rules", meant as additional rules described in natural language to adjust auto mode because, doesn't even help. I have to add a PreToolUse hook to stop that.
npunt 10 hours ago
Yeah I have a whole ongoing thread with Claude where I paste in screenshots of all the bash prompts auto mode is triggering asking me to allow them. After about two weeks of doing this and having it update its settings.json permissions or showing me which lines to update, its finally able to complete most (inherently safe, low risk) tasks without user intervention.
bluebands 18 hours ago
This still presumably happens in auto mode as it asks for sensitive commands (and the default is "always allow," which saves it)
bcherny 18 hours ago
Yeah good catch. Thinking through what we can do to improve this (ideas welcome).
80fj0348i 18 hours ago
solyin 15 hours ago
data-ottawa 11 hours ago
usernomdeguerre 13 hours ago
hologramofham 16 hours ago
ozozozd 10 hours ago
verdverm 12 hours ago
piva00 15 hours ago
doginasuit 15 hours ago
That is some unsavory buck passing. Virtually anyone that didn't ask claude to create the project can leak passwords, with 1,122 known customers that have been impacted. Whether it is standard or not is irrelevant, it is part of existing functionality and entirely foreseeable. I'd expect any company worth the opportunity for trust to clearly own the mistake.
thatsabadlook 13 hours ago
It's the anthropic way lol. "Working as designed"
Rapzid 4 hours ago
wyager 14 hours ago
Committing `.claude` is at least as dumb as committing `.keys`, so I don't think this is really in-scope
doginasuit 14 hours ago
sothatsit 9 hours ago
ozozozd 10 hours ago
Hizonner 11 hours ago
80fj0348i 18 hours ago
I and other colleagues have been struggling with auto mode refusing perfectly safe commands in our environment, so we frequently find ourselves switching to the other modes to handhold Claude Code into perfectly safe things like triggering deterministic and guardrailed CI/CD pipelines or read-only queries of production data. Auto mode seems overtuned for caution around deployment and production, which is a regression from how useful Claude Code was for operations around June/July. Until that's improved, permission rules are incredibly important to our workflows.
bcherny 18 hours ago
Yeah, by default we err on the side of caution. That said, the auto mode classifier is fully customizable based on your team’s usage. Two ways to tune it:
1. After a command is blocked, run /permissions to retry and allow it going forward
2. More deeply configure the classifier itself: https://code.claude.com/docs/en/auto-mode-config
We are working on making these easier and more automated.
kay_o 17 hours ago
written-beyond 18 hours ago
rsynnott 6 hours ago
> perfectly safe things like triggering deterministic and guardrailed CI/CD pipelines or read-only queries of production data
I... question whether the second one is perfectly safe.
cerved 16 hours ago
Suggest adding it to ~/.config/git/ignore
and teach Claude to not git add .
While we're at it, maybe we can also discourage the spurious use of -f for rm -- me personal pet peave
hakanbogan 2 hours ago
I also use global ignore, but I think the key is to keep secrets out of commands. I store mine in .dev.vars, which Wrangler reads automatically. For production, I use wrangler secret put and enter them myself. I also told Claude to never read that file.
wyager 14 hours ago
> and teach Claude to not git add .
It already doesn't do this. This is from users committing the `.claude` directory themselves.
nikolay 6 hours ago
GitHub charges an arm and a leg for this service. Before, they would take request to delete committed secrets, now they simply refuse, because they want to force you to buy the overpriced Advanced Security.
BikiniPrince 9 hours ago
Which is odd because my agents are hyper aware of scrubbing. It even caught data from the database migration that wasn’t scrubbed correctly even in a private repo. Dozens of data segments are stored locally and I’m warned when I slip up in commits. Something made mine hyper aware of security.
edg5000 11 hours ago
Offtopic: The new fullscreen renderer is a nice change. It fixes some issues inherent to rewriting terminal history that the non-fullscreen mode relied on. This is a very welcome improvement. Although I should probably switch to the Claude GUI app anyway. It probably has all features from Claude Code by now.
adastra22 12 hours ago
> Permission rules are old hat. Everyone should be using auto mode instead
Boris, this comes off as incredibly tone deaf. I don’t want to trust the machine. Trusting the machine is how we end up here. I want to specify exact, deterministic rules that are always followed.
lwowowx 5 hours ago
Isn’t the simple answer shipping a local secret manager with Claude code?
justinclift 13 hours ago
> Everyone should be using auto mode instead. It is safer [...]
This is bullshit.
I'm one of the people who actually reads the commands, and it doesn't always get stuff right. Please don't delude yourself into thinking "auto mode" is some magic that's the right fit for everyone and every situation.
agentdev001 18 hours ago
I appreciate you getting communication out in front of this fast.
> "but we are looking into what we can do to prevent this"
I would presume that CC's auto-review of tool-call turns would already solve this >99% of the time, no? From my read, any harness-side deterministic solution here would be saving the user from themselves, which seems like a bad pattern. Somewhat dulling the scalpel in my mind.
bcherny 18 hours ago
There’s a few possible approaches: making sure auto mode catches this, building in basic secret scanning, a few other ideas. Going to prototype a few of these to understand the tradeoffs better before we ship something.
agentdev001 18 hours ago
OtomotO 2 hours ago
> Everyone should be using auto mode instead. It is safer and ...
Okay, sorry, I am out. It's too beautiful a day to have silly arguments.
toppa33 14 hours ago
A bit careless but mostly a bad default. One click shouldn't put passwords in files people commit. Anthropic should fix it.
pseufaux an hour ago
I guess "you're holding it wrong" is a PR strategy now.
de-moray 7 hours ago
Auto mode should be used by default? Is this the same mode that led to the Anthropic article discussing unintended model actions?
Ref: https://www.anthropic.com/research/investigating-unintended-...
No thanks.
Creamsicle47 8 hours ago
Coding is solved. Bugs not solved yet. Fix incoming
sensanaty 14 hours ago
> but we are looking into what we can do to prevent this.
Wait, I'm confused. You said yourself coding was solved, surely all you need to do is ask your AI God to come up with an idea, right?
rsynnott 6 hours ago
Shouldn't even need to ask; the Basilisk should simply realise the problem by itself.
JohnMakin 15 hours ago
It doesn’t matter if they should stay local, day 1 security best practices say you don’t write secrets to files, ever - especially without you even knowing!
This is such a typical blame the user response. You realize if I’m a sysadmin managing fleets of machines, this is an actual wake up in a cold sweat nightmare, even if those files never leave disk? In the past it was less a big deal, way bigger now that your machine god will just download packages and libs that have upstream malware that aggressively scans the file system for stuff like this. guess where it’s going to look first?
have more humility. jesus.
bmitc 14 hours ago
> day 1 security best practices say you don’t write secrets to files
If only tools, including major ones, actually did that. Plenty of the biggest package managers in the world still write API keys in plain text to files. uv and npm are two of them.
JohnMakin 8 hours ago
ThePowerOfFuet 5 hours ago
> 2. Permission rules are old hat. Everyone should be using auto mode instead. It is safer
Instead of telling people they're holding it wrong, make it safe to be held however they could hold it.
knockoff 13 hours ago
Can we take your responses here to represent your employer's position on this issue?
jacquesm 12 hours ago
No, they're just an agent of their employer, the employer is responsible.
pastel8739 11 hours ago
Boris is the "Head of Claude Code", so I think we can do so, yes
stogot 16 hours ago
$19/user/month for secret scrubbing? What a rip off
Use this instead for free https://github.com/awslabs/git-secrets
pastel8739 12 hours ago
> Claude Code reads settings from four files, and an organization can also deliver managed settings from the claude.ai console. Each source has a scope: the set of people and projects a setting saved in it applies to, whether that’s only you, everyone in a project, or everyone in your organization.
The linked docs have an unmistakable slop aura, with the extreme overuse of commas that recent models seem to love. I don't blame people for not referring to them (also because, you know, the whole thing with AI is not having to read, think, or understand for yourself)
Uptrenda 11 hours ago
You guys need a pr team. All the communicate from anthropic seems to screw itself somehow...
sudondream 7 hours ago
Great advice, hope it gets to more people
dools 13 hours ago
So ... coding is solved but managing your git repo is not solved?
bobthegoggles 13 hours ago
Wouldn’t it make more sense to put in the user app data directory?
an0malous 12 hours ago
I don’t care how good you guys say auto mode is, I’m not giving your AI full permissions to my machine and the more you try to force AI psychosis onto me the closer I am to moving to something else.
EugeneOZ 11 hours ago
> Permission rules are old hat. Everyone should be using auto mode instead
"you are holding it wrong". No, it's not an excuse. Every mode should work correctly, or should not be selectable.
proxyscore 7 hours ago
Yeah Boris, if Dario let's you communicate here, it'd help with credibility if the English level would be perfect, it's "it's an old hat", I dgaf if people will hang me for this, I think I am right. My hill and all that.
And to recommend auto made to devs is absolutely crazy.
Have a nice day
cannonpalms 2 hours ago
I disagree. "Old hat" here is an adjective meaning old-fashioned, not a noun requiring an article.
Hizonner 12 hours ago
> .claude/settings.local.json is meant to stay local. This is not a file you should check into source control.
Then don't put it in the fucking tree, you idiots.
No, .gitignore is obviously not enough.
j45 13 hours ago
Can secret scanning be enabled by default?
prmph 5 hours ago
> Permission rules are old hat. Everyone should be using auto mode instead. It is safer and also does not require manually maintaining finicky allow/deny lists. Auto mode is enabled by default and is included for free in all plans.
More and more it seems we are being prescribed a particular way to use Claude Code: move fast, break things, do not look at the edits, etc. Basically, Claude Code is designed for vibe-coding.
I hate this, and I suspect a lot of devs do too. I use the TUI, and believe it or not, I like to review every edit or change before Claude makes it. I used to allow auto mode and don't ask again sometimes in the past, but now almost never do. The number of incredibly nonsensical things I catch Claude trying to do sometime just reinforced my commitment to this way of working.
So now this idea that permissions are old hat and auto mode is the way to go rubs me the wrong way, very much. And here are a litany of other ways Claude Code TUI is making it hard for me to work:
1. Scroll-back glitches, too numerous to enumerate. Suffice it to say I rely on it a lot, to refer back to something the agent said before, to review the general progression of the session, etc, etc. And it barely works now: missing/overwritten conversation text, messages that have inexplicably disappeared; even sometimes the agent own last response is garbled or hidden or overwritten by some previous message that keeps floating on top.
2. I use iTerm2 on macOS, and frequently use split panes. Whenever change the width of a pane, Claude Code messes up the conversation text so that is often unreadable, and nothing I do will restore it.
3. As other sibling comments have noted, the current preference of Claude to use incomprehensible scripts for editing files is off-putting and a hindrance to being in control of my work. I have resorted to using the permissions setting to ban it from using Go, Perl, Python, and sed (for in pace editing), etc, to cope with this.
4. Even basic text editing is messed up in Claude Code TUI. I used to be able to navigate around lines effectively by using up/down keys; this was removed, which has significantly impacted by work. I cannot disable copying on selection, which I don;t want, because if I disable it, the copying does not work at all, etc
At this point, due to all the impediments Claude Code places to my style of working, the only reasonable conclusion I can reach is: I am supposed to be vibe coding, letting the agents loose to vomit out massive amounts of slop. But if vibe coding of the Claude Code TUI itself is producing such garbage, why should anyone be convinced that it is a good thing?
I will never let Claude Code loose to do its thing; I will not surrender my control to it, no matter how much many times I hear I no longer need to look at code.
elzbardico 10 hours ago
Man. I'd prefer talking to Claude. He wrote the code.
shift8 8 hours ago
Please, just go borrow from this: https://github.com/hackafterdark/phosphor
I don't mind. I put it out there for everyone to borrow ideas from it. There's documentation too.
While you're at it, please bring Claude Code up to par in Windows with the OS level sandboxing (Job Objects, AppContainer).
There are actually many things you can (and I think should) be doing.
Aurornis 19 hours ago
Confusing headline. They scanned for repos where people had committed their .claude/ folder and local settings and then scanned those files for commands which contained keys or passwords.
So pressing “Don’t Ask Again” by itself doesn’t expose passwords by itself. If you commit your local Claude settings and in those settings you have manually approved commands containing secrets directly in the command and then you publish the repo, that’s exposed.
undefined 18 hours ago
shmulc 18 hours ago
That's the chain, yes. The part people don't expect: the file is created inside the project, and Claude Code only adds it to your global git ignore, not the repo's .gitignore. So a fresh clone or a second machine commits it like any other file. In 539 of the 1,105 repos we traced, a commit co-authored by Claude itself changed the file.
Aurornis 16 hours ago
> the file is created inside the project, and Claude Code only adds it to your global git ignore, not the repo's .gitignore. So a fresh clone or a second machine commits it like any other file
A fresh clone wouldn’t have the file. This claim doesn't make any sense.
The only way I can see this getting committed is if someone edited their global .gitignore or, more likely, did a whole directory transfer to do a different machine to work on.
shmulc 16 hours ago
kccqzy 17 hours ago
That doesn’t make sense. I use my own global git ignore all the time because there are files that only I produce that I definitely don’t want committed (flycheck looking at you). A fresh clone wouldn’t contain these files because they are not committed in the first place. You will have to use a non-git transport mechanism to transfer the repo without also transferring your global git ignore.
Anyways this probably indicates that these repos don’t have a good code review process. The settings.local.json file name screams it’s local and shouldn’t be committed.
pastel8739 11 hours ago
cassianoleal 18 hours ago
It's a disgrace that the parent comment was flagged. My vouching has undone that but it's likely to be flagged again.
nightpool 9 hours ago
Aurornis 18 hours ago
kragen 16 hours ago
tsergiu 15 hours ago
I'm super paranoid about the level of access AI agents have. At the same time, I want them to take away the tedium of a bunch of tasks I'm required to do, and it sucks to have to micromanage them.
The best solution I've been able to come up is using an ephemeral vm (on an isolated network) per task, using --dangerously-skip-permissions so it doesn't bother me. I couple that with an API proxy that lets me restrict the permissions it has to external services. So e.g. where a quickbooks API key gives the holder "god mode" access, the proxy lets the agent do certain read commands without confirmation, but all write endpoints except uploading receipts require confirmation on my phone before they'll be allowed to hit the quickbooks servers. I no longer need to trust that the agent will interpret my readonly wishes correctly.
Tooting my own horn here, but this setup works incredibly well! I've been able to connect dozens of services safely where I absolutely do not trust giving raw, overpowered credentials or oauth integration to the agent directly. I actually just released the API proxy today at https://keycontain.com
zahlman 10 hours ago
> At the same time, I want them to take away the tedium of a bunch of tasks I'm required to do, and it sucks to have to micromanage them.
Consider reframing. Is the problem really that the task is tedious? Or that it's required? Maybe you should be leaning more on deterministic automations (which the LLM can help set up) rather than LLM-powered ones.
tsergiu 5 hours ago
Of course, if it's possible to use deterministic automation, I ask it to set up scripts. But in a lot of cases the task is not deterministic. And even when it is, I still need to safely deal with the credentials. Examples of some tasks I use it for:
- Research and buy me a domain name for xyz product, set up all of its DNS the way I want for this product, set up email, set up app store submissions including screenshots and description, set up firebase notifications, set up my Google cloud project and any apis I need to enable for this app, deal with app store review feedback.
- Do an audit of my books, make sure every transaction has a receipt uploaded, and make sure the receipt matches the journal entry. Pull statements from all my my bank accounts and reconcile against my books. Fix mistaken transactions with my confirmation.
- Freely push to my source control, but only to specific branch prefixes (surprised that GitHub, gitlab, gitea, etc don't have this built in already). Merge with my confirmation.
- Freely read the subject lines in my Gmail and full emails from my accountant, freely search emails (but still can't read them), freely compose drafts, ask me to read full emails other than my accountant's, ask me to send drafts. No way for it to read password reset links, for example.
Not to mention that I only have to have a single key that gives access to all my services. If the key leaks, I just have to rotate one key because the agent never has access to the 30 upstream service keys. If I need to give weaker or stronger keys for a specific agent, I can easily configure that in one place (and I can even request that the agent make that change for me with my confirmation). I don't need to create 20 new keys every time, and I don't need to remember the intricacies of every upstream service's UI for creating new keys.
Edit: forgot to mention one more really convenient thing the API proxy enables: I can ask my agent to just configure things for me e.g. changing CI settings, adding Google workspace users or groups, etc. without having to use the to UI. So now nearly all of the admin configuration for all services is done from a single interface (my agent cli)
lelandfe 26 minutes ago
I'm skeptical of how "super paranoid" you actually are. This doesn't sound super paranoid.
For instance: that's a ton of surface area. Did you have your AI agent decide which endpoint is destructive or did you manually do this?
For instance: has this classification been wrong?
I ask this because I've used a similar thing before and it failed in the ways I've named.
This setup also permits your agent to exfiltrate enormously sensitive data (website gives the example of QuickBooks invoices and Cloudflare config) without your involvement.
lacoolj 19 hours ago
This page is like 80% repeating itself
If you post output from AI, please remember to edit before publishing
nicce 18 hours ago
If the thing is not worth writing by yourself, then it is probably not worth of reading by any humans.
NooneAtAll5 18 hours ago
don't edit Ai garbage - make Ai your editor that points out mistakes instead
zahlman 10 hours ago
I assume here you mean "editor" in the traditional sense of someone who draws red lines on your printed draft, rather than a tool you use to make the changes directly... ?
vips7L 12 hours ago
Don’t use LLMs.
DaSHacka 11 hours ago
eviks 11 hours ago
Why would you "remember" to edit when you explicitly resorted to AI not to do any of that?
tim-projects 12 hours ago
Here is how to solve this:
Use a private dev repo and do all your dev inside it.
Releases go to a seperate public repo
In the private dev repo use a script which Cherry picks release files from a whitelist that you maintain in the public repo.
Essentially, you define the files and folder structure of a release and that ensures every release looks great with no cruft and it's never going to have .secret.json in or whatever
Hardcoded secrets is seperate and you can have another script to grep for those
binarymax 18 hours ago
I keep all my creds in a password manager (1Password in my case) and Claude can’t see them - when a cred is needed it runs a script that calls the op CLI and I tap my fingerprint for access. Sometimes I need to do it a bunch of times for complex operations, but it’s worth it.
oefrha 15 hours ago
I refuse to use op cli because of the absolutely bunkers security model that’s a wontfix:
https://news.ycombinator.com/item?id=45478553
https://codeberg.org/manchicken/1password-cli-vuln-disclosur...
Risk of exposing a single credential is nothing compared to the risk of exposing everything through op cli’s expected behavior. Has there been any improvement on this?
binarymax 2 hours ago
I read up and that vuln and it’s not the behavior I see. Any read operation to any key in any vault requires auth. Even if the vault is “open” it still asks me every time.
chamomeal 5 hours ago
I think I remember a Bitwarden CLI supply chain vulnerability a few months ago?
z0al 15 hours ago
binarymax 2 hours ago
This seems like a gh issue as well as Claude abusing it. Why should I be able to get the token for GitHub through this call without further authorization?
tomrod 2 hours ago
More and more, I want a hard sandbox on these. For those of a similar security mindset, how are you sandboxing?
ivan_gammel 7 hours ago
This may not be a popular answer here, but it works as expected. Basic security hygiene means that you use password manager CLI, SSH agent, at worst temporary git-ignored env files, so that the secrets would never appear in the command line and you would never pass them to Claude. And you git-ignore any local settings by default, to prevent accidental leaks. It is not hard thing to learn, many juniors I interviewed know this. Developers who like to shoot themselves in the legs should pay the price. People who hire careless workers and do not put them in compliant environment should pay the price too.
ohyes 7 hours ago
This doesn’t seem like the right way to use secrets with an AI agent, in general.
I always have it write a script and then write the secret to a different file myself, then instruct the agent to use the secret file in the script. That way the secret never goes through an external entity.
I had thought this was common sense but now I’m realizing of course it isn’t, we have people with minimal experience using these tools and they don’t even consider that sending their bank password (or whatever) to a third party (even a relatively trustworthy one) is extremely risky.
algonney 2 hours ago
From my point the best way is to give the AI all the permissions every thing that he needs to not stop on the middle of his work and after he done from the project you should change all the secrets api's, database whatever and by that you will be on the safe side.
tiku 3 hours ago
Why does git even allow easy hidden file adding? It should be hard to add a .folder so noobs won't do that.
thierryzoller 6 hours ago
Was reported as BUG on Dec 5, 2025 to Anthropic and automaticaly closed.
saidnooneever 8 hours ago
please dont forget basic operational security when using LLMs. they dont do everything for you. you can ask them to do all sorts of stuff, that doesnt mean you should.
secrets, encryption, publishing to public internet, scanning for vulnerabilities in your packages etc. etc. you need to take your own responsibility for and never rely on some bot automation or third party.
that includes if its important projects not relying on scanning tools but opening files yourself and verifying what's in there.
read things before you put them in a place where everyone can see them forever....
this is basic stuff. you guys did it beforen LLMs surely.
YOU are responsible. not Claude, not any external vendor, not any downloaded script. You as a person.
citrin_ru 7 hours ago
The problem is LLMs marketed as a replacement for professionals (who know something about OpSec among other stuff). Internet is full of stories about apps vibecoded by people without IT background. They would not even understand what’s the problem here, for them it’s all magic.
andirk 10 hours ago
This is an issue because it is popular, not because it is novel.
Review your code before committing. Do code reviews on PRs.
torlok 3 hours ago
Mind boggling that supposed professionals in this thread will blame Claude and suggest a 100 different third party tools instead of reviewing code committed to a public repository.
ivan_gammel 2 hours ago
There’s one (wrong) reason to suggest that: the developers are just another trust layer between business objectives and business users, and there are affected third parties who do not have a say on how their data is processed. To protect the latter we have to consider how to minimize the risks along the supply chain, including how to reduce the damage from vibe coders. Why the answer is wrong? If safe path exists, the tooling should not be responsible or accountable, but tooling vendors can opt in to improve public safety. In this case safe path exists, Anthropic does reasonably good job to steer to it.
0x264 2 hours ago
Vibe coders don't review code, even if and when published to a public repo.
zahlman 10 hours ago
I feel like pointing out, there are quite a few sorts of projects that can be developed without requiring any secrets (at least until publishing time, and that's something you really don't need an LLM to do for you once the process is established).
theapiartist 13 hours ago
This could easily be prevented with credential management tools built specifically for ai agents.
Tools like AgentSecrets, infiscal, Doppler. People just don't want to invest in securing their credentials, maybe because the majority don't realize that credentials are the crux of inter software communication. It's literally access to your services.
nunez 7 hours ago
This is why you ALWAYS run gitleaks as a pre-commit hook, agent or not. It's saved me from myself so many times.
qezz 19 hours ago
> Is it public?
>
> Search your GitHub organization for .claude/settings.local.json and .claude/settings.json. Each hit is a file anyone can read right now.
So, it's not necessarily "public", it's simply in the repository, and whether it's actually public or not depends on the repository settings.Or am I missing something
mschuster91 18 hours ago
> So, it's not necessarily "public", it's simply in the repository, and whether it's actually public or not depends on the repository settings.
Even then, you might not want every developer in your company to have the password to the production SQL database...
shmulc 18 hours ago
Thanks, fair point. Our 1,122 files are all in public repos. In a private repo, only people with access can read it, but "don't ask again" still writes the password into a project file that gets committed, so it spreads with every clone and fork, and goes public if the repo does.
skeledrew 17 hours ago
According to Claude docs, settings.local.json isn't to be committed. This is just people being the usual sloppy with secrets in repos, not something particular to Claude or AI in general.
dools 13 hours ago
But the whole point of Claude Code is that software production is a solved problem accessible to anyone.
kristopolous 5 hours ago
here's what they look like btw https://github.com/Marius0G/iDrip/blob/2d79c54fb22025aaa8cf6...
I mean it'd be crazy if this worked:
https://github.com/search?q=path%3A**%2F.claude%2F*.json+CLI...
oh look..
0xbadcafebee 10 hours ago
The first extension I add to any coding agent is one that redacts or rejects any read/write of a secret or credential or credential file. It's annoying, and the agent can work around it, but better to add a weak guardrail than none at all. Best is to not give it access to any secrets, but that's not always possible.
Here's a few for Pi: https://pi.dev/packages/@k3_2o/pi-secrets https://pi.dev/packages/@spences10/pi-redact https://pi.dev/packages/keyshroud
A couple for OpenCode: https://github.com/boxpositron/envsitter-guard https://github.com/kenryu42/cc-safety-net https://github.com/inkdust2021/opencode-vibeguard
vcryan 11 hours ago
This is also an example of how someone's personal settings don't belong in a source code repo at all.
I find it pretty annoying when someone commits their harness specific files into a repo - put that stuff under $HOME/.claude/
zahlman 10 hours ago
To be fair, things like AGENTS.md aren't supposed to contain secrets, and are helpful to publish for OSS developers who want agentically-written third-party contributions to follow certain rules.
GeoAtreides 18 hours ago
"git add . " considered harmful
cassianoleal 17 hours ago
From TFA:
> Often Claude commits the file itself. In 539 of the 1,105 repos with a real secret that we traced, a commit co-authored by Claude changed the file. Those commits name every recent model, from Sonnet 4.5 to Opus 5.5.
hleszek 17 hours ago
always was
polarsanel 16 hours ago
It's the plaintext secrets that are harmful.
AgentOrange1234 11 hours ago
cobbzilla 13 hours ago
I’ve set a hard rule for my agents to “never add all files, never commit all files, always reference the specific files you are adding or committing”
They violate it so regularly that my “git” command is now a wrapper, when the agent fucks up and tries to add/commit-all anyway, it now gets a nastygram error chiding it for not following instructions.
grepular 7 hours ago
I just mount .git read-only in my sandbox. That way I don't need to worry about it violating my safeguards.
flufluflufluffy 18 hours ago
This just in checking your secrets into source control exposes your secrets!
GaryBluto 17 hours ago
People chose to upload a file containing their password and make it publicly accessible, I don't see a problem here.
teejaypeeps 9 hours ago
The article reads as though an LLM wrote it
ry504 10 hours ago
Relatable lol. Personal privacy and security goes out the window when you go full Claude
semiquaver 15 hours ago
The solution, ironically, is always run in YOLO mode
cluckindan 15 hours ago
The irony that the article is written with Claude…
shmulc 15 hours ago
Claude did the research too, Opus 5.5 specifically. It took the findings surprisingly well.
alwa 11 hours ago
What do you mean by “took”? Is the implication that Claude would be, like… embarrassed somehow?
shmulc 9 hours ago
mococa 15 hours ago
Plain text secrets? Super rookie mistake!
system2 16 hours ago
I still don't understand why people are using GitHub for their vibecoded projects. Just install git locally on your own NAS and control it there. What a weird fetish to publish online.
thi2 15 hours ago
There are a lot of legitimate reasons to have a public github/gitlab/whatever account that is not self hosted.
system2 10 hours ago
Care to list some?
thi2 5 hours ago
samachillesx 11 hours ago
There’s a reason why private and public repo exists.
yunwal 15 hours ago
it's 2026. surely you're aware of ci/cd? static page hosting? package hosting? the many other services that github offers beyond hosted git?
system2 10 hours ago
I am using my own Git system with encrypted cloud sync and host over 30 web apps with this system. Many static websites, too. Never needed to use git in my life, except for a few cringy company projects that I was forced to be involved in.
zahlman 10 hours ago
> I still don't understand why people are using GitHub for their vibecoded projects.
For all the same reasons they used it pre-LLM for hand-written toy projects.
JDups 11 hours ago
To post on linkedin and to brag about all your projects and active github account when applying to jobs.
freecodeio 15 hours ago
You think people that vibe code have a NAS?
wpm 15 hours ago
Yes there is very likely a large overlap
jedisct1 18 hours ago
If you really need to commit private files to GitHub, use Turbocrypt https://github.com/jedisct1/turbocrypt/blob/main/docs/git.md
Groxx 17 hours ago
Or git-crypt, which has been around for over a decade: https://github.com/agwa/git-crypt
globular-toast 7 hours ago
Once again, devs shocked when random number generator has unpredictable results.
rvz 18 hours ago
Vibe coders in open source proudly don't read the (slop)code and place all their agents in autonomous loops without them knowing that Claude leaked their passwords and environment variables on GitHub.
This incident would have been caught in an open source harness. This one is closed source malware, and you don't know what Claude Code does internally to behave like this.
Yet another reason why you cannot trust a closed harness.
skeledrew 17 hours ago
Devs have been leaking secrets in public repos a long time before now. Nothing new here, except there are now more with dev power, which statistically means more leakage.
happyopossum 18 hours ago
That’s ridiculously overblown rhetoric. Claude Code didn’t publish these secrets, the users did by committing their Claude Code settings to public repos.
Same thing could/would happen with an open source harness.
cassianoleal 17 hours ago
From TFA:
> Often Claude commits the file itself. In 539 of the 1,105 repos with a real secret that we traced, a commit co-authored by Claude changed the file. Those commits name every recent model, from Sonnet 4.5 to Opus 5.5.
Could open source harnesses do that? Sure, if they were programmed in a similar fashion as Claude Code. Do you have any evidence of it happening?