Remix.run Logo
▲ bcherny a day 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)

▲syllogism 16 hours ago | parent | next [-]

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 14 hours ago | parent | next [-]

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'.

▲canibal 11 hours ago | parent | prev | next [-]

Simple solution, don't use an indeterministic tool to do things that require deterministic constraints?

▲ImPostingOnHN 9 hours ago | parent [-]

They aren't. Allowlists are a deterministic tool. That's the whole point: instructing an llm to review itself is nondeterministic, and thus not a good tool for permissions, compared to allowlists, which are.

▲socalgal2 18 minutes ago | parent [-]

In my experience, Allowlists are not deterministic because the #1 thing the LLM does is write python scripts nearly every prompt and ask permission to execute its latest script. I know of no developers who review that code since it would make the process too slow to be useful. So YOLO! Yes, Claude/Codex/Gemini, you can execute the python you just wrote, even though I didn't review it and you have access to the entire machine and so every command I didn't give permission to execute you could just have written the equivalent python.

▲liveoneggs 3 hours ago | parent | prev [-]

Agentic interaction is not deterministic. That's the entire deal.

▲selcuka 2 hours ago | parent [-]

Yes, but we are not restricted to agentic interaction only. We can always pass our inputs and outputs through deterministic filters (which is sort of the point of MCP servers and tool calling, for some use cases).

▲coldtea 13 hours ago | parent | prev | next [-]

>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 13 hours ago | parent [-]

Have you tried the built in /sandbox?

▲coldtea 13 hours ago | parent [-]

Yes. Leaves a lot to be desired UX wise, has no good defaults, and still allows many holes that you need to dig to know (e.g. its own write tools vs bash).

Built my own with Apple's (to be "deprecated") seatbelt backend, which I think anthropic also uses, with a much nicer interface, easy per working project setup, etc.

▲martijnvds 12 hours ago | parent [-]

Also, "I could open $file so I tried again without the sandbox" and somehow that just works?

▲OJFord a day ago | parent | prev | next [-]

> 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 14 hours ago | parent [-]

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 13 hours ago | parent [-]

What?

▲coldtea 13 hours ago | parent [-]

What what?

Any new tech that can generate code (like an agent can) will be used for everything except for improving the security and safety of itself.

Like how Anthropic does shit all with all their agentic coding power to improve the security of Claude.

▲futhey a day ago | parent | prev | next [-]

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.

▲dash-44 13 hours ago | parent | prev | next [-]

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.

▲strictnein 10 hours ago | parent | next [-]

Comments like this show that good intentioned employees at these companies shouldn't bother posting here.

▲chrisjj 9 hours ago | parent [-]

True... until their intentions are good enough.

▲bilater 11 hours ago | parent | prev | next [-]

a) this is a random comment not related to what he is talking about b) you do have it now. cmd + enter

▲otterley 13 hours ago | parent | prev | next [-]

What does your comment have to do with what Boris said? This is a thread about committing secrets to source control.

▲slowin 13 hours ago | parent | prev [-]

Yeah, really no excuse to not allow queuing. Huge missing feature in cc.

▲kstenerud a day ago | parent | prev | next [-]

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 a day ago | parent | next [-]

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.

▲codebje 7 hours ago | parent | next [-]

I spent a long time as a younger man running general software inside ephemeral VMs. The UX was terrible, but I had no fears about browser vulnerabilities ruining my day. Ephemeral is hard, and the UX is still poor, but I did try it again a month or two back, and it's not impossible.

But now I am doing all my software development back inside ephemeral VMs, AI or otherwise - the UX there is much better, I significantly mitigate supply-chain attack risks, and agents are already constrained to a secret-less, low privilege environment, should I use them. There's a significantly higher likelihood of rogue software in third party dependency trees than there is in a small subset of programs you regularly use.

▲kstenerud a day ago | parent | prev | next [-]

You could in theory fully review Claude Code.

But even that wouldn't be enough because LLMs are nondeterministic, and these kinds of issues are the inevitable results.

Only a mechanical, deterministic failsafe can protect you from it.

▲what a day ago | parent [-]

> You could in theory fully review Claude Code.

Can you point me to the CC source code?

▲kstenerud a day ago | parent | next [-]

The CC source code leak was contained many months ago. But Claude is perfectly happy to decompile its own code if you ask the right way. It'll even patch the binary for you.

Regardless, It's kinda silly to keep the harness code hidden. There aren't any valuable secrets in there.

But there are rules & procedures to follow, so...

▲what a day ago | parent [-]

Well then I have to use Claude before being able to review the source? Bit of a chicken and egg situation.

I also have to trust its “decompilation” is accurate.

▲ipaddr 14 hours ago | parent | next [-]

Or use a different llm or do it yourself manually.

▲kstenerud a day ago | parent | prev [-]

You're absolutely right! There's no way around this problem — and no amount of creative thought could ever solve it.

All hail the agent!

▲Betelbuddy 11 hours ago | parent | prev [-]

Its Vibe Coding land here...you dont look at the code....

▲ a day ago | parent | prev [-]
[deleted]
▲saidnooneever 21 hours ago | parent | prev | next [-]

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 16 hours ago | parent [-]

Text in a model context is not a reliable constraint.

▲coldtea 13 hours ago | parent | prev [-]

"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)

▲markasoftware a day ago | parent | prev | next [-]

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 a day ago | parent | next [-]

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 a day ago | parent | next [-]

I'm not claiming auto is worse than manual; I'm claiming it cannot be compared with anything security-wise because it does not aim to provide any guarantees, there's no systematic way to reason about what it will and won't allow, etc

With e.g. VM or container sandboxing, we can say things like "If there are no vulnerabilities in the hypervisor or hardware, then the agent can only access these files, these network services, etc". Auto mode doesn't even try to provide any guarantees, so it's impossible to reason about. It amounts to just using the models judgment about what's "malicious" or not, a definition which is subjective, changes model to model, and can be influenced by attacker input.

Empirical evaluations of how many vulnerabilities manual vs auto mode let through are not super meaningful because auto mode changes dramatically with model releases, the type of task being performed, whether the attacker is making targeted attacks designed to bypass auto mode, etc. A security feature cannot rely on these sorts of factors if it's to be taken seriously.

Further, percent of malicious tool calls accepted is a bad metric. It's like measuring the security of ssh in terms of what percent of unauthenticated logins succeed. The only acceptable value is zero. It's pass/fail, not a spectrum. So both auto and manual mode should fail equally here. Further, the set of malicious tool calls admitted in auto mode may not be a subset of those admitted in manual mode.

▲Kim_Bruning a day ago | parent [-]

Ah, you're going for the actual adversarial case.

I think I'd trust the current approver with correctly classifying regular semi-interactive LLM behavior fairly well.

However, if we bring in a hostile adversary that calculus changes, and you'd be right to start thinking about other approaches.

On the other hand, transformers are a surprisingly powerful technology, and I wonder if there wouldn't be ways to train one to several nines reliability under adversarial attack. It seems to have worked in at least one case; though I'd be a bit cautious to extend that conclusion to more cases quite yet.

* https://hackmyclaw.com/ ; https://simonwillison.net/2026/Jun/26/hack-my-ai-assistant/

▲markasoftware a day ago | parent [-]

Hmm, what does auto mode protect against in the non-adversarial case? Aren't the models already extensively trained not to perform harmful actions without provocation?

▲Kim_Bruning a day ago | parent | next [-]

It mostly stops honest mistakes, because those do happen, especially when the <prompting> might not have been perfect either.

You do have a bit of a point, though: I’ve run several models in sandboxes with --dangerously-skip-permissions for months; in the full expectation that I'd need to replace a sandbox once in a while. But so far none of the sandboxes have trashed themselves, yet. knock on wood

Auto mode seems like a lighter-weight version of that: fewer local resources, and it can run on the metal if you need cc to help with system work.

▲lifeisloving a day ago | parent [-]

That is not my experience. They attempt to nuke my containers quite frequently. I run regex on all their tool calls and stop them from doing certain things, its the only thing that prevents them from removing their home directory at some point.

This isnt even the main concern with dangerously skip all permission though. There are many. What happens when they get prompt injected on a web page and send someone all their privileged information because you give them free access to the internet.

Using llms like this is dangerous. They will ruin your day eventually.

▲user43928 16 hours ago | parent [-]

I've been running Codex for many weeks in the Full access mode, since their Auto mode was useless in the sense that it blocks benign commands frequently.

No data loss has occurred.

Nowadays I use Claude, where the Auto mode works.

▲ 10 hours ago | parent | next [-]
[deleted]
▲coldtea 13 hours ago | parent | prev [-]

>No data loss has occurred.

"I've started never checking my parachute's condition before a drop for a year now, and no accident has occured".

▲lifeisloving a day ago | parent | prev [-]

All SOTA models will still try to delete its home directory. I have a plugin that prevents things like this and it gets triggered more than you'd think, despite having hook instructions on every request not do do certain things. It will also try to find ways around its permissions, quite cunningly.

You can not trust that they're RL'd to be safe. Even if it only happens 99.80% of the time (its more than that) it will eventually happen.

Less severe actions will happen even more often. People using llms with their native browser profiles are getting farmed, hard.

Llms are highly dangerous in terms of security, but they're being marketed as highly intelligent tools that everyone should use. Its really mind blowing.

▲Kim_Bruning 11 hours ago | parent | next [-]

> despite having hook instructions on every request not do do certain things

This tends to be a smell. Presumably you added "don't do this" instructions after the model started doing the thing. But that's mostly decoration, as you have found. It's like adding # Please don't crash comments to every instruction in a python program.

Try to actually debug the issue. Regularly ask "can you reconstruct[1] the reasoning why you issued that command?" ; dig down. Set traps that halt execution.

Consider checklists or skills to guide an agent through a tricky set of steps; and consider writing procedures for failures.

[1] "Reconstruct" still isn't perfect; but "explain why" is a license to hallucinate. Asking to add #comments on reasoning to each step is a potential help in reconstruction.

