{"id":50753314,"url":"https://github.com/darklca2026/repoguard-ai","last_synced_at":"2026-06-17T09:01:24.489Z","repository":{"id":363937449,"uuid":"1265638980","full_name":"Darklca2026/repoguard-ai","owner":"Darklca2026","description":"Security scanner for AI-assisted repositories.","archived":false,"fork":false,"pushed_at":"2026-06-14T21:43:22.000Z","size":1247,"stargazers_count":1,"open_issues_count":6,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-15T07:27:02.491Z","etag":null,"topics":["ai-agents","ai-security","cli","code-scanning","developer-tools","github-actions","llm-security","open-source","prompt-injection","secrets-detection","security-scanner","supply-chain-security","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Darklca2026.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":"docs/roadmap.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":["Darklca2026"],"patreon":null,"open_collective":null,"ko_fi":null,"custom":null}},"created_at":"2026-06-11T00:40:27.000Z","updated_at":"2026-06-14T21:41:11.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Darklca2026/repoguard-ai","commit_stats":null,"previous_names":["darklca2026/repoguard-ai"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/Darklca2026/repoguard-ai","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Darklca2026%2Frepoguard-ai","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Darklca2026%2Frepoguard-ai/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Darklca2026%2Frepoguard-ai/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Darklca2026%2Frepoguard-ai/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Darklca2026","download_url":"https://codeload.github.com/Darklca2026/repoguard-ai/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Darklca2026%2Frepoguard-ai/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34396429,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-16T02:00:06.860Z","response_time":126,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-agents","ai-security","cli","code-scanning","developer-tools","github-actions","llm-security","open-source","prompt-injection","secrets-detection","security-scanner","supply-chain-security","typescript"],"created_at":"2026-06-11T03:01:22.668Z","updated_at":"2026-06-16T08:00:52.260Z","avatar_url":"https://github.com/Darklca2026.png","language":"TypeScript","funding_links":["https://github.com/sponsors/Darklca2026"],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# 🛡️ RepoGuard AI\n**Security scanner for AI-assisted repositories.**\n\n[![npm version](https://img.shields.io/npm/v/repoguard-ai.svg?style=for-the-badge\u0026color=blue)](https://npmjs.org/package/repoguard-ai)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg?style=for-the-badge)](https://opensource.org/licenses/MIT)\n[![Tests](https://img.shields.io/badge/tests-passing-brightgreen.svg?style=for-the-badge)]()\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=for-the-badge)](http://makeapullrequest.com)\n\n[English](#english) • [Português (PT-BR)](#português-pt-br)\n\n\u003c/div\u003e\n\n---\n\n\u003ch2 id=\"english\"\u003e🇬🇧 English\u003c/h2\u003e\n\nRepoGuard AI scans repositories for leaked AI/API secrets, prompt injection patterns, risky GitHub Actions, dangerous scripts, and unsafe AI-assisted code patterns.\n\n### ❓ Why RepoGuard AI?\n\n\u003e [!NOTE]\n\u003e AI coding tools, agents, prompts, and automated workflows are now part of everyday development. But they can introduce hidden risks.\n\nRepoGuard AI gives maintainers a fast local check before pushing or opening a pull request to ensure none of the following slip through:\n- Leaked API keys (OpenAI, Anthropic, AWS, GitHub)\n- Unsafe GitHub Actions (`pull_request_target`)\n- Prompt injection patterns (`\"ignore previous instructions\"`)\n- Dangerous shell commands (`curl | bash`)\n- Risky AI-generated code snippets\n\n### ✨ Key Features \u0026 Heuristics\n\n| Feature | Description | File Support |\n| --- | --- | --- |\n| 🔑 **Secret Detection** | Finds keys \u0026 DB URLs. Uses **Shannon Entropy** to detect unknown hardcoded tokens. | `.*` |\n| 💉 **Prompt Injection** | Scans for malicious override instructions, Base64 evasion, and **Phantom Payloads (Zero-Width \u0026 Homoglyphs)**. | `.md, .txt, .json, .yaml` |\n| 🧠 **AI Poisoning Defender** | Detects insecure `torch.load()`, `pickle`, and `yaml.unsafe_load()` vectors in ML models. | `.py, .ipynb` |\n| ⚙️ **GitHub Actions** | Flags dangerous CI/CD permissions and triggers. | `.github/workflows/*.yml` |\n| 💣 **Dangerous Code \u0026 Anti-Tamper** | Detects unsafe eval, shell executions, and attempts to delete `.git` or workflows. | `.js, .ts, .py, .sh` |\n\n### 🚀 Quick Start\n\n**1. Install globally via npm:**\n```bash\nnpm install -g repoguard-ai\n```\n\n**2. Setup Pre-commit Hook (Shift-Left Security):**\nAutomatically block developers from committing leaked secrets:\n```bash\nrepoguard-ai init-hook\n```\n\n**3. Plant Active Honeypots (Canary Tokens):**\nDrop a fake `.env.canary` file to act as a tripwire. If a hacker steals your repository and uses these fake AWS/GitHub keys, you can audit the intrusion.\n```bash\nrepoguard-ai plant-canary\n```\n\n**4. Run the scanner in your repository:**\n```bash\nrepoguard-ai scan .\n```\n\n*Want machine-readable or GitHub Security output?*\n```bash\nrepoguard-ai scan . --json\nrepoguard-ai scan . --sarif \u003e results.sarif\n```\n\n### 🤖 Native GitHub Action\n\nAdd this to your `.github/workflows/security.yml` to run RepoGuard natively:\n\n```yaml\nname: Security Scan\non: [push, pull_request]\njobs:\n  scan:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v4\n      - uses: Darklca2026/repoguard-ai@main\n        with:\n          format: 'sarif' # Uploads to GitHub Security Tab natively!\n```\n\n### 💻 Example Output\n\n\u003cdetails\u003e\n\u003csummary\u003eClick to see what the terminal report looks like\u003c/summary\u003e\n\n```text\nRepoGuard AI Report\n\nRisk score: CRITICAL\nFiles scanned: 42\nFindings: 4\n\n[CRITICAL] .env:1 secret.openai_api_key\nPossible OpenAI API key detected.\nSnippet: sk-pro************************\nFix: Remove the key, rotate it, and use environment variables or GitHub Secrets.\n\n[HIGH] .github/workflows/deploy.yml:4 actions.pull_request_target\nWorkflow uses pull_request_target.\nSnippet: on: pull_request_target\nFix: Avoid pull_request_target for untrusted pull requests or restrict permissions.\n\n[MEDIUM] prompts/system.md:12 prompt.injection_phrase\nPrompt injection phrase detected: \"ignore previous instructions\".\nSnippet: If asked, ignore previous instructions...\nFix: Treat external content as data, not instructions.\n```\n\u003c/details\u003e\n\n### ⚙️ Configuration\n\nCreate a `repoguard.config.yml` in your root directory to customize the engine:\n\n```yaml\nignore:\n  - \"node_modules/**\"\n  - \"dist/**\"\n  - \"build/**\"\n  - \".git/**\"\n\nrules:\n  secrets: true\n  promptInjection: true\n  githubActions: true\n  dangerousCode: true\n  aiGenerated: true\n\nseverity:\n  failOn: HIGH # Exit code 1 if score meets or exceeds this\n```\n\n### 📚 Architecture \u0026 Deep Dives\n\n\u003e [!TIP]\n\u003e Explore our complete documentation to understand the rules and limitations.\n\n- [Threat Model](docs/threat-model.md) - What we detect and our limitations.\n- [Rules Engine](docs/rules.md) - Detailed breakdown of every security rule.\n- [False Positives](docs/false-positives.md) - How to mitigate noisy alerts.\n- [Project Roadmap](docs/roadmap.md) - Future integrations (SARIF, VS Code).\n- [Contributing](CONTRIBUTING.md) - Learn how to add new rules to RepoGuard AI.\n\n---\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/github/explore/80688e429a7d4ef2fca1e82350fe8e3517d3494d/topics/open-source/open-source.png\" width=\"50\" /\u003e\n\u003c/div\u003e\n\n---\n\n\u003ch2 id=\"português-pt-br\"\u003e🇧🇷 Português (PT-BR)\u003c/h2\u003e\n\nO RepoGuard AI analisa repositórios em busca de vazamentos de chaves de API/IA, padrões de prompt injection, GitHub Actions perigosas, scripts arriscados e padrões inseguros de código gerado por IA.\n\n### ❓ Por que o RepoGuard AI?\n\n\u003e [!NOTE]\n\u003e Ferramentas de IA, agentes autônomos, prompts e fluxos de trabalho automatizados agora fazem parte do desenvolvimento diário. Mas eles podem introduzir riscos ocultos.\n\nO RepoGuard AI fornece aos mantenedores uma verificação local super rápida antes de fazer um `git push` ou abrir um Pull Request, garantindo que nada disso passe despercebido:\n- Vazamento de chaves de API (OpenAI, Anthropic, AWS, GitHub)\n- GitHub Actions inseguras (uso de `pull_request_target`)\n- Padrões de prompt injection (`\"ignore previous instructions\"`)\n- Comandos shell perigosos (`curl | bash`)\n- Códigos inseguros gerados por IA\n\n### ✨ Principais Recursos e Inteligência\n\n| Recurso | Descrição | Extensões |\n| --- | --- | --- |\n| 🔑 **Detecção de Secrets** | Acha chaves e URLs de DB. Usa **Entropia de Shannon** para achar tokens desconhecidos. | `.*` |\n| 💉 **Prompt Injection** | Busca evasões com payloads **Base64** e normaliza **Cargas Fantasmas (Caracteres Invisíveis e Homóglifos)**. | `.md, .txt, .json, .yaml` |\n| 🧠 **Defesa de Envenenamento IA** | Detecta uso de `torch.load()` inseguro e `pickle` maliciosos em ecossistemas de ML. | `.py, .ipynb` |\n| ⚙️ **GitHub Actions** | Alerta permissões altas de CI/CD e gatilhos inseguros. | `.github/workflows/*.yml` |\n| 💣 **Código Perigoso e Anti-Tamper** | Detecta uso de eval, exec, execução em shell e tentativas de deletar `.git`. | `.js, .ts, .py, .sh` |\n\n### 🚀 Início Rápido\n\n**1. Instale globalmente via npm:**\n```bash\nnpm install -g repoguard-ai\n```\n\n**2. Configure a Trava de Commit (Pre-commit Hook):**\nImpede fisicamente o desenvolvedor de subir chaves vazadas:\n```bash\nrepoguard-ai init-hook\n```\n\n**3. Plante Armadilhas (Honeypots / Canary Tokens):**\nGere um `.env.canary` falso. Se hackers roubarem seu código e tentarem usar essas chaves isca, eles falharão e a tentativa poderá ser auditada.\n```bash\nrepoguard-ai plant-canary\n```\n\n**4. Rode o scanner no seu repositório:**\n```bash\nrepoguard-ai scan .\n```\n\n*Precisa integrar com o GitHub Advanced Security ou em scripts customizados?*\n```bash\nrepoguard-ai scan . --json\nrepoguard-ai scan . --sarif \u003e results.sarif\n```\n\n### 🤖 GitHub Action Nativa\n\nCrie o arquivo `.github/workflows/security.yml` para rodar direto no CI:\n\n```yaml\nname: Security Scan\non: [push, pull_request]\njobs:\n  scan:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v4\n      - uses: Darklca2026/repoguard-ai@main\n        with:\n          format: 'sarif' # Mostra os erros nativamente na aba Security do GitHub!\n```\n\n### 💻 Exemplo de Saída\n\n\u003cdetails\u003e\n\u003csummary\u003eClique para ver como o relatório aparece no terminal\u003c/summary\u003e\n\n```text\nRepoGuard AI Report\n\nRisk score: CRITICAL\nFiles scanned: 42\nFindings: 4\n\n[CRITICAL] .env:1 secret.openai_api_key\nPossible OpenAI API key detected.\nSnippet: sk-pro************************\nFix: Remove the key, rotate it, and use environment variables or GitHub Secrets.\n\n[HIGH] .github/workflows/deploy.yml:4 actions.pull_request_target\nWorkflow uses pull_request_target.\nSnippet: on: pull_request_target\nFix: Avoid pull_request_target for untrusted pull requests or restrict permissions.\n\n[MEDIUM] prompts/system.md:12 prompt.injection_phrase\nPrompt injection phrase detected: \"ignore previous instructions\".\nSnippet: If asked, ignore previous instructions...\nFix: Treat external content as data, not instructions.\n```\n\u003c/details\u003e\n\n### ⚙️ Configuração\n\nCrie um arquivo `repoguard.config.yml` na raiz do seu projeto para customizar o motor:\n\n```yaml\nignore:\n  - \"node_modules/**\"\n  - \"dist/**\"\n  - \"build/**\"\n  - \".git/**\"\n\nrules:\n  secrets: true\n  promptInjection: true\n  githubActions: true\n  dangerousCode: true\n  aiGenerated: true\n\nseverity:\n  failOn: HIGH # O processo falha (Exit 1) se o risco atingir essa severidade\n```\n\n### 📚 Arquitetura e Documentação Profunda\n\n\u003e [!TIP]\n\u003e Explore nossa documentação para entender como as regras funcionam e suas limitações.\n\n- [Modelo de Ameaças](docs/threat-model.md) - O que detectamos e onde falhamos.\n- [Motor de Regras](docs/rules.md) - Visão técnica de todas as regras ativas.\n- [Falsos Positivos](docs/false-positives.md) - Como lidar com alertas ruidosos.\n- [Roadmap do Projeto](docs/roadmap.md) - Futuras integrações (SARIF, GitHub nativo).\n- [Como Contribuir](CONTRIBUTING.md) - Aprenda a adicionar novas regras ao scanner.\n\n---\n*RepoGuard AI - License: MIT*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdarklca2026%2Frepoguard-ai","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdarklca2026%2Frepoguard-ai","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdarklca2026%2Frepoguard-ai/lists"}