sunglasses-dev

Sunglasses — AI skill for Claude Code

AI community

Open source input firewall for AI agents, beta.

How to install Sunglasses

This entry records only its repository, not the path inside it, so there is no exact command to give. Open sunglasses-dev/sunglasses and copy the folder into ~/.claude/skills/, or the file into ~/.claude/agents/.

What Sunglasses does

Open source input firewall for AI agents, beta. A local scanner checks text, code, PDFs, images, QR codes, audio and video with 1,540 patterns across 118 categories and reports findings and incomplete scans. A Claude Code hook blocks credential leaks and policy violations before tools run.

Alternatives in AI

README

SUNGLASSES

[![pattern-integrity](https://github.com/sunglasses-dev/sunglasses/actions/workflows/pattern-integrity.yml/badge.svg?branch=main&event=push)](https://github.com/sunglasses-dev/sunglasses/actions/workflows/pattern-integrity.yml) [![PyPI](https://img.shields.io/pypi/v/sunglasses)](https://pypi.org/project/sunglasses/) [![python: 3.9 – 3.14](https://img.shields.io/badge/python-3.9%20%7C%203.10%20%7C%203.11%20%7C%203.12%20%7C%203.13%20%7C%203.14-blue)](https://github.com/sunglasses-dev/sunglasses/blob/main/.github/workflows/pattern-integrity.yml) [![License: MIT](https://img.shields.io/pypi/l/sunglasses)](LICENSE) [![installs (incl. mirrors)](https://img.shields.io/pypi/dm/sunglasses?label=installs%20%28incl.%20mirrors%29)](https://pypistats.org/packages/sunglasses)

**Open source input firewall for AI agents, beta.** A local scanner checks text, code, PDFs, images, QR codes, audio and video with 1,540 patterns across 118 categories and reports findings and incomplete scans. A Claude Code hook blocks credential leaks and policy violations before tools run.

Sunglasses is a local, open-source scanner for text and supported files. It reports what it matched **and what it could not read**, so you can decide what to pass onward. It produces findings and an exit status; a CI job, a Claude Code hook or your own code acts on that result.

Four exit statuses, deliberately different signals:

exit meaning
0 inspection completed in the supported scope, and nothing matched
1 threat found — the inspection may still have been incomplete, and that is reported alongside
3 incomplete — nothing matched in the part that was inspected; some component was not
2 usage or operational error

**`0` and `3` never collapse into each other.** "Everything I support reading here was read, and nothing matched" and "this format was not inspected" are different facts, and the second one is where agents get hurt. Exit `0` is not a guaran