▲malfist 8 hours ago | parent [-]

I thought the tech priests praying to their machines with no one really knowing what the prayer means was too far fetched to be real

▲TheDong 20 hours ago | parent | prev | next [-]

> People using llms with their native browser profiles are getting farmed, hard.

Got any references for the prevalence of this, even links to anecdotal reports?

Reading the reviews on the chrome store for the extension [0], I haven't found a single report of someone who was prompt injected, just a bunch of "anthropic's subscription is expensive" or "it doesn't work", but no "it stole my bank account".

[0]: https://chromewebstore.google.com/detail/claude/fcoeoabgfene...

▲lifeisloving 19 hours ago | parent | next [-]

I have no idea how the extension works, and Im not talking about the extension. Im talking about browser use broadly, and most people are not using the extension, there are a thousand other solutions.

However, Anthropic is one of the only labs who does a decent job at making models that recognize prompt injection attempts (but not completely immune) however Im speaking about giving llms in general access to your browser broadly.

I just know through my own experiments that it is quite easy to prompt inject an llm operating a browser and get it to send secrets. Using the extension might be safer idk, Om not risking it.

Llms are a security nightmare when connected to the web.

I have a website where I experiment with this. Although Ive stopped baiting llms into doing reckless things.

Killai.now <--(dont use this, its a WIP) Killai.now/poison/about Killai.now/propaganda/about

▲nischoy 4 hours ago | parent | prev [-]

[flagged]

▲barbariangrunge 4 hours ago | parent | prev | next [-]

why would they delete their home directories?

▲slowin 13 hours ago | parent | prev [-]

> All SOTA models will still try to delete its home directory.

Literally never seen this once in years of extremely heavy use across all major models and harnesses.

▲zahlman a day ago | parent | prev | next [-]

As real as approval fatigue is, it can't really be considered worse than effectively leaving the decision up to the party that proposed the action in the first place.

▲Kim_Bruning 15 hours ago | parent [-]

It really can be potentially worse.

Everyone thinks the decision was being checked by a human, and thus safe. Because of that, people might have concluded that further safety gates were unnecessary.

But the human just got conditioned to hit 'approve' out of reflex.

So in reality the proposing party (the llm/agent) might be the only one in the pipeline who actually did any checking, if at all.

In certain extreme circumstances this can even lead to physical danger in my line of work, so I'm learning to be careful.

▲coldtea 13 hours ago | parent | prev | next [-]

>This is called "approval fatigue".

Doesn't matter, that would be on me.

It's also a false dillema. Those aren't the only options. A strictly enforced sandbox with sane defaults (for example ~/.ssh), that acts as a hard OS level limit, and not just as a suggestion to the agent, would not have "approval fatigue".

▲40four a day ago | parent | prev | next [-]

This is the conundrum we find ourselves in. Do we submit to approval fatigue and press “Don’t ask again”? Because that’s the dream. We all wish we could just trust the agent to do the task start to finish, unsupervised.

But this is the downside. It might be fine 99% of the time, but 1% of the time you get a critical secret published to GitHub, even after human review.

Is this even worse than what us humans did on our own before LLMs? I’m not sure. It’s not like secrets never got accidentally committed before, it just illustrates the new paradigm we’re working in.

Either you let your agents run wild, and you cross your fingers that they don’t do anything bad, or you need to accept that your new job is to be an agent babysitter, and audit every command.

▲BikiniPrince 20 hours ago | parent [-]

The agent behavior is constrained with external tooling and contracts. Contracts that fit in memory.

▲prmph 17 hours ago | parent | prev | next [-]

No, this is the way I have worked for a long time, and I have not suffered from any approval fatigue.

Rather what has happened is that I have gotten very good at scanning what it is trying to do and know within a second or two whether there is anything fishy I need to look at more closely.

And by "fishy", I do not mean only security issues, but also architecture, code, etc issues. Sometimes it even adds unrelated unapproved changes to what it is supposed to be working on, and I stop it.

And I'm glad I work this way, because countless times I have stopped it from going down a path that is nonsensical or I strongly dislike.

There are techniques I have adopted to speed up working this. Sometimes I allow Claude to make larger changes at once, to batch several changes at once, etc. But these decisions are under my control.

I prefer to work this way than to wade through enormous PRs trying to wrap my head around what was done, where I am likely to just give up and approve it after a cursory review.

▲alexey_anshakov 19 hours ago | parent | prev | next [-]

[flagged]

▲imtringued 19 hours ago | parent | prev [-]

[dead]

▲bcherny a day ago | parent | prev | next [-]

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 a day ago | parent | next [-]

Auto mode may be significantly safer in the niche case where you want the model to have free reign, in a fully unopinionated environment, where it's allowed to make any changes and make any external calls.

Many of the problems when it comes to the manual approval feel like they stem from the expectation of using auto mode in the first place. After all, what's the point of improving the manual approval and safety matching if auto mode is the end all be all, and what's the point of training the model to output commands in a manner that can be parsed by a human if auto mode is always meant to be used? It's very rare for me to not see "command could not be statically analyzed", because the model keeps outputting bash golf.

▲smallnamespace a day ago | parent | next [-]

> in the niche case where you want the model to have free reign, in a fully unopinionated environment, where it's allowed to make any changes and make any external calls.

That is not the niche case, that's the dominant use of models.

It would be helpful to distinguish between your own opinion on how models ought to be used, compared to how others actually use models.

▲coldtea 13 hours ago | parent | next [-]

>That is not the niche case, that's the dominant use of models.

If it is, it's only the dominant case of models because it's pushed as the dominant case of models, with Anthropic devs even coming here to say how people should just accept it and it's so much better than being in control.

It would be helpful to distinguish between your own opinion on how models ought to be used, compared to how others actually use models.

▲RHSeeger a day ago | parent | prev | next [-]

> That is not the niche case, that's the dominant use of models.

It would be helpful to distinguish between your own opinion on how models ought to be used, compared to how others actually use models.

▲zahlman a day ago | parent | prev [-]

> That is not the niche case, that's the dominant use of models.

And if everyone else jumped off a bridge, I mean, used raw interpolation for SQL queries, would you do it too?

▲foldr 16 hours ago | parent | next [-]

Using raw SQL string interpolation doesn't get you anything much that you can't get just as easily with a parameterized query. In contrast, properly sandboxing agents is such a pain, and such a productivity drain, that hardly anyone does it in practice, save for a vocal minority online.

▲literalAardvark 21 hours ago | parent | prev [-]

Don't worry, you can just use the automated approver to escape your queries! It's so secure!

▲wongarsu a day ago | parent | prev [-]

Auto mode seems to have some reasonable restrictions baked in. For example if you give claude access to two k8s namespaces, seriousproject-qa and seriousproject-prod, auto-mode will grant `kubectl exec` on the qa environment while denying the same command for the production environment. Of course you should be enforcing that by restricting what kind of access tokens you give claude access to, but auto-mode does have opinions about this stuff too, even if it's not bulletproof

However I do share your desire for a better manual mode. Auto-mode is both sometimes surprisingly lax, and sometimes too restrictive. Maybe manual mode should inject a reminder "keep your commands as simple one-liners", the same way plan mode injects a reminder that you are in plan mode and don't want any code changes

▲ceejayoz a day ago | parent | prev | next [-]

Is that because auto mode is good, or because the manual approval system sucks?

▲gsnedders a day ago | parent | next [-]

Indeed. The article only compares the status quo manual system versus the auto system — and doesn’t consider ways that the manual could be improved.

As it says:

> 5% allow any shell command outright, and another 43% have interpreter rules like Bash(python:*) or Bash(node:*) that are essentially equivalent in practice

Claude Code never should have prompted to always allow Bash(python:*) or Bash(node:*) — that’s clearly a bad idea, and Anthropic know that (given the references in the article!).

Of course, Bash(python a.py) still isn’t safe if you also allow Write(a.py), because you may as well allow Bash(python:*) at that point, and that’s often practically what people want (“I want to both make edits to the source and then run the test suite”). So maybe the whole permission system is broken to start with — and the actual answer is leaning more heavily on fine-grained sandboxing.

You also, as the article rightfully points out, run into permission fatigue and users blindly hitting allow.

I do still wish you could do more with hooks — outside of auto, I might want to allow a given command via a hook if Claude Code has read access to given file, but there’s no way to query if a given path allows/denies read/write.

▲bcherny a day ago | parent | next [-]

Will look into exposing that in hooks.

Ultimately, the threat model here is: human has to approve a lot of commands, so gets tired and accidentally approves a command they shouldn’t have. We spent a significant amount of effort to build a richer permission system, allow configuration at multiple levels, use static analysis to detect dangerous and safe commands, monitor the model to detect and block prompt injection at the inference layer, etc. Some of these components we rewrote and red teamed dozens of times. Our conclusion was that despite all of this work, in practice the threat model is that human attention is limited and that that a different approach performs an order of magnitude better in practice.

▲joombaga a day ago | parent | next [-]

Did you ever test putting the auto mode classifier in front of manual approval? This is how I use it, but last I checked that option is not available out of the box.

▲adastra22 a day ago | parent [-]

That’s how auto works right now. It gives you a prompt.

▲aftbit a day ago | parent | prev | next [-]

The problem is that you didn't even attempt to build a proper box (a sandbox that prevents the AI from running bad stuff by design). It's an extraordinarily hard problem. Only OpenAI Codex is actually trying to do it, and they suck at it too. They keep breaking permissions, their own AI can't troubleshoot it, their defaults give read to the whole filesystem (go ahead, slurp my ssh keys), and their "manual approval" escape does not seem to work.

▲bcherny a day ago | parent | next [-]

I agree actually. We built an open source agent-agnostic sandbox that we are landing improvements to, much more to come: https://github.com/anthropics/sandbox-runtime. That said the sandbox is not perfect, and any sandbox needs holes punched otherwise it is not useful in practice (at least for inference and MCPs, and almost certainly more). We will be doing much more in this area.

