{"id":51118607,"url":"https://github.com/chaluvadis/safe-to-send","last_synced_at":"2026-06-25T00:01:00.615Z","repository":{"id":354361153,"uuid":"1218661920","full_name":"chaluvadis/safe-to-send","owner":"chaluvadis","description":"safe-to-send is a minimal VS Code extension to scan selected code (or full file) for sensitive data before copying for manual AI usage.","archived":false,"fork":false,"pushed_at":"2026-04-28T07:41:32.000Z","size":228,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-28T09:29:14.232Z","etag":null,"topics":["agent-skills","agents","ai","clipboard","security","sensitive-data","typescript","utilities","utility","vscode-extension"],"latest_commit_sha":null,"homepage":"https://marketplace.visualstudio.com/items?itemName=chaluvadis.safe-send","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/chaluvadis.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-23T05:07:54.000Z","updated_at":"2026-04-28T07:41:07.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/chaluvadis/safe-to-send","commit_stats":null,"previous_names":["chaluvadis/safe-to-send"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/chaluvadis/safe-to-send","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chaluvadis%2Fsafe-to-send","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chaluvadis%2Fsafe-to-send/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chaluvadis%2Fsafe-to-send/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chaluvadis%2Fsafe-to-send/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chaluvadis","download_url":"https://codeload.github.com/chaluvadis/safe-to-send/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chaluvadis%2Fsafe-to-send/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34753781,"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-24T02:00:07.484Z","response_time":106,"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":["agent-skills","agents","ai","clipboard","security","sensitive-data","typescript","utilities","utility","vscode-extension"],"created_at":"2026-06-25T00:00:59.073Z","updated_at":"2026-06-25T00:01:00.578Z","avatar_url":"https://github.com/chaluvadis.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Safe Send\n\n[![VS Code Extension](https://img.shields.io/badge/VS%20Code-Extension-007ACC?logo=visualstudiocode)](https://marketplace.visualstudio.com/items?itemName=nomad-in-code.safe-send)\n[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](https://opensource.org/licenses/MIT)\n\n**Safe Send** prevents accidental leakage of sensitive data when copying code to AI tools. It scans for secrets (API keys, passwords, tokens) and sanitizes them before they reach your clipboard.\n\n---\n\n## 🚀 Quick Start\n\n1. **Install** from VS Code Extensions (`Ctrl+Shift+X` → Search \"Safe Send\")\n2. **Select code** in your editor  \n3. **Right-click** → **\"Safe Send: Scan \u0026 Copy for AI\"**\n4. **Review results** → Copy safely!\n\n---\n\n## 🔍 What It Does\n\n### Detects 9 Types of Secrets\n\n| Type | Example | Replaced With |\n|------|---------|---------------|\n| OpenAI Keys | `sk-1234...` | `\u003cAPI_KEY\u003e` |\n| AWS Keys | `AKIA...` | `\u003cAWS_KEY\u003e` |\n| GitHub Tokens | `ghp_...` | `\u003cGITHUB_TOKEN\u003e` |\n| JWT Tokens | `eyJhbGc...` | `\u003cJWT_TOKEN\u003e` |\n| Private Keys | `-----BEGIN...` | `\u003cPRIVATE_KEY_BLOCK\u003e` |\n| IP Addresses | `192.168.1.1` | `\u003cIP_ADDRESS\u003e` |\n| Emails | `user@domain.com` | `\u003cEMAIL\u003e` |\n| Passwords | `password = \"secret\"` | `\u003cSECRET\u003e` |\n| Anthropic Keys | `sk-ant-...` | `\u003cANTHROPIC_API_KEY\u003e` |\n\n### Risk Levels\n\n- 🟢 **LOW** (0-29): No warning (emails, IPs)\n- 🟡 **MEDIUM** (30-59): Warning (passwords)\n- 🔴 **HIGH** (60-100): Warning (API keys, tokens)\n\n---\n\n## 💻 Usage Examples\n\n### Example 1: Clean Code → Auto Copy\n```javascript\n// Before: No secrets detected\nconst greeting = \"Hello World\";\n```\n✅ **Result**: Copied automatically (no warning)\n\n---\n\n### Example 2: Secret Detected → Warning\n```javascript\n// Before: Contains API key\nconst apiKey = \"sk-1234567890abcdef\";\n```\n⚠️ **Dialog appears**:\n- Risk: 60/100 (HIGH)\n- Detected: OpenAI API key\n- Options: **Sanitize \u0026 Copy** | Copy Anyway | Cancel\n\n✅ **After Sanitizing**:\n```javascript\nconst apiKey = \"\u003cAPI_KEY\u003e\";\n```\n\n---\n\n### Example 3: Multiple Secrets\n```javascript\n// Before: Multiple secrets\nconst config = {\n  apiKey: \"sk-1234567890\",\n  password: \"secret123\",\n  email: \"admin@company.com\"\n};\n```\n⚠️ **Risk**: 100/100 (HIGH - maximum)\n\n✅ **After**:\n```javascript\nconst config = {\n  apiKey: \"\u003cAPI_KEY\u003e\",\n  password: \"\u003cSECRET\u003e\",\n  email: \"\u003cEMAIL\u003e\"\n};\n```\n\n---\n\n## 📸 Screenshots\n\nSee **[SCREENSHOTS.md](SCREENSHOTS.md)** for visual examples of:\n\n1. ✅ Clean code copy (no secrets)\n2. ⚠️ Single secret warning\n3. ⚠️ Multiple secrets warning\n4. 🧼 Sanitized output\n5. 🔒 Status bar indicators\n6. ⚙️ Settings configuration\n7. 📋 Ignore for file feature\n8. 📋 Clipboard monitoring\n9. 📂 Path-based risk adjustment\n10. 🎨 Command palette access\n\n---\n\n## ⚙️ Configuration\n\n### Custom Patterns\n\nAdd your own detectors in VS Code Settings:\n\n```json\n{\n  \"safeSend.customPatterns\": [\n    {\n      \"id\": \"company_key\",\n      \"label\": \"Company Key\",\n      \"regex\": \"COMPANY_[A-Z0-9]{24}\",\n      \"placeholder\": \"\u003cCOMPANY_KEY\u003e\",\n      \"riskScore\": 60,\n      \"critical\": true\n    }\n  ]\n}\n```\n\n### Repository Config\n\nCreate `.safe-send.json` in your project:\n\n```json\n{\n  \"patterns\": [\n    {\n      \"id\": \"internal_token\",\n      \"label\": \"Internal Token\",\n      \"regex\": \"INTERNAL_[A-Z0-9]{32}\"\n    }\n  ]\n}\n```\n\n---\n\n## 🛠️ Commands\n\n| Command | Shortcut |\n|---------|----------|\n| Scan \u0026 Copy | `Ctrl+Shift+P` → \"Safe Send\" |\n| Context Menu | Right-click in editor |\n| Settings | `Ctrl+,` → Search \"Safe Send\" |\n\n---\n\n## 🔄 Clipboard Monitoring\n\nSafe Send automatically monitors your clipboard:\n\n- ✅ Scans every 200ms\n- ✅ Warns for MEDIUM/HIGH risk\n- ✅ Ignores LOW risk (emails, IPs)\n- ✅ Never blocks clipboard\n\n**Disable in Settings**: `safeSend.clipboard.monitor`\n\n---\n\n## 📊 Quality Metrics\n\n| Metric | Value |\n|--------|-------|\n| Tests Passing | 80/80 ✅ |\n| Test Coverage | 100% |\n| Compile Errors | 0 |\n| Breaking Changes | 0 |\n| Lines of Code | 7,484 |\n\n---\n\n## 🚀 Quick Commands\n\n```bash\n# Install locally\nnpm run install:local\n\n# Remove local install\nnpm run remove:local\n\n# Run tests\nnpm test\n\n# Build\npnpm run build\n```\n\n---\n\n## 🔒 Safety \u0026 Privacy\n\n- ✅ No data collection\n- ✅ No network access\n- ✅ 100% offline\n- ✅ Open source (MIT)\n- ✅ Max 200KB file size\n\n---\n\n## 📚 Documentation\n\n- **[Architecture](docs/ARCHITECTURE.md)** - Technical design\n- **[Test Scenarios](docs/Test_Data.md)** - 100+ examples\n- **[User Guide](docs/USER_TESTING_GUIDE.md)** - Testing instructions\n- **[QA System](reports/IMPLEMENTATION_SUMMARY.md)** - Autonomous testing\n\n---\n\n## 💻 Development\n\n```bash\n# Setup\ngit clone https://github.com/chaluvadis/safe-send-to-ai.git\ncd safe-to-send\npnpm install\npnpm run dev:setup\n```\n\n---\n\n\u003cdiv align=\"center\"\u003e\n  \u003cstrong\u003eStay safe. Sanitize before you share.\u003c/strong\u003e\n\u003c/div\u003e\n\n---\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchaluvadis%2Fsafe-to-send","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchaluvadis%2Fsafe-to-send","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchaluvadis%2Fsafe-to-send/lists"}