{"id":34903392,"url":"https://github.com/nikolareljin/leak-lock","last_synced_at":"2026-02-09T00:12:27.921Z","repository":{"id":330511725,"uuid":"927804985","full_name":"nikolareljin/leak-lock","owner":"nikolareljin","description":"Find and remove unwanted commits in our code","archived":false,"fork":false,"pushed_at":"2026-02-07T03:56:10.000Z","size":447,"stargazers_count":1,"open_issues_count":6,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-02-07T14:09:08.192Z","etag":null,"topics":["credentials","extension","git","scanning","scanning-tool","security-tools","static-code-analysis","visual-studio-code","vscode-extension"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/nikolareljin.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"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":"AGENTS.md","dco":null,"cla":null}},"created_at":"2025-02-05T15:17:30.000Z","updated_at":"2026-01-23T17:31:15.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/nikolareljin/leak-lock","commit_stats":null,"previous_names":["nikolareljin/leak-lock"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/nikolareljin/leak-lock","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nikolareljin%2Fleak-lock","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nikolareljin%2Fleak-lock/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nikolareljin%2Fleak-lock/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nikolareljin%2Fleak-lock/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nikolareljin","download_url":"https://codeload.github.com/nikolareljin/leak-lock/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nikolareljin%2Fleak-lock/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29250458,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-08T22:49:53.206Z","status":"ssl_error","status_checked_at":"2026-02-08T22:49:51.384Z","response_time":57,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["credentials","extension","git","scanning","scanning-tool","security-tools","static-code-analysis","visual-studio-code","vscode-extension"],"created_at":"2025-12-26T09:11:58.793Z","updated_at":"2026-02-09T00:12:27.903Z","avatar_url":"https://github.com/nikolareljin.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/nikolareljin/leak-lock/blob/main/media/icon.png?raw=true\u0026sanitize=true\" width=\"128\" height=\"128\" /\u003e\n\u003c/p\u003e\n\n# 🛡️ Leak Lock - VS Code Security Extension\n\n**Secure your code repositories by detecting and removing sensitive information from git history**\n\n[![Version](https://img.shields.io/badge/version-0.2.0-blue.svg)](package.json)\n[![VS Code](https://img.shields.io/badge/VS%20Code-1.96.0+-brightgreen.svg)](https://code.visualstudio.com/)\n\n[📖 Documentation](#documentation) • [🚀 Quick Start](#quick-start) • [📸 Screenshots](#screenshots) • [🛠️ Development](#development)\n\n---\n\n## Overview\n\nLeak Lock is a powerful VS Code extension that helps developers secure their repositories by:\n\n- 🔍 **Scanning** git repositories for secrets, API keys, and sensitive data\n- 🛡️ **Detecting** over 100+ types of credentials using Nosey Parker\n- 🔧 **Removing** secrets from git history using BFG tool\n- ⚡ **Automating** the complete security remediation workflow\n- 📊 **Displaying** results in an intuitive main area interface\n\n## ✨ Key Features\n\n### 🎯 **Smart Detection**\n- **100+ Secret Types**: API keys, passwords, tokens, certificates\n- **Low False Positives**: Advanced pattern matching and validation\n- **Git History Scanning**: Deep analysis of entire repository history\n- **Multiple Formats**: JSON, database connections, configuration files\n\n### 🖥️ **Modern Interface**\n- **Main Area Display**: Wide layout perfect for scan results\n- **Activity Bar Integration**: Easy access via shield icon\n- **Smart Directory Selection**: Auto-detects git repositories\n- **Progress Tracking**: Real-time scanning and remediation progress\n- **Remove Files Flow**: Sidebar button opens guided removal UI in main area\n - **Path-Based Safe Removal**: Exact path deletion across branches with preview\n\n### 🤖 **Automated Workflow**\n- **One-Click Dependency Install**: Docker, Nosey Parker, BFG tool\n- **Intelligent Scanning**: Context-aware repository analysis\n- **Guided Remediation**: Step-by-step secret removal process\n- **Git History Cleanup**: Automatic history rewriting and cleanup\n- **Granular Deletion Feedback**: Per-item BFG flags and patterns preview\n- **Preview Before Delete**: Show exact matches across branches, remotes, and tags for path-based deletions\n - **Auto-Fetch Remotes**: Fetches all remotes and tags before preview and execution\n\n---\n\n## 🚀 Quick Start\n\n### 1. Installation\n```bash\n# Install from VS Code Marketplace\ncode --install-extension nikolareljin.leak-lock\n\n# Or install from VSIX\ncode --install-extension leak-lock-0.0.1.vsix\n```\n\n### 2. Open Leak Lock\n- **Activity Bar**: Click the 🛡️ shield icon\n- **Command Palette**: `Ctrl+Shift+P` → \"Open Leak Lock Scanner\"\n- **Status Bar**: Click the shield icon\n\n### 3. Install Dependencies\n- Click \"🔧 Install Dependencies\" on first use\n- Installs Docker images, BFG tool, and requirements\n- One-time setup with progress tracking\n\n### 4. Scan Repository\n- **Auto-Detection**: Git repositories selected automatically\n- **Manual Selection**: Choose any directory to scan\n- **Review Results**: Examine detected secrets in detailed table\n\n### 5. Remove Secrets\n- **Select Secrets**: Choose which ones to remove\n- **Generate Commands**: Automatic BFG command generation\n- **Execute Cleanup**: One-click git history rewriting\n\n\u003cimg width=\"942\" height=\"1307\" alt=\"image\" src=\"https://github.com/user-attachments/assets/1c0ca6c4-1254-4337-b893-ee26c94f95e3\" /\u003e\n\n\n---\n\n### 6. Remove Unwanted Files (New)\n- Open from sidebar: click \"🗑️ Remove files\"\n- Select repository (git root)\n- Choose multiple files and/or directories\n- Option A (fast): BFG, name-based grouping (single or per-item)\n- Option B (safe): Git path-based, exact paths across branches\n- Click \"🔎 Preview matches\" for path-based mode to see exact files across branches, remotes, and tags\n- Remotes are fetched automatically to avoid missing references\n- Prepare and review the generated command\n- Final step (red): confirm to run (BFG or Git) and rewrite history\n\n---\n\n## 📸 Screenshots\n\n### Activity Bar Integration\nThe extension adds a shield icon to the activity bar for easy access.\n\n### Welcome View\nSimple welcome interface in the sidebar with a \"Open Scanner\" button.\n\n\u003cimg width=\"47\" height=\"331\" alt=\"image\" src=\"https://github.com/user-attachments/assets/b0ff943c-bf64-4b61-a5f9-ff83ba83bd11\" /\u003e\n\n\"Leak-Lock\" scanner button:\n\n\u003cimg width=\"119\" height=\"128\" alt=\"image\" src=\"https://github.com/user-attachments/assets/4b98cea4-f793-4294-9ab0-adf96611e023\" /\u003e\n\n\n### Main Scanner Interface\n\n\u003cimg width=\"354\" height=\"573\" alt=\"image\" src=\"https://github.com/user-attachments/assets/c8199804-290a-4797-930e-8e8c3f7cc7c2\" /\u003e\n\nFull-width main area interface showing:\n- Dependency installation status\n\n\u003cimg width=\"422\" height=\"1009\" alt=\"image\" src=\"https://github.com/user-attachments/assets/e1da44be-e827-4006-bada-ebb2095b2127\" /\u003e\n\n- Directory selection with auto-detection\n- Scanning controls and progress\n- Results display in wide table format\n\n### Scanning Process\n\n\u003cimg width=\"1701\" height=\"859\" alt=\"image\" src=\"https://github.com/user-attachments/assets/dd8af4e9-c873-4435-9bd5-cbc60584ee73\" /\u003e\n\nReal-time progress indication during repository scanning with Nosey Parker.\n\n### Results Display\n\n\u003cimg width=\"2340\" height=\"1215\" alt=\"image\" src=\"https://github.com/user-attachments/assets/bc057139-d659-49f0-b81c-4d76dbe54dba\" /\u003e\n\nIn case of found issues - like with these demo files: \n\n\u003cimg width=\"1322\" height=\"1246\" alt=\"image\" src=\"https://github.com/user-attachments/assets/54e9d84f-8a63-46ef-8b66-972e1488e826\" /\u003e\n\nDetailed table showing:\n- Secret type and severity\n- File location and line number\n- Preview of detected content\n- Action buttons for remediation\n\n### Remediation Interface\nStep-by-step process for removing secrets:\n- Secret selection checkboxes\n- Replacement value input\n- BFG command generation\n- Git cleanup execution\n\n---\n\n## 📖 Documentation\n\n### 📋 **File Structure**\n```\nleak-lock/\n├── extension.js              # Main extension entry point\n├── leakLockPanel.js          # Main area panel provider\n├── welcomeViewProvider.js    # Activity bar welcome view\n├── project-scan.js           # Legacy compatibility\n├── package.json              # Extension manifest\n├── media/\n│   └── shield.svg            # Extension icon\n└── docs/                     # Documentation files\n```\n\n### 🔧 **Architecture Components**\n\n#### **Extension.js**\n- Main extension activation and command registration\n- Dependency management and cleanup\n- Status bar integration\n\n#### **LeakLockPanel.js**\n- Main area webview panel provider\n- Scanning workflow implementation\n- Results display and remediation UI\n\n#### **WelcomeViewProvider.js**\n- Activity bar sidebar integration\n- Welcome interface and launch button\n\nSee also:\n- docs/USER_GUIDE.md — full user guide\n- docs/REMOVE_FILES.md — Remove Files flow details\n\n---\n\n## 🛠️ Development\n\n### **Prerequisites**\n- Node.js 16+ \n- VS Code 1.96.0+\n- Docker (for testing scanning functionality)\n\n### **Setup**\n```bash\n# Clone repository\ngit clone https://github.com/nikolareljin/leak-lock.git\ncd leak-lock\n\n# Install dependencies\nnpm install\n\n# Launch in development mode\ncode . # Press F5 to launch extension host\n```\n\n### **Testing**\n```bash\n# Run tests\nnpm test\n\n# Manual testing\n# 1. Press F5 to launch extension host\n# 2. Click shield icon in activity bar\n# 3. Test dependency installation\n# 4. Test scanning workflow\n```\n\n---\n\n## 🛡️ Security Tools\n\n### **Nosey Parker**\n- **Purpose**: Secret detection and scanning\n- **Project**: Nosey Parker by Praetorian — https://github.com/praetorian-inc/noseyparker\n- **Image**: `ghcr.io/praetorian-inc/noseyparker:latest`\n- **Why it’s good**: High-precision detection with 100+ well‑maintained rules, fast scanning, low false positives, and active community support.\n- **Integration**: Containerized execution for portability and consistency across platforms\n\n### **BFG Repo Cleaner**\n- **Purpose**: Git history rewriting and cleanup\n- **Project**: BFG Repo-Cleaner — https://rtyley.github.io/bfg-repo-cleaner/\n- **Tool**: Java-based command line utility\n- **Why it’s good**: Safer, faster alternative to `git filter-branch` for removing large files or sensitive data from history; robust, battle‑tested, and widely recommended.\n- **Capabilities**: Remove secrets from entire git history, delete files/folders by name\n- **Integration**: Automated command generation and execution\n- **Note**: Deletion matches by filename/folder name across history (not full path)\n\n### Why Leak Lock\n- Seamless integration: Combines Nosey Parker (detection) and BFG/git (removal) into a single VS Code experience.\n- Safer defaults: Previews, path‑based alternative, and confirmation steps reduce risk.\n- Productivity: One panel to scan, review, prepare commands, and execute — no shell juggling.\n- Cross‑platform: Dockerized scanning and built‑in helpers make it reliable on Windows, macOS, and Linux.\n\n### **Git (filter-branch)**\n- **Purpose**: Exact path-based history rewriting across branches\n- **Command**: `git filter-branch --index-filter 'git rm -r --cached --ignore-unmatch \u003cpath\u003e ...' -- --all`\n- **Preview**: Lists per-branch matches before running\n- **Integration**: Alternative path-safe removal flow in main panel\n\n---\n\n## ⚙️ Configuration\n\n### **Commands Available**\n- `leak-lock.openPanel` - Open main scanner interface\n- `leak-lock.scanRepository` - Start repository scanning\n- `leak-lock.fixSecrets` - Open remediation interface\n- `leak-lock.openRemoveFiles` - Open Remove Files flow\n- `leak-lock.cleanup` - Clean up all dependencies\n\n### **Dependencies**\n- **Docker**: Container runtime for Nosey Parker\n- **Java**: Runtime for BFG tool (auto-detected)\n- **Git**: Version control operations\n\n---\n\n## 🧹 Cleanup\n\nThe extension provides comprehensive cleanup functionality:\n\n### **Automatic Cleanup (on uninstall)**\n- Removes Nosey Parker Docker image\n- Deletes BFG tool jar file\n- Cleans up temporary files and directories\n- Removes Docker volumes created by extension\n\n### **Manual Cleanup**\nUse command palette: `Leak Lock: Clean Up Dependencies`\n\n---\n\n## 🤝 Contributing\n\nWe welcome contributions! Areas for improvement:\n- 🔍 Additional secret detection patterns\n- 🎨 UI/UX enhancements\n- 📖 Documentation improvements\n- 🧪 Test coverage expansion\n\n---\n\n## 📋 Release Notes\n\n### **v0.0.1 (Current)**\n- ✨ Initial release with core functionality\n- 🛡️ Main area interface for wide result display\n- 🔧 Automated dependency installation\n- 🎯 Smart directory selection for git repositories\n- 🧹 Complete cleanup on uninstall\n\n---\n\n## 📄 License\n\nMIT License - see [LICENSE](LICENSE) file for details.\n\n---\n\n## 🆘 Support\n\n- 📖 [Documentation](./docs/) - Comprehensive guides\n- 💬 [Issues](https://github.com/nikolareljin/leak-lock/issues) - Bug reports\n- 📧 Contact: Create an issue for support\n\n---\n\n**Made with ❤️ for secure development**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnikolareljin%2Fleak-lock","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnikolareljin%2Fleak-lock","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnikolareljin%2Fleak-lock/lists"}