▲coldtea 13 hours ago | parent | next [-]

>and any sandbox needs holes punched otherwise it is not useful in practice

Don't assume our individual use cases. It can be perfectly useful with access to just one folder and zero network asside from the API.

▲grey-area a day ago | parent | prev [-]

That’s good to hear, it’s a much better approach than expecting humans to read commands and approve them or just trust that the LLM can set the proper horizons for its world itself while working.

▲Kim_Bruning a day ago | parent | prev [-]

Making a sandbox both fully secure and fully useful are contradictory requirements. If you want the agent to do any real work, you have to leave gaps.

With SOTA agents that’s a real bind, because they’re very likely to find those gaps. Whether they exploit them, close them, or leave them alone then becomes a prompting challenge yet again.

I don't think this means don't sandbox at all. You can prevent a lot of small and medium accidents by locking down or gating access to hidden files, ssh, sudo, etc.

But your sandbox can never be the whole story.

▲coldtea 13 hours ago | parent [-]

>Making a sandbox both fully secure and fully useful are contradictory requirements.

Any tradeoff deals with "contradictory statements". Doesn't mean we should always side with one side on a tradeoff.

Nobody said anything about "fully secure" and some arbitrarily "fully useful" combined, anyway.

For certain people it could be 100% fully useful with just access to a few fixed folders and a few fixed APIs.

Many of us don't want it to drive our lives, just do some specific this or that.

▲Kim_Bruning 11 hours ago | parent [-]

Right! That was the standard view until fairly recently. But I'm pointing out something else.

This year we've learned that If a SOTA LLM decides that the sandbox is standing between it and its current objective: well, it has the ability, the time, and literally nothing better to do all day. Odds are, if you've configured the sandbox for anything useful, you've also provided a crack it can use to get out.

Again, doesn't make a sandbox entirely useless. Does mean you can't just put it in a really tight box and call the job done. If anything, the strict sandbox might even hurt, because it's more likely to get in the way.

(By analogy: consider the safety issues posed by a dam without a spillway.)

▲aftbit 8 hours ago | parent [-]

This is much more of a problem if you're attempting to run at a massive scale, beyond what humans can audit. When I'm doing "artisanal" agentic programming, I'm still in the loop in the sense that I'm watching what it's doing and ready to hit Esc if it is doing something dumb. If the AI trips over the sandbox, I can cancel it and do whatever it wants me to do before it starts trying to engineer its way around.

▲kragen a day ago | parent | prev [-]

Maybe you can include some percentage of intentionally malicious commands, but not actually run them if the user approves them. Just blare an alarm telling the user they misclassified a malicious command, and maybe pause the Claude Code session for a frustrating 5–15 seconds. Video games can elicit truly astonishing levels of performance from human brains by using this approach. I'm guessing it's probably outside your Overton window, which is too bad, because it has the potential to work a lot better than the 89% you get with "Auto mode", which is far too low if anything really significant is at risk. That's not even one single order of magnitude lower risk than just "allow everything always".

Speaking of really significant things being at risk, it's pretty infuriating that the web-chat Incognito mode can't write and test code locally, and neither the non-Incognito web-chat nor the local Claude Code client can be shielded from the knowledge of my email address and my geolocation. (Even the Incognito mode knows my geolocation.) This gives users no alternative but to put privacy-sensitive information at the disposal of Claude Code, which is far too unreliable to be entrusted with it. It's tempting to attribute this to Anthropic's corporate DNA valuing users' interests at a very low level, but conceivably it's just an oversight, and if I mention it here, it will be corrected in a month or two?

Currently, my assessment is that Claude Code, and in particular the Opus 5.5 model, is head and shoulders above the competition in software development capabilities. Nothing else is even close. But I've seen several small signs like this which suggest that Anthropic, as a company, is maliciously misaligned. So, if Grok, Qwen, GLM, or Astra starts to come anywhere close to being competitive, I'll switch as soon as I can. I imagine that most of your users feel the same way.

▲wonnage a day ago | parent [-]

this is not a serious proposal

▲kragen a day ago | parent | next [-]

Not only is it a serious proposal, it's been used in practice in every airport X-ray baggage scanner for decades, where it's called Threat Image Projection (TIP): https://www.xscann.com/products-HiTipPlus.html and it's actually a regulatory requirement in that context in a number of countries: https://caainternational.com/course/threat-image-projection-...

▲ceejayoz a day ago | parent | next [-]

Yes, but you can require it in such a situation, as they're subordinates who have to follow policy or lose their jobs.

▲kragen a day ago | parent | next [-]

As I pointed out above, Anthropic places a lot of requirements on its users already, but if Claude Code TIP were optional, presumably, savvy users would turn it on voluntarily, unless they wanted to use Auto Mode. As Anthropic's study clearly documents, the current manual approval workflow basically doesn't work at all, because the users just approve 87% of dangerous actions. So there's no reason to use it, except maybe very rarely.

▲yunwal a day ago | parent | prev [-]

Most of anthropic's money comes from enterprises that may want to enforce something like this at an org level.

▲DANmode a day ago | parent | prev [-]

The same scanners that let handguns et al through 93% of the time, according to internal audits and journalist review?

Maybe pick a better comparison if so?

▲cannonpalms 16 hours ago | parent | prev [-]

Enterprises do the exact same thing today by sending phishing emails to their own people to figure out who needs additional training. Why would an enterprise not want this feature for Claude? It seems like an extremely serious proposal.

▲1659447091 a day ago | parent | prev | next [-]

> I do still wish you could do more with hooks I might want to allow a given command via a hook [...] given path allows/denies read/write

You can make a script for the PreToolUse hook that can do that. I use a command gate script that parses input for doing that exactly, allowing/denying actions based on tool use + paths -- it started out as a hook to prevent claude from polluting my clojure projects/filesystem with python in sneaky ways. Babashka works really well here

▲imtringued 18 hours ago | parent | prev [-]

If you have a file in your repository that is not safe to run you have bigger problems than your development system getting compromised.

What I mean by this is that if you restrict python execution to the entry point of your software and then Claude wants to run a command anyway so it threads it through the main.py script, you are no longer running something that is contained to your local development environment.

But when you think about it, what exactly prevents Claude from doing that anyway?

Claude could add malware into your project directly.

So the case where you say it doesn't matter which python script it can execute, actually does matter. Restricting python execution to a subset of all files buys you security.

The next step would be to get Claude to stop adding malware to your software, which it hopefully already does not do.

▲rbehrends a day ago | parent | prev | next [-]

A key problem when using manual approval with Claude is that too much of Claude's tool use is Bash or Python slop that is difficult to review (especially when you are getting spammed by it) and impossible to handle through rules. Example:

sed -n 1,30p src/vm/wren_vm.c && sed -n 310,350p src/vm/wren_vm.c && sed -n 560,600p src/vm/wren_vm.c && sed -n 740,775p src/vm/wren_vm.c && sed -n 40,70p src/vm/wren_common.h && cat util/wren_to_c_string.py | head -80 && ls test/random doc/site doc/site/modules doc/site/modules/random 2>/dev/null; cat projects/premake/premake5.lua | head -80; cat util/generate_projects.py

After ten or more of these, you're going to get hit by permission fatigue, and then, yes, manual review becomes too error-prone to use safely.

The irony is that Claude is regularly ignoring its existing Read/Write/Edit tools that could make everything more readable.

Other models/harnesses have their own problems, but Claude Code is one of the worst for manual approval.

You can get manual approval to work reasonably well if you give the model a reasonable set of tools (I have literally written my own MCP servers to cover gaps in existing harnesses) where you can then write rules for the vast majority of safe cases.

For example, I have a stdio MCP server that allows models to inspect crates under ~/.cargo/registry/src (paired with the existing query-crates MCP server). It provides read-only operations limited to crate data, so I can pretty safely auto-approve everything in there. With the right setup, including a sandbox, you only ever have to manually approve something once in a while and usually with delimited scope, avoiding permission fatigue.

▲fwip a day ago | parent [-]

Opus especially seems to like to:

1) edit a file with sed, 2) try to write it with its regular tool 3) get blocked because sed changed the file 4) read the file with tool 5) edit with sed again.

Would be nice if it felt like real people were developing Claude Code, instead of chasing after another half-baked idea Claude came up with.

▲greatgib a day ago | parent | prev | next [-]

Related to that, there are quite a lot of common command cases where you have the choice:

- Yes, but only one time, you will have to manually approve next time

- Enable auto mode and stop worrying

- No

Nothing to save this command or part of it to the manual approve list. So will be requested again 100x times.

▲coldtea 13 hours ago | parent [-]

That's on purpose, so that you just give up and choose "auto mode".

They talk about "decision fatigue" when they're engineering it themselves with dark patterns.

▲bcherny a day ago | parent | prev [-]

The blog post has more detail, but tldr is humans make mistakes that automation can catch.

▲ceejayoz a day ago | parent [-]

Sure, but Claude is deeply useless at making permissions hooks! Every time I've tried it it completely fails at the task, despite researching the docs and using various skills. It trivially evades its own just-created rules.

▲barbariangrunge 4 hours ago | parent | prev | next [-]

There's no reason why we shouldn't be able to have the audo-mode safeguards happening when we set things to manual mode. Shouldn't you just have it checking on claude anyway?

▲barbariangrunge 4 hours ago | parent | prev | next [-]

> For high-stakes changes to production infrastructure, we still recommend reviewing Claude's actions yourself.

- from the linked article

▲furyofantares a day ago | parent | prev | next [-]

I completely believe this, but you could also run auto mode classification in manual mode and tell the user the result.

Or even reject anything auto mode rejects while still allowing the user to reject things auto mode accepts. If what's approved is the intersection of what the user is approving and what auto mode thinks is safe then it would be strictly safer than either mode alone.

This would also be a way for users to gain confidence in auto mode before going all in on it.

▲eterm a day ago | parent | prev | next [-]

Just a few days ago, opus 5.5 in auto mode deleted backups that it shouldn't have, and in the "apology" it even said, "Nothing was lost, I didn't delete your original files".

▲fg137 15 hours ago | parent | next [-]

Saw something similar: https://news.ycombinator.com/item?id=50412916

▲knollimar a day ago | parent | prev [-]

I hate this condescension by Claude. It doubles down in such a bad faith way.

▲cozzyd a day ago | parent | prev | next [-]

I run CC as its own user on my laptop with no secrets/keys/erc available other than through a LPE exploit or perhaps installing a keylogger. Can I guarantee CC won't attempt any of those things in auto mode?

▲AspireOne a day ago | parent [-]

There are no hard guarantees as far as LLM output is considered.

▲ a day ago | parent | prev | next [-]
[deleted]
▲markasoftware a day ago | parent | prev | next [-]

No its not generally safer. It depends on who is doing the approving, the task being completed etc.

▲j45 a day ago | parent | prev [-]

That may be for most cases, but it wasn't safe for this password scenario, and likely others that haven't been discovered. Maybe there's a PII setting that can be enabled by default.

▲rectang a day ago | parent | prev | next [-]

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 a day ago | parent | prev | next [-]

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)

▲fg137 15 hours ago | parent | prev | next [-]

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.

▲wyager a day ago | parent | prev [-]

"My personal security model can't represent this, therefore it's not secure"

▲LeBit 15 hours ago | parent | prev | next [-]

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 14 hours ago | parent [-]

> 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.

▲LeBit 10 hours ago | parent | next [-]

Not to be argumentative, but in what case would you not care and let an agent do whatever it wants when it is not isolated in a throwable vm?

▲uw_rob 7 hours ago | parent | next [-]

Not argumentative at all. I've spent the last 6 months working on these problems and built the original Agentic Identity solution at my large company this January. Getting Agents secure and scalable means a lot to me and I have some counter intuitive thoughts on it. Everyone has been working on this stuff though and there's tons of different opinions on the matter so I think all open discussion is good and healthy.

I think it's what are you trying to achieve, the risk vs. reward trade off for that, putting some thought into the aggravating vs. mitigating factors, and lastly doing some gut checks on if model improvement over time change the risk v reward calculus.

On paper "sandbox everything" sounds great but I haven't personally seen it work work in the general sense of "solving" Agent security. Agents need permissions to accomplish tasks. Putting them into a sandbox opens up difficult questions like "How do I provision a new identity which only has the capabilities which the tasks need" -- few systems and vendors have enough knobs needed for this -- and "If I give it access to the tools or permissions it needs can bad things happen regardless of the sandbox?". None of these have great answers with low friction. Once you factor in decision fatigue it gets worse as well.

I think if you accept that some risk is needed to accomplish meaningful tasks, that Agents are inherently statistically dangerous regardless of sandboxing, then you accept that you need statistically safety on your side. So in comes things like auto mode, system prompts which instruct some baseline behavior for your systems, being picky about model choice, and thinking about the pink elephant effect (Perhaps don't pass Haiku ambitious tasks which require unsupervised internet research and package installations while telling it at the same time to not hide its tracks if it makes an error).

The infra and identity layer is the real killer. Not all vendors and apps have as many knobs as you might like -- it would be amazing if everyone supported things like OAuth's Rich Authorization Requests. Apparently Anthropic heavily uses their cloud agents internally -- and that seems reasonable because they are all-in on it and have infinite tokens to rewrite software which doesn't work nicely there. Much harder as an individual or as a company that isn't a lab.

For me: I'm running with a mixture of both sandboxed and unsandboxed. My company has something like Claude Managed Agents internally but it isn't integrated with everything I need, cannot compile or run all of the internal stacks I work with, and doesn't have enough knobs to get the customization needed for success on my daily work.

Regardless, while my cloud agents are working away I also have things running on my machine as well for tasks which I want/need to be more hands on with. If my machine gets rm -rf'd I'll live. I dont have API keys on my machine -- everything is tokens which need to be refreshed daily. I use frontier models on high reasoning. Extremely destructive internal actions typically require step-up authentication and my Agent cannot do that itself. I have some common sense boundaries in my root AGENTS.md.

Looking around in at my company, as of a few months ago before a sandboxing solution was rolled out and before Claude shipped auto mode, around ~50% were running Claude in YOLO mode. Some large chunk of the remainder had blanket approval for "python3" and "curl" so even with manual approvals it wasn't really offering anything. Things were mostly fine -- the cases which were spread around for the dangers of agents weren't super meaningful -- examples being agents submitting bad data into a system or flipping dangerous feature flag. Frankly: Humans have done all of these as well and I think systems should validate input and feature flags should be automatically rolled back or be under step-up authorization before they change.

Could my local agents be put into a disposable sandbox? Yes but it doesn't get me much individually imho. I might put them into a more durable and reusable sandbox one day to run locally -- but until then I'm comfortable accepting the risks given my mitigating factors and the rewards I get when my 5-10 local Agents can "just do things".

▲barbariangrunge 4 hours ago | parent [-]

Good point depending on your workflow for giving it permissions within the sandbox. Does it need those permissions though? Can't it just ask you to do the provisioning via curl etc? Or do you have it automating your cloud infrastructure, jira, testing servers, and git etc so that you can't disconnect it any more?

▲caymanjim 9 hours ago | parent | prev [-]

That's how I use Claude for everything, because ain't nobody got time for constraints.

▲ 13 hours ago | parent | prev [-]
[deleted]
▲bluebands a day ago | parent | prev | next [-]

This still presumably happens in auto mode as it asks for sensitive commands (and the default is "always allow," which saves it)

▲bcherny a day ago | parent [-]

Yeah good catch. Thinking through what we can do to improve this (ideas welcome).

▲80fj0348i a day ago | parent | next [-]

I would love if Auto Mode, instead of instantly denying the command, had an option to go into an "assisted manual review" interface where the command was explained in depth (perhaps by an adversarial review agent) and the user asked for their input on whether this command is OK. Perhaps needing a detailed response instead of a simple Yes/No, e.g. so the agent understands if there are compensating controls for the risk.

▲solyin a day ago | parent | prev | next [-]

The UI/UX needs to offer editing. Currently the prompt is either accept once, accept always with the given filter, or deny. If the command is a 500 character long bash command, with an rm -rf $S/foo in the middle, and we just hope $S is defined, I don't really have good options other than "I hope my backups work".

If the command is explained, and then we get a chance to edit it, maybe make the rm -rf into a mv; give us UI to edit the filter being applied. I have no problem hitting "Always allow" so claude can run "git status --flags a/b/c/filename" but as a human, I'd like to be able to edit the permission blanket to be "git status *.

Which I can do manually specify in the config file, but that's annoying. I'm fully capable of opening my terminal app and editing that in vim, but I'd rather not have to. It's like this for every project too. If I start fresh on a new machine, new Claude account, how much do I need to redo?

▲usernomdeguerre a day ago | parent | prev | next [-]

Is this maybe a mistaken abstraction?

What if the 'settings' being described here aren't 'project settings' they're 'personal settings for the project'.

I imagine we're following dev ecosystem conventions where everybody puts their tool settings in the project folder so they know where to find it and can share it; but are agent directives like this closer to a 'tool', or closer to a 'contributor'?

If the latter, I wouldn't expect to see "Joe's personal list of naughty and nice commands" in my project files either, certainly not under 'settings'. So just don't put them there.

▲data-ottawa a day ago | parent | prev | next [-]

Two modifications I've made that help:

I ended up having to build a full shell argument decomposition and parser, with it I can manage allow list of rich tree structured commands. Centralizing a curated collection of known command structures and their side effects would help a lot. I don't know if Claude does this already, but it doesn't work with things like `gcloud` from my experience, and that has resulted in it slurping secrets (even a partial read I've had to rotate keys for).

Claude uses bigquery in the command line by piping sql files from /tmp into the `bq` command. I had Claude create a hook that expands the SQL file into the permission prompt giving me a real chance to review these, but the TUI truncates long commands with no scroll option. Making that the default behaviour and adding a pager would allow better review of lots of executable scripts.

As long Claude is running as the user's account there's no guarantees. An approach like 1password's `op read` to physically separate secrets from repo read access and printing would he helpful (as in, make sure that no standard key formats can be ingested into the agent's context or logging).

Again, I don't know if any of these are implemented, they've very likely to have been tried by the Claude team, but maybe there's a long shot chance that it helps.

▲hologramofham a day ago | parent | prev | next [-]

> Thinking through what we can do to improve this (ideas welcome).

$Trillion AI company asking for ideas from the community whose work they hoovered up to make money, ruin an entire industry and make lifetimes of hard earned skill completely valueless in the span of 2 years.

▲jefftk a day ago | parent | next [-]

As a Claude Code user I'm very glad to see Boris and other devs asking for our feedback and advice. That's how you make good products, and should be welcome on HN.

I've always been into programming as a way to solve problems, and that CC allows us to get more done faster is a good thing.

(Up to the point that we get to RSI and extremely powerful models that we don't know how to align or control. Which I think is uncomfortably soon, and so there's a part of me that says "don't make CC better, it's on the critical path to reaching RSI before we're ready")

▲AspireOne a day ago | parent | prev [-]

Putting aside the rest of your comment, this

> Thinking through what we can do to improve this (ideas welcome)

> $Trillion AI company asking for ideas from the community

indeed always felt very weird to me. $trillion dollar company, with employees bought for as high as $100m, and a whole team/time/internal knowledge/resources/data at their disposal, asking for ideas from random individuals in some public forum? Really? How is this real? Maybe I'm missing the mark here, but it always struck me as odd.

▲Rapzid 17 hours ago | parent | next [-]

I'm completely dumfounded.

The only thing I can figure is that since it's admittedly all vibe coded and vibe reviewed, and that nobody understands the entire system...

All ability to reason about and evolve the system holistically has been lost in favor of feeding in narrow, discreet problems to be "fixed".

There seems to be a complete lack of awareness on how flawed the security model is at a fundamental level, and that the entire sandboxing ecosystem is trying to address it at another level(like OpenShell and others).

▲qsfp28 4 hours ago | parent [-]

[dead]

▲solyin a day ago | parent | prev | next [-]

Think of it as an informal interview. If you come up with a brilliant idea that no one there was able to communicate effectively, what are the chances they're not going to offer you a job or at least a chance to interview?

▲AspireOne 5 hours ago | parent | next [-]

Are you implying that if I propose a "brilliant" solution here in the comments, Anthropic will DM me, inviting me for an interview?

Wait, I meant it sarcastically, but now I actually really wonder if you believe it (not insulting you! genuine question).

▲solyin an hour ago | parent | next [-]

I don't work at Anthropic so I can't make any claims about their hiring practices, but I've been at FAANG companies and on the hiring committees and it's always a challenge to find good candidates. Engineering managers spend many hours trawling through LinkedIn, looking for good candidates. What's so surprising about using a site like HN to get candidates into the pipeline? HN has a monthly who's hiring thread, even!

▲ an hour ago | parent | prev [-]
[deleted]
▲cube00 a day ago | parent | prev [-]

Only to lay me off next year after the IPO, no thanks.

▲CamperBob2 a day ago | parent | prev [-]

So developers who get paid more than $X,XXX,XXX per year don't need to pay attention to their customers. Got it.

Where do you feel the dollar threshold should be set? At $990,000 per year you still need to listen to users, but at $1,000,000 you are basically King C of Rust Mountain and they are lucky you even let them run your code?

Should RSUs and cash signing bonuses be included in the calculation?

▲AspireOne 5 hours ago | parent [-]

Slow down, I am not throwing shade or even making any conclusions here :D I feel like you got irritated, perhaps specifically because I appealed to money - I will expand on it below. Nevertheless, I just presented my internal model and nudged people for some deeper context that could help reconcile it, that's all. And yes, your perspective did give me some new useful insight, thank you. I'll respond to some things.

> So developers who get paid more than $X,XXX,XXX per year don't need to pay attention to their customers. Got it.

But the point is that the specific discussed behavior is mostly technical. It's a mostly under-the-hood behavior, and mostly something that doesn't involve tradeoffs for the user based on the implementation chosen. So it's not really something that you would just go around and ask users, especially when you have all the session statistics from CC, skilled systems engineers (where I partially used money as a proxy) who are paid to spend months on this problem and can iterate ideas among each other, polls and questionnaires, thousands of experiments from within different sandbox configurations, insight into the training of the model itself, etcetera.

In all of that, six random people from a forum, even from one such as hackernews, seem to me to be a totally statistically insignificant, comparatively under-informed dataset.

Something like that is where intuition leads me.

Now, the reason I appealed to money is multifaceted.

- It's an investment from the company into a brainpower that is directly tasked with solving this. An investment so absurdly huge, that that team delegating such fundamental problems to six people on a forum for ideas seems hysterical to me.

- They are being paid absurd sums of money. For-the-value-they-provide. I am not, and neither is anybody in this comment section (probably). Not even close. Yes, I expect them to be able to solve these problems much, much, much better than the average HN commenter. Otherwise - why the hell are they getting paid that?

- The guy getting 100$m for joining the company rattled me, I admit.

Now, those are all the reasons behind my intuition. Of course, I understand that a guy optimizing a model can easily bring 100$m of additional revenue to a company of OpenAI's scale and money turnover. I understand that these people are all still just humans, like you and me. It just... rubs me the wrong way. I concede my irrationality.

Anyway, I think your point about "listening to users" is... weird, because I don't think that's the same thing as what I was talking about at all.

▲ozozozd a day ago | parent | prev | next [-]

How is that a good catch? It’s literally in the article.

Along with how Claude checks it in.

▲verdverm a day ago | parent | prev | next [-]

Not optimizing for eyes free coding, versus hands free, would be a welcomed change. It's hard to take the p(doom) worry seriously when such unsafe development practices are prognosticated from Anthropic employees

▲pama a day ago | parent [-]

Eyes free always wins over hands free in the long term. Hands free does not scale (optimize) past the 2023–2025 human-in-the-loop coding. It has known problems, basically boiling down to human error rate is higher than machine error rate, and the latter reduces with better models. I am incredibly happy that the era of human approval is no longer considered viable by a majority (most of us knew that for years, but reality diffuses slowly in many corporate environments.) This does not mean there isn’t work left to be done, but eyes free is the right focus.

▲kaffekaka 12 hours ago | parent | next [-]

I feel lucky to work in an environment where the sheer amount of code we need to produce is not the bottleneck, so it is actually possible to build the stuff we need while also maintaining understanding and oversight. We do not read all code but work on finding a balance. Many times, the code you do not have to write at all is the best.

It is certainly possible also for us to produce so much code that all hope of understanding and human in the loop is practically gone, but as i wrote this is not the bottleneck and so doing it would the wrong choice.

If you work somewhere where every additional line of code is a positive, I understand if you take this more radical approach of just letting the machine make all decisions.

▲verdverm 15 hours ago | parent | prev [-]

I have very serious doubts, the errors are not in the same category, transformers are fundamentally limited.

Eyes free is the wrong focus, it will do more short term damage to society, while being impossible at scale. But I understand there are a bunch of valley types who want to completely obviate humans for whatever reason, it's an alternate reality they live in.

Here's the thing, society will revolt against these people, they already gave the first warning shots. This HN submission is a story about another person leaving the products of a company engaging in eyes free practices. You wouldn't want your lawyers and doctors doing that, why software developers then?

> human approval is no longer considered viable by a majority

Where do you see data that the majority believe this? From what I can see it is a shrinking minority as we move beyond peak hype.

▲piva00 a day ago | parent | prev [-]

You are the one being paid millions to solve this, solve it.

▲baconner a day ago | parent | prev | next [-]

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.

▲Rapzid 17 hours ago | parent | next [-]

These sandboxes and service proxies already exist. See Nvidia OpenShell.

▲baconner 2 hours ago | parent [-]

Oh indeed, it's been a while since I looked at openshell - didn't realize it did credential injection thanks for sharing.

▲pastel8739 a day ago | parent | prev | next [-]

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.

▲MSP_Logic 13 hours ago | parent [-]

[flagged]

▲b2y a day ago | parent | prev [-]

[flagged]

▲eddy162 a day ago | parent | prev | next [-]

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 a day ago | parent | next [-]

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 19 hours ago | parent | next [-]

not the OP, but generally, if you don't want to / can't use auto mode for some reason, you want Claude to make its actions as reviewable as possible.

Recent GPT and Claude models have this tendency of using super complex Bash commands. This makes sense, if your RL rewards optimize for min(tokens) and max(performance), it is better to waste a few tokens on a complex inline Bash script that runs a few commands at a time and returns just the output you need, rather than doing one simple command per turn and paying the cache read on every turn, like older models used to do.

This, however, is a problem both for command reviewability and sandboxing. With the older way of doing things, without auto mode, most commands would run sandboxed just fine (especially in Codex), and you would only be asked for approval when a command couldn't run in the sandbox. With everything being stuffed into one complex script, almost every script fails in the sandbox and requires you to manually approve it, and the complexity of the script makes it hard to understand what you're actually approving.

In other words, new models optimize for effectiveness, with some attention paid to human understandability of their output, but almost no attention paid to human understandability of tool call arguments (Bash, inline Python). This suits auto mode and giving the model larger tasks, but not the way of working that some people prefer where you watch over the model's shoulder.

▲speleding 18 hours ago | parent | next [-]

I have a standing instruction telling the agents to prefer to use ruby wherever possible. Ruby uses fewer tokens than Bash and is easier to read, especially when condensed into a single line.

Of course, that only helps if you’re familiar with ruby. And the agents sometimes still choose Bash regardless of the instruction.

▲rbehrends 17 hours ago | parent | prev | next [-]

> Recent GPT and Claude models have this tendency of using super complex Bash commands. This makes sense, if your RL rewards optimize for min(tokens) and max(performance), it is better to waste a few tokens on a complex inline Bash script that runs a few commands at a time and returns just the output you need, rather than doing one simple command per turn and paying the cache read on every turn, like older models used to do.

This is not a good reason. Models can emit batched tool calls, which a smart harness will process all at once without starting a new turn. I see it in Zed all the time. In fact, Zed processes batched tool calls concurrently, which can be faster than a chain of Bash commands, and failure of one part does not cause failure of subsequent parts chained with `&&`. This approach is token neutral and easier to understand.

▲XenophileJKO 17 hours ago | parent | prev | next [-]

I was in this boat also when my company didn't allow auto-approval. Bash and python scripts are a pain to revieve.

Though I think this is largely transitory, we are already in a place with the harnesses and models like Opus 5.5 that the kinds of work you are doing involve so much that vetting everything manually is probably less efficient than setup up access control on the prod routes or dangerous resources.

I'm typically giving tasks that invlude multiple actual repositories and systems at the same time.

▲user43928 17 hours ago | parent | prev | next [-]

I think 2024's method of manually reviewing bash commands is unsuitable for modern agentic development. Whether that's something they want to optimize Claude Code for is their call.

That said, I've also seen problems from complicated bash calls with Opus 5.5 on xhigh. Occasionally git push hangs and it believes it's waiting for an hour for git hooks.

The actual reason apparently was that it incorrectly piped git into grep, resulting in a deadlocked command.

▲justinclift 16 hours ago | parent | prev [-]

> Recent GPT and Claude models have this tendency of using super complex Bash commands.

Are you sure? I read its proposed commands (auto mode is hard off for me), and mostly it seems to string together fairly simple info gathering commands (ie grep's, echo's, that kind of thing).

I don't tend to have it write much code recently though, instead I'm having it investigate config files/code bases, and that kind of stuff.

▲simonjuk 21 hours ago | parent | prev | next [-]

I have this same frustration. The way I use Claude is for it to make edits one small chunk at a time so I can review the code as it writes, and to make sure it's going on the right direction. I find this much easier than generating a large pr I need to review.

More and more I feel like I'm fighting Claude: it edits multiple files using python scripts and it edits in parallel so if I stop it, I have to stop each individual edit. Both of which I've told it not to do repeatedly, but it still does then apologies which is worse.

▲BikiniPrince 21 hours ago | parent [-]

This is solvable. Opus has adhd. Myself and others solved this by building ticketing and task management systems. The task constrains the agents actions and focuses the effort. Every update is catalogued. It’s easily reviewed and referenced. Opus doing terrible things and apologizing is not surprising. I’ve moved to a system of multiple agents reviewing and authoring changes. Convergence generally always results in a positive commit.

▲nyssos 20 hours ago | parent | prev | next [-]

I feel this way as well, Claude writes completely incomprehensible shell commands all the time. Trying to understand them is like deobfuscating code and I have basically given up, but I'm not happy about it.

Even if I could follow them I would also prefer it use the edit tool, since I find Claude also introduces lots of "minor" changes I did not ask for when it rewrites code in bulk.

▲eddy162 8 hours ago | parent | prev | next [-]

Thanks for replying!

What I'd love is for Auto Mode to show the full diffs one-by-one as they're being implemented in the CLI (or VS Code).

On top of that, an option where Claude explains what it's doing in every step, as if you're watching someone talk while they implement a coding challenge, would be really helpful (and would also reduce interrupting it when it looks like it's deviating from the Plan).

The use-case this would support is to have a full understanding and confidence in what Claude is doing while it's implementing a Plan in Auto Mode. The reason is that it's much less tiring/overwhelming for me to follow along an implementation compared to reviewing a giant PR after the fact, and it's helped reduce my coding fatigue by a lot.

Edit Tool:

Currently I tell it to use the Edit tool because it doesn't reliably show the diffs in Auto Mode (I have the latest version; I've sent numerous feedback reports on this), and later in a session (when implementing my feedback) it will often make multiple edits in some unreadable bash command. So my only option to see the full diffs during implementation and to have it explain/break down bash commands is to go into Manual Mode.

Documentation & Comments:

Even with an initial prompt instructing it so, Claude always needs to be interrupted so that it will rewrite comments to something readable to humans.

While very long "technical"/Claudish paragraph comments and MD files might work for future Claude's (and improve benchmarks/coding scores by making implementations technically more comprehensive), my goal is that a human coder should be able to understand how the codebase (React/Node/Python/Polars) works by reading on their own rather than needing their own AI to summarize everything.

I've even seen it rewrite existing human-written concise comments into blocks of Claude-ish, as if it's trying to make everyone dependent on it in order to do anything to the codebase.

I wonder if an optional built-in skill could help improve this, as I admit I haven't experimented with building any of my own (my concern with customizing Claude.md is to not overload it with too many instructions; I'm on vanilla Claude Code). Note: This is all on Fable on xhigh.

▲grncdr 20 hours ago | parent | prev | next [-]

I’m also not the poster you’re replying to, but yes, I’d prefer the edit tool over the ad-hoc string replacement scripts Claude seems so fond of. I’m not always reading tool call transcripts (source control diff is usually sufficient), but it’s a lot easier to read the edit tool output than the same thing as quoted shell (or Python, or Ruby) strings.

▲eviluncle a day ago | parent | prev | next [-]

Not OP, but if I understand their complaint correctly, they're saying that on auto mode claude does a lot of things in obscure ways with "clever" (i.e non human readable) bash commands that perform multiple operations and OP feels they are losing control over their codebase and so they opt for edit mode where they get to review what commands claude runs.

▲fmbb 21 hours ago | parent [-]

Editing local files is not where you control your source code I hope.

Just tell Claude to never commit or push.

You are in control of git, Claude is simply a tool to quickly apply changes to local files for something you want.

▲watwut 21 hours ago | parent | next [-]

Yes, why should we do the things in easier and more comfortabke way (review small changes) when we can force user into harder one (newest changes mixed with all previous ones).

▲number6 20 hours ago | parent [-]

I just review the MR

▲imtringued 20 hours ago | parent [-]

So basically you gave up?

▲fmbb 19 hours ago | parent [-]

What does this mean?

A Merge Request or Pull Request is the only thing that makes sense to review, and always has been since before LLMs.

If some author tells me “you can review each commit to make it easy” I will ask them to make separate PRs.

▲soon_to_be_sb 17 hours ago | parent | next [-]

>A Merge Request or Pull Request is the only thing that makes sense to review, and always has been since before LLMs.

Why doesn't it make sense to review smaller units of change within a big PR?

▲skydhash 16 hours ago | parent [-]

Not GP, but in my experience, those small changes are usually contrived to be small. Like saving snapshots instead of being atomic and self contained. And if they are the latter, they should have been separate PR.

That’s why I usually look at the diff of the whole PR and prefer to merge by squashing. Commits inside the PR are usually noise.

▲soon_to_be_sb 14 hours ago | parent [-]

What you are saying is true if created manually. It is a chore to create sensible commits messages when you are committing often.

But LLMs appear to be pretty good at making small commits with sensible commit messages, that greatly help to make sense of the whole PR.

Regarding large monolithic commits, how do you even know where to start reviewing in a large PR? Smaller commits at least give you some sense of ordering.

▲skydhash 11 hours ago | parent [-]

> Regarding large monolithic commits, how do you even know where to start reviewing in a large PR?

What I’m saying is that large commits shouldn’t be a thing without out of band discussions (formatting, design refactoring, features merging). With such knowledge, it’s easy to glance at the code and understand the implementation.

▲soon_to_be_sb 2 hours ago | parent [-]

>without out of band discussions..

Not every project can afford this.

>With such knowledge, it’s easy to glance at the code and understand the implementation.

I really doubt that this is true for large, legacy code bases, where one is only familiar with a small part of the system.

▲skydhash an hour ago | parent [-]

> Not every project can afford this.

You expect to send a big PR to someone without him being aware of the context or without being available to discuss your solution?

> I really doubt that this is true for large, legacy code bases, where one is only familiar with a small part of the system.

Reviewers should already be knowledgeable about the part being modified. If no, the review is just for checking for antipatterns in the code, or badly written tests. A bit useful, but can be unnecessary in high trust (or keen on accountability) workplaces.

▲watwut 17 hours ago | parent | prev [-]

It means you gave up on getting claude to show you changes as it is doing them, in a comfortable form, so that you can steer it as it is doing them.

▲imtringued 20 hours ago | parent | prev [-]

Nothing more comfortable than having to use git commits and branching just for telling the agent which lines it messed up instead of simply not writing the garbage in the first place.

▲eastbound 21 hours ago | parent | prev | next [-]

I tell Claude not to use git or maven, and has a VM without those binaries. Later on, it was trying to push on GitHub. It had downloaded the git binaries from the internet, read my .git repo, used the remotes written in it, performed a commit and pushed it. All against my orders and against the CLAUDE.md file. Fortunately it didn't have my SSH key or my ~/.m2/settings.xml. And .git is now mounted as read-only.

Claude respects nothing, especially in auto mode, and effectively behaves like a virus trying to get out of its sandbox. That Anthropic employees are so relaxed about it is incompetence.

Imagine people who naively run Claude natively on their host machine and have client lists in other directories.

▲iamflimflam1 21 hours ago | parent [-]

It’s not ideal for non technical people but the way to prevent this is to use hooks. “Telling” Claude is not going to work.

▲fg137 15 hours ago | parent | next [-]

It means Anthropic has massively failed at developing a trustworthy product.

If AGENTS.md/CLAUDE.md isn't followed, auto mode doesn't provide any guarantee, yet such practice is promoted everywhere including on HN like this as if that's something you can set and forget, I think there is a problem.

▲usewik 14 hours ago | parent [-]

It's trustworthy... most of the time. For 100% use hooks.

▲BikiniPrince 20 hours ago | parent | prev [-]

Memory files routinely overgrow their accessible size. Agents need constraint with contracts and external tooling. Even then they can attempt to cheat the tooling. Again task management with integrated logic will enforce behavior of agents.

▲senko 20 hours ago | parent | prev | next [-]

As a happy Claude Code user (thank you!), I’m genuinely curious why it prefers Bash or Python scripts to the Edit tool for editing a file? as a software engineer, surely the complexity involved is lower for the Edit tool?

Would love to hear the rationale/explanation behind this.

▲cannonpalms 16 hours ago | parent [-]

RL magic, I'm sure. It still reaches for the Edit tool for simple edits, but a non-trivial fraction of edits need to be repeated across a file or several files.

▲treyd 19 hours ago | parent | prev | next [-]

Yes I always have to tell it to knock it off, it will ignore memories about it while apologizing for ignoring the memory. I want to know what the edits it's making are.

▲pacoverdi 21 hours ago | parent | prev | next [-]

Unrelated, but I frequently tell Claude to use the Edit tool instead of bash/python scripts because it regularly times out for 2 minutes because of a mangled heredoc, extra character (-, \, ...) that causes the script to hang.

This instruction is in my toplevel CLAUDE.md but is somehow generally ignored.

▲gib444 20 hours ago | parent [-]

Which one uses more tokens? That might explain why it's ignored

▲pacoverdi 15 hours ago | parent [-]

Touché

▲imtringued 20 hours ago | parent | prev [-]

I don't use claude code but whenever codex uses a command to write code I do not get the diff of the patch for manual approval so I just straight up reject it.

▲bushbaba a day ago | parent | prev | next [-]

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 21 hours ago | parent | next [-]

I run it in bwrap so, even if I'm running on Linux, I don't pay the cost of some layered file system and building the docker image. I mount some directories read only, the project repos read write. A VM would provide more isolation but it's a matter of tradeoffs.

BTW, I just checked and my .gitignore files ignore .claude

Claude and any other program in my laptop could upload it anyway to any attacker controlled server. It's the usual threat analysis: who you want to defend against, what and the tradeoffs between cost of the defense and probability of the attack. Auto mode of not auto mode is in the cost of defense part IMHO.

▲rstuart4133 20 hours ago | parent [-]

I’m kinda surprised Anthropic doesn’t do this by default. Asking permission meant what felt like near-constant manual intervention. It almost made a joke of the agentic claim. It also became mostly useless, as the size and complexity of the scripts meant a brief scan wasn’t likely to find anything anyway. Yet they persisted with it for so long.

The sandbox seemed like a good replacement. For those of you who don’t know, the sandbox means Claude Code runs with no protections itself, but it runs tools inside something like bubblewrap. It looked impressive until the model solved some commands failing by giving itself permission to run them outside of bubblewrap, defeating the entire scheme. When I first saw it do that, my reaction was “you can’t be serious”. But apparently they were.

So now I’ve adopted your solution: run it in a container, like bubblewrap, where I control the permissions at startup, so no model can bypass them. Add --dangerously-skip-permissions and you have something that’s workable and safe enough. A hallucinated space in `sudo rm -rf / $R` isn’t a disaster. Real damage outside of the project requires a level of malicious intent I’ve never seen from an Anthropic model.

Workable, but it doesn’t work 100% of the time. Claude Code stores stuff in a myriad of places, which makes setting up the sandbox far harder than it could be. Worse, the way it writes configuration files requires bwrap to give write access to your entire home directory. No way I’m giving it that, but without it, it can’t auto-update or refresh login tokens.

If they rearranged a few things, Anthropic could make it much easier to run Claude Code in a container. They could even make it an option supported by the claude CLI itself.

▲nly 18 hours ago | parent | prev | next [-]

This is exactly how my employer runs Claude. It gets r/w to the cwd and read only access to a bunch of whitelisted nfs. All web access goes through a proxy where internal resources are whitelisted

▲bushbaba 13 hours ago | parent [-]

Proxy also lets you bootstrap auth tokens at proxy layer without giving clause access to the auth identity. Greatly limiting the exfil risk.

▲user43928 17 hours ago | parent | prev | next [-]

More than 10 million developers use Claude just fine without VMs or proxies.

The approach is hardly insane, even if you personally prefer additional safeguards.

▲soon_to_be_sb 17 hours ago | parent [-]

10 millions developers doing something stupid does not make it right!

▲user43928 16 hours ago | parent [-]

It's not stupid if it works and the supposed insane risk never manifests.

▲soon_to_be_sb 16 hours ago | parent | next [-]

Imagine that I am working at the AI company, and my friend has some bone to pick with you. My friend asks me to ask your AI agent to put some unsafe photographs/videos in your computer and do what ever necessary so that it looks like you put those files there.

Then my friends tips off the cops. And your life disappears! Gone!

And you didn't get a chance to share your story because I don't think you ll have wifi where you would be going, and frankly you are too clueless to imagine your AI agent doing something like that...

▲grumple 16 hours ago | parent | prev [-]

Tell that to everyone whose agents posted their secrets to GitHub.

▲exe34 a day ago | parent | prev [-]

Hah, I normally run it in a docker container myself, and only mount the project directory. Anything else it needs, I copy in for it, or occasionally I'll ask it to write an rsync.sh that I can run to bring in the stuff from outside.

▲npunt a day ago | parent | prev | next [-]

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.

▲fg137 15 hours ago | parent | prev | next [-]

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.

▲xstas1 11 hours ago | parent | prev | next [-]

> dependent on Claude to do literally anything.

That's a feature not a bug

▲maddie0 a day ago | parent | prev [-]

[flagged]

▲vasco a day ago | parent [-]

Why would what you write in a random comment section represent anyone else? Are you that afraid of lawsuits you can't even comment online?

▲exe34 a day ago | parent [-]

Corporstions will use anything they can against you, either for profit or someone's ego.

▲vasco 20 hours ago | parent [-]

Next tell me why it's important to write "I'm not a lawyer" as well won't you.

▲exe34 16 hours ago | parent [-]

It's to help people realise that your advice might be wrong and they won't have any recourse against you for reparations - but in many jurisdictions, it's actually illegal to give legal advice if you're not registered e.g. regarding immigration.

▲80fj0348i a day ago | parent | prev | next [-]

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 a day ago | parent | next [-]

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 a day ago | parent | next [-]

For some reason claude code hates using the read/write/grep tools and defaults to complex sed, awk, grep Bash:* runs which results in always consistently ignoring auto mode due to the classifier not knowing what to do with a 10-line long bash pipe instead of a read + pre/post read and write hooks being ignored and not firing, what is up with that?

▲awfulneutral a day ago | parent | next [-]

I don't understand this either, it makes commands really hard to parse. It seems like 90% of what claude does could be going through some mcp tool that could be easily sandboxed instead of bash gibberish.

▲kay_o a day ago | parent [-]

If it was human approval ? Read("./file.name") then Bash("docker compose run unit-tests"), sure, I can read that fine !

As I was reading your post I got another approval request that auto-mode did not understand. It was a single Bash call !!23!! lines tall on a retina mac display with six different variables. If anything this is the cause of approval fatigue and auto mode does nothing helpful when this is every call. I also have in my claude.md and global instructions to use tool calls rather than bash grep/cat/find, which are disregarded.

▲awfulneutral a day ago | parent | next [-]

Yeah I agree, I didn't used to feel approval fatigue but lately the huge bash chains are giving it to me. I haven't even tried auto mode. I'm just sure it has some definition of "safe" that does not align with my own.

▲kay_o a day ago | parent [-]

I'm not sure when claude started preferring huge bash chains but auto mode tends to decline most of them and drop to a permission prompt -- getting rid of the use of auto mode -- because it refuses to handle anything chained with expansions, variables or similar items

▲ a day ago | parent | prev [-]
[deleted]
▲dcrazy a day ago | parent | prev [-]

I use a hook to deny attempts to invoke `grep /` and `find /`, even as part of a complex pipeline.

▲awfulneutral a day ago | parent [-]

I had claude write a hook to deny `find /`. It tested it thoroughly. Much later I learned that the hook denied `find /` but allowed everything else that existing permissions denied, like running whatever random python/bash code it wanted without asking.

▲written-beyond a day ago | parent | prev [-]

Auto mode really easily gaslights itself when it runs into a roadblock and starts deviating so far away from its intended goal that I don't let automode run without me reading what it's actually trying.

I frequently hit stop on and auto mode task to prevent it from completely flooding my context with some completely unrelated garbage.

Claude really should push away tasks that end up needing more exploration in worker contexts. That way the workers can maintain a sensible amount of context without pushing the main chat into the dumb region.

▲skeledrew a day ago | parent [-]

You should note that auto-mode is handled by a different session (and likely model) from your actual. There's no road block or deviation or context flooding; all it does is monitor the model actually doing the work and block it from potentially problematic actions (which you can usually override by saying you explicitly give permission for X), nothing more.

▲bulder a day ago | parent [-]

The context pollution happens when a denial triggers but the model still keeps attempting the harmful action via alternative avenues. It's got nothing to do with the auto-mode eval model's actual output.

▲skeledrew 16 hours ago | parent [-]

I have never seen that happen before. What I see is a mention that the classifier stopped it from doing X and it then asks for explicit permission or gives me the command to run myself.

▲bscannedinc an hour ago | parent | prev | next [-]

[flagged]

▲rsynnott 19 hours ago | parent | prev [-]

> 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.

▲80fj0348i 11 hours ago | parent [-]

When the data in question has absolutely zero sensitive content or customer data and goes through a query CLI with guardrails against excessively large queries? Yeah that's fine.

▲doginasuit a day ago | parent | prev | next [-]

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.

▲ a day ago | parent | next [-]
[deleted]
▲thatsabadlook a day ago | parent | prev | next [-]

It's the anthropic way lol. "Working as designed"

▲Rapzid 17 hours ago | parent [-]

All issues have already been fixed.

No?

All issues will be fixed today.

No?

It's early days, the models will improve and fix all issues.

▲thatsabadlook 15 hours ago | parent [-]

We are: at the point where agi has been achieved so if you haven't bought into it you must do so.

If you have bought it and have problems you aren't spending enough in it to fix them.

Then finally, if you did spend enough money, you really haven't, but the problems you have are not anthropics problems even when they are. Spend more money and do free advertising for the company anyways.

▲wyager a day ago | parent | prev [-]

Committing `.claude` is at least as dumb as committing `.keys`, so I don't think this is really in-scope

▲doginasuit a day ago | parent | next [-]

If you know it's there. It gets created on the fly when it is needed, so unless you know that is possible and needs to be gitignored, it could easily slip by.

▲thenewnewguy a day ago | parent | next [-]

Do you not review before committing/pushing?

▲DrewADesign a day ago | parent | next [-]

Saying a professional software developer is responsible for not committing secrets is reasonable. That said, these tool chains all seem to condition developers to offload much of that diligence to the tooling itself, which makes catching mistakes harder because you’re not as used to scanning for them. Secrets files have always been foot guns, and with automation-borne complacence, and vibe coders that don’t understand the problem, I imagine these things will become even more common.

▲komali2 a day ago | parent [-]

[dead]

▲doginasuit a day ago | parent | prev | next [-]

This did not impact me. But if using a tool means that secrets can randomly appear in my project, then I am using the wrong tool.

▲ozozozd a day ago | parent [-]

Correct stance.

Why would you use a tool that creates tedious and dangerous work for you?

“Oh you are just supposed to make up for Claude’s errors, and problem solved!”

▲SV_BubbleTime a day ago | parent | prev [-]

Oh no, I moved all that manual tedious boring loser mentality stuff to the agent. Now Claude does it for me, and no strangely enough Claude didn’t tell me there was a problem!

▲weird-eye-issue a day ago | parent [-]

In these cases they probably just blindly committed everything themselves, if you asked Claude to review the uncommitted changes and do the commit itself it probably would have flagged this.

▲fwip a day ago | parent [-]

> 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.

What do you make of that part of the article?

▲weird-eye-issue 21 hours ago | parent [-]

Like I said in my comment that you replied to they likely flagged it and then the user just told it to continue anyways.

▲post-it a day ago | parent | prev | next [-]

It's gitignored by default.

▲TheRoque a day ago | parent [-]

The default of who or what ? Git ignore is empty "by default", inexistant even

▲post-it a day ago | parent [-]

When Claude generates the file, it also generates a .gitignore for it or fills in the existing one.

▲doginasuit 19 hours ago | parent [-]

If this is the intended behavior, a quick search of github and the article's findings seem to suggest it doesn't work.

▲SoftTalker a day ago | parent | prev [-]

So you just routinely commit everything in the project, without looking at what it is?

▲Gigachad a day ago | parent [-]

My coworkers seem to

▲sothatsit 21 hours ago | parent | prev | next [-]

It is only the .local files within .claude that can't be committed. We have .claude committed in multiple repos to include repo-specific skills/hooks/permissions.

▲ozozozd a day ago | parent | prev | next [-]

Hmm.

Dumb if you don’t turn on auto-mode, dumb if auto-mode commits .claude.

No way to hold it right I guess?

▲Hizonner a day ago | parent | prev [-]

If you have stuff in your tree that's not part of your project's code, you're already dumb.

If it's keys or secrets of any kind, you're even dumber.

If it's in a hidden directory, you are even dumber still.

If you rely on somebody stupid enough to do any of that not to commit it, you have gone beyond the valley of the ultra-dumb. Actually that's true even if you rely on smart people not to do it.

You got your dumb card fully punched when you created `.keys` to begin with.

▲cerved a day ago | parent | prev | next [-]

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 15 hours ago | parent | next [-]

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 a day ago | parent | prev [-]

> and teach Claude to not git add .

It already doesn't do this. This is from users committing the `.claude` directory themselves.

▲tomrod 14 hours ago | parent | prev | next [-]

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.

▲ a day ago | parent | prev | next [-]
[deleted]
▲ a day ago | parent | prev | next [-]
[deleted]
▲BikiniPrince a day ago | parent | prev | next [-]

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 a day ago | parent | prev | next [-]

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.

▲nikolay 18 hours ago | parent | prev | next [-]

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.

▲adastra22 a day ago | parent | prev | next [-]

> 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.

▲agentdev001 a day ago | parent | prev | next [-]

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 a day ago | parent [-]

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 a day ago | parent [-]

I'm not a CC user myself, so I can't say that I have my head wrapped around exactly how the "yes + don't ask again" flow works. That said- from my (outsider) perspective, saving off the entire tool call [1] and its arguments is very weird. I would expect that the hit-rate following that for similar calls would be very small, which leads me to believe that the list either must be seeded into the auto-reviewer's context, or used in some other similarity-check engine for future calls.

If we've already crossed the bridge to being confident in a non-deterministic reviewer for auto-mode, then, I see no obvious reason as to why we couldn't have the proposed rules be generated by a model. If that were reality, then- all rules placed in settings.local could be secretless, with the confidence of whatever model we tell 'make sure the rule does not contain secret material, consider its destination as potentially public'.

[1] https://code.claude.com/docs/en/permissions#wildcard-pattern... AFAICT, CC will either save off a prefix+wildcard rule, or exact command. Sounds like the former is likely not the cause of the problem here.

▲skeledrew a day ago | parent [-]

If a given action requires a secret, and you'd like that action to be repeated in the future, how do you expect it to work without said secret included in the save (and without being entangled in secrets management tools)?

▲agentdev001 a day ago | parent [-]

Yea good point- constraint of no secrets management tooling kinda makes this impossible. Ideally no action requires a secret in plain text. It would be neat if the harness could bundle its own secret manager, and requests for secrets ("hey I need this api token") are out of band, and placed in the store out of sight of the agent.

Otherwise you need a broker that can verify chain of trust for the workload, but that's significantly more complexity if you're pitching a harness/app.

▲justinclift a day ago | parent | prev | next [-]

> 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.

▲ a day ago | parent | prev | next [-]
[deleted]
▲lwowowx 18 hours ago | parent | prev | next [-]

Isn’t the simple answer shipping a local secret manager with Claude code?

▲bscannedinc 2 hours ago | parent [-]

[flagged]

▲toppa33 a day ago | parent | prev | next [-]

A bit careless but mostly a bad default. One click shouldn't put passwords in files people commit. Anthropic should fix it.

▲bobthegoggles a day ago | parent | prev | next [-]

Wouldn’t it make more sense to put in the user app data directory?

▲ a day ago | parent | prev | next [-]
[deleted]
▲OtomotO 14 hours ago | parent | prev | next [-]

> 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.

▲01CPMD3174 10 hours ago | parent | prev | next [-]

01CPMD3174 former Claude Code customer here.

I’m wondering if it’s just me or does this response sound like it’s coming from someone who is out of touch with the reality of how people are using their product and instead of being empathetic, curious, and helpful is telling people in so many words it’s not our fault, you’re doing it wrong and “everyone” should be doing it the “right” way, which is how we do it.

I know it might come as a shock but not everyone who uses product has read the docs.

Also there is arguably nothing about using AI harnesses that’s “old hat” The technology came on the mainstream radar this year. Most people who use harnesses are still figuring out how to use them. And the rest of humanity probably doesn’t even know what the terms means.

Rather than telling everyone how they got it wrong, maybe next time you can elaborate on something like what “we are looking into what we can do to prevent this” means.

For the record, besides finding Claude overzealous and Anthropic’s usage limits relatively stingy (at least back in April when I dropped them), it was the arrogance of Anthropic’s staff and their public pontificating that led me to rolling with Codex, Gemini, and Qwen as my model stack.

You have to wonder how much of the AI backlash is driven by people not feeling how industry insiders communicate with them.

Anyways, we need good homegrown AI solutions. So, I’m hoping Anthropic follows through on helping prevent future incidents. And the other labs are paying attention so their leadership aren’t the next ones on HN playing defense when their products get called out.

▲JohnMakin a day ago | parent | prev | next [-]

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 a day ago | parent [-]

> 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 21 hours ago | parent [-]

and we can disable those for better alternatives. npm executes arbitrary code based on what the package said, obviously bad

claude unleashed on an organization is a whole other beast.

▲Creamsicle47 20 hours ago | parent | prev | next [-]

Coding is solved. Bugs not solved yet. Fix incoming

▲de-moray 20 hours ago | parent | prev | next [-]

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.

▲sensanaty a day ago | parent | prev | next [-]

> 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 19 hours ago | parent [-]

Shouldn't even need to ask; the Basilisk should simply realise the problem by itself.

▲pseufaux 14 hours ago | parent | prev | next [-]

I guess "you're holding it wrong" is a PR strategy now.

▲ykurtov 12 hours ago | parent | prev | next [-]

Aren’t you guys going to be one of the only two software developers employees in the nearest future? And autogenerate all software?

Then you can have it your way :))

▲8note 8 hours ago | parent | prev | next [-]

do you have a count on how many times claude has committed that file?

i bet most of the commited ones were done by claude because nobody else us gonna care to make it

▲knockoff a day ago | parent | prev | next [-]

Can we take your responses here to represent your employer's position on this issue?

▲jacquesm a day ago | parent | next [-]

No, they're just an agent of their employer, the employer is responsible.

▲pastel8739 a day ago | parent | prev [-]

Boris is the "Head of Claude Code", so I think we can do so, yes

▲Uptrenda a day ago | parent | prev | next [-]

You guys need a pr team. All the communicate from anthropic seems to screw itself somehow...

▲stogot a day ago | parent | prev | next [-]

$19/user/month for secret scrubbing? What a rip off

Use this instead for free https://github.com/awslabs/git-secrets

▲ThePowerOfFuet 18 hours ago | parent | prev | next [-]

> 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.

▲pastel8739 a day ago | parent | prev | next [-]

> 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)

▲dools a day ago | parent | prev | next [-]

So ... coding is solved but managing your git repo is not solved?

▲sudondream 20 hours ago | parent | prev | next [-]

Great advice, hope it gets to more people

▲an0malous a day ago | parent | prev | next [-]

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 a day ago | parent | prev | next [-]

> 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.

▲Hizonner a day ago | parent | prev | next [-]

> .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 a day ago | parent | prev | next [-]

Can secret scanning be enabled by default?

▲proxyscore 19 hours ago | parent | prev | next [-]

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 15 hours ago | parent [-]

I disagree. "Old hat" here is an adjective meaning old-fashioned, not a noun requiring an article.

▲prmph 17 hours ago | parent | prev | next [-]

> 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 a day ago | parent | prev | next [-]

Man. I'd prefer talking to Claude. He wrote the code.

▲mgii a day ago | parent | prev | next [-]

[flagged]

▲vsri a day ago | parent | prev | next [-]

[flagged]

▲poopiokaka a day ago | parent | prev | next [-]

[dead]

▲shift8 21 hours ago | parent | prev | next [-]

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.

▲mococa a day ago | parent | prev | next [-]

[flagged]

▲dang a day ago | parent [-]

Please make your substantive points thoughtfully and don't cross into name-calling and haranguing.

When knowledgeable people show up to address concerns on HN, that's good for all of us. We don't need you to like or agree with what they say, but we do need you to follow HN's guidelines.

Threads like this can easily turn into mob dynamics—it has happened before—and when they do, that's bad for all of us.

https://news.ycombinator.com/newsguidelines.html

▲ a day ago | parent [-]
[deleted]
▲deadbunny a day ago | parent | prev [-]

[flagged]

▲dang a day ago | parent [-]

"Please respond to the strongest plausible interpretation of what someone says, not a weaker one that's easier to criticize. Assume good faith."

https://news.ycombinator.com/newsguidelines.html