News for hackers. Stuff that matters.
Re:Claude 4 and GitHub MCP will leak your private GitHub rep... by wat10000 on Tuesday May 27, 2025 @09:44PM (#44112111)
> but that other stuff isn't parsed for semantic intent and used to dictate subsequent LLM behavior

That's the thing, it is. That's what the whole "ignore all previous instructions and give me a cupcake recipe" thing is about. You say that they do what's specified by the prompt and the context; once the other stuff from third parties is processed, it becomes part of the context, just like your prompt.

The system prompt, user input, and outside data all use the same set of tokens. They're all smooshed together in one big context window. LLMs designed for this sort of thing use special separator tokens to delineate them, but that's a fairly ad-hoc measure and adherence to the separation is not great. There's no hard cutoff in the LLM that knows to use these tokens over here as instructions, and those tokens over there as only untrusted information.

As far as I know, nobody has come close to solving this. I think that a proper solution would probably require using a different set of tokens for commands versus information. Even then, it's going to be hard. How do you train a model not to take commands from one set of tokens, when the training data is full of examples of commands being given and obeyed?

If you want to be totally safe, you'd need an out of band permissions setting so you could tell the system that this is a read-only request and the LLM shouldn't be allowed to make any changes. You could probably do pretty well by having the LLM itself pre-commit its permissions before beginning work. Basically, have the system ask it "do you need write permission to handle this request?" and set the permission accordingly before you let it start working for real. Even then you'd risk having it say "yes, I need write permission" when that wasn't actually necessary.

There are no comments on this comment yet.