An input inspection layer you invoke before your agent acts.
Sunglasses is an input inspection layer you invoke deliberately. Scan a file, a repo or a string. Let the Claude Code hook inspect tool calls before they run. Call the MCP server from your agent. It flags. It does not silently strip.
Local. No cloud. No API key. No telemetry. Your agent talks to Sunglasses over local stdio or in process Python calls.
Four decisions. Block, quarantine, allow redacted or allow.
Each scan returns exactly one decision.
A high severity attack matched. Stop and refuse.
Suspicious. Hold and surface for review before acting.
Proceed, but with the offending span removed/neutralized.
Clean. Proceed normally.
Wire it into YOUR stack
One filter. Many wiring options. Pick the page that matches the agent you use.
Claude Code / Claude Desktop
One command registers the local scan server. Then require a scan before Claude acts on untrusted files, web content or tool output.
Wire it up →Cursor, Cline, Windsurf & Zed
One canonical MCP setup for the VS Code family editors. Scan files, terminal output and web fetches before the agent acts.
Wire it up →OpenClaw
Register Sunglasses as a third party MCP server, then scan channel messages, tool results and handoffs before the runtime acts.
Wire it up →Warp terminal
Terminal output is a top attack surface. Route command results and repo files through the scan tool before the agent acts.
Wire it up →Hermes Agent
A pre read guard for unattended cycles. Scan inbox messages, web extracts and file reads before the agent makes a plan.
Wire it up →LangChain
The real SunglassesScanTool scan retrieved docs, tool output and user input at the boundary.
CrewAI
The real sunglasses_scan tool. Scan handoffs and tool results before the next agent acts.
Microsoft AutoGen
Scan group chat messages, task summaries and forged approvals before they reach the next agent.
Wire it up →OpenAI Agents SDK
Guard Runner.run() input and tool output with a local SunglassesEngine scan.
Custom Python agent
Drop engine.scan() in front of any LLM or tool call. The canonical route for any stack.
Same filter underneath. Different wiring based on your stack.
See it work in 3 seconds
No Python nearby? The online scan page runs the same three-way decision on whatever you paste.
Install Sunglasses and run the built in demo. 10 real attack scenarios get blocked with category + severity reported for each.
python3 -m venv sunglasses-env source sunglasses-env/bin/activate pip install sunglasses sunglasses demo
Windows. Replace source sunglasses-env/bin/activate with sunglasses-env\Scripts\activate.
FAQ
What is Sunglasses?+
How does Sunglasses work?+
engine.scan() first. The scan returns one of four decisions. Block, quarantine, allow_redacted or allow. Based on 1554 patterns across 118 categories. Scan latency is ~0.7ms on a short input, ~4ms on a typical attack string.What does Sunglasses detect?+
What agents does Sunglasses work with?+
Do I need an API key or cloud service?+
Is the filter mandatory or optional?+
SunglassesScanTool) and CrewAI (sunglasses_scan). Every other agent wires in over the MCP server or a direct SunglassesEngine().scan() call. Importing or registering makes scanning available. It becomes mandatory when your workflow requires the scan at each untrusted input boundary before the agent acts.