Enterprise-grade Chrome automation for AI agents with compliance-ready logging Enterprise Features • Compliance Logging • Security Features • Quick Start • Docker Deploy Built for corporate environments where security, compliance, and auditability are non-negotiable. SIEM-ready logging in industry-standard formats. Every tool execution, credential access, and security event is logged. - authentica
Add this skill
npx mdskills install Pantheon-Security/chrome-mcp-secureEnterprise-grade Chrome automation MCP with post-quantum encryption, SIEM logging, and secure credential vault
1<div align="center">23# Chrome MCP Server (Security Hardened)45**Enterprise-grade Chrome automation for AI agents with compliance-ready logging**67[](./CHANGELOG.md)8[](https://www.typescriptlang.org/)9[](https://modelcontextprotocol.io/)10[](./SECURITY.md)11[](./SECURITY.md#post-quantum-encryption)12[](#compliance-logging)13[](#compliance-logging)14[](./LICENSE)1516[Enterprise Features](#enterprise-ready) • [Compliance Logging](#compliance-logging) • [Security Features](#security-features) • [Quick Start](#quick-start) • [Docker Deploy](#docker-deployment)1718</div>1920---2122## Enterprise Ready2324**Built for corporate environments** where security, compliance, and auditability are non-negotiable.2526| Requirement | Solution |27|-------------|----------|28| **Audit Trails** | Hash-chained audit logs with tamper detection |29| **SIEM Integration** | CEF (Splunk, ArcSight, QRadar) + Syslog (RFC 5424) |30| **Credential Security** | Post-quantum encryption (ML-KEM-768 + ChaCha20-Poly1305) |31| **Data Protection** | Auto-redaction of PII in screenshots and logs |32| **Session Control** | Configurable timeouts, auto-expiry, inactivity lockout |33| **Access Control** | Token-based authentication with brute-force protection |34| **Compliance Logging** | OWASP-compliant event categories, correlation IDs |3536### Compliance Standards Support3738| Standard | Coverage |39|----------|----------|40| **SOC 2 Type II** | Audit logging, access controls, encryption at rest |41| **GDPR** | Data minimization, right to erasure, audit trails |42| **PCI DSS** | Credential protection, access logging, encryption |43| **HIPAA** | Audit controls, access management, encryption |4445---4647## Compliance Logging4849**SIEM-ready logging** in industry-standard formats. Every tool execution, credential access, and security event is logged.5051### Output Formats5253| Format | Use Case | Example |54|--------|----------|---------|55| **CEF** | Splunk, ArcSight, QRadar | `CEF:0\|Pantheon-Security\|Chrome-MCP-Secure\|2.3.0\|...` |56| **Syslog** | Centralized logging (RFC 5424) | `<134>1 2025-12-16T10:30:00Z ...` |57| **JSONL** | Elastic, custom pipelines | `{"timestamp":"...","category":"audit",...}` |5859### Event Categories (OWASP-Compliant)6061- `authentication` - Login attempts, session creation62- `authorization` - Access control decisions63- `credential` - Vault operations (store, retrieve, delete)64- `audit` - Tool executions with timing65- `security` - Rate limits, injection attempts, anomalies66- `data_access` - Sensitive data retrieval6768### Quick Configuration6970```bash71# Enable CEF logging for Splunk72COMPLIANCE_LOG_FORMAT=cef73COMPLIANCE_LOG_DIR=./logs/compliance7475# Forward to remote syslog76SYSLOG_HOST=siem.company.com77SYSLOG_PORT=51478```7980### Example CEF Output8182```83CEF:0|Pantheon-Security|Chrome-MCP-Secure|2.3.0|audit:tool:navigate|tool:navigate|3|rt=1702732800000 outcome=success msg=Tool navigate executed: success request=https://internal.company.com cn1=1702732800-abc123 cn1Label=correlationId84```8586---8788> **Security-hardened fork** of [lxe/chrome-mcp](https://github.com/lxe/chrome-mcp)89> Maintained by [Pantheon Security](https://github.com/Pantheon-Security)9091---9293## Real-World Results9495> **"We used this MCP for hours building out our security dashboard - the reliability was incredible. The amount of work we produced was huge compared to manual browser interaction."**96> — Pantheon Security team9798### Production Tested99100| Metric | Result |101|--------|--------|102| **Session Duration** | 4+ hours continuous use |103| **Stability** | Zero crashes or disconnects |104| **Credential Security** | All logins encrypted, auto-wiped |105| **Productivity Gain** | 10x faster than manual browser work |106107This isn't just a security enhancement - it's a **reliable workhorse** for AI-assisted browser automation. When you need Claude to interact with web apps for extended sessions, this MCP delivers.108109---110111## Security Features112113### Core Security (v2.1.0)114115| Feature | Description |116|---------|-------------|117| **Post-Quantum Encryption** | ML-KEM-768 + ChaCha20-Poly1305 hybrid |118| **Secure Credential Vault** | Encrypted at rest, auto-wiped from memory |119| **Memory Scrubbing** | Zeros sensitive data after use |120| **Audit Logging** | Tamper-evident logs with hash chains |121| **Profile Isolation** | Dedicated Chrome profile for secure sessions |122| **Log Sanitization** | Credentials masked in all output |123| **Rate Limiting** | 100 requests per minute per operation |124| **Input Validation** | CSS selector sanitization, URL validation |125126### Advanced Security Modules (v2.2.0+)127128| Module | Description |129|--------|-------------|130| **Secrets Scanner** | Detects 25+ credential patterns (AWS, GitHub, Slack, OpenAI keys, private keys, JWTs, credit cards, SSNs) |131| **Response Validator** | Prompt injection detection (15 patterns), suspicious URL blocking, encoded payload detection |132| **Session Manager** | Credential session lifecycle with 8h max lifetime and 30min inactivity timeout |133| **MCP Authentication** | Token-based auth with auto-generation, SHA256 hashing, brute-force lockout |134| **Certificate Pinning** | SPKI-style pinning for Google, GitHub, Microsoft, Anthropic, OpenAI domains |135| **Screenshot Redaction** | Auto-redacts password fields, credit cards, CVV, SSN, API keys in screenshots |136| **Cross-Platform Permissions** | Secure file permissions on Linux, macOS, and Windows (icacls) |137138### Post-Quantum Ready139140Traditional encryption will be broken by quantum computers. This fork uses **hybrid encryption**:141142```143ML-KEM-768 (Kyber) + ChaCha20-Poly1305144```145146- **ML-KEM-768**: NIST-standardized post-quantum key encapsulation147- **ChaCha20-Poly1305**: Modern stream cipher (immune to timing attacks)148149Even if one algorithm is broken, the other remains secure.150151### Why Post-Quantum Now?152153| Timeline | Threat |154|----------|--------|155| **2024-2030** | "Harvest now, decrypt later" attacks - adversaries collecting encrypted data today |156| **2030-2035** | Early cryptographically-relevant quantum computers expected |157| **2035+** | Current RSA/ECC encryption potentially broken |158159Your browser credentials stored today could be decrypted in 10 years. This fork protects against that future threat **now**.160161---162163## Docker Deployment164165**Recommended for production environments.**166167```bash168# Clone and start169git clone https://github.com/Pantheon-Security/chrome-mcp-secure.git170cd chrome-mcp-secure171docker-compose up -d172```173174### Production Configuration175176```bash177# Copy example config178cp env.example .env179180# Edit for your environment181vim .env182183# Start with custom config184docker-compose up -d185```186187### Key Environment Variables188189```bash190# SIEM Integration191COMPLIANCE_LOG_FORMAT=cef # cef, syslog, jsonl, json192SYSLOG_HOST=siem.company.com # Remote syslog server193SYSLOG_PORT=514194195# Encryption (REQUIRED for production)196CHROME_MCP_ENCRYPTION_KEY=$(openssl rand -base64 32)197198# Session Security199CHROME_MCP_SESSION_MAX_LIFETIME=28800000 # 8 hours200CHROME_MCP_SESSION_INACTIVITY=1800000 # 30 minutes201```202203### Log Collection204205Logs are written to `./logs/compliance/` in your chosen format:206207```bash208# View compliance logs209tail -f logs/compliance/compliance-2025-12-16.cef210211# Forward to Splunk via syslog212docker-compose logs chrome-mcp | nc -u siem.company.com 514213```214215See [env.example](./env.example) for all configuration options.216217---218219## Installation220221### One-Command Setup (Recommended)222223**Linux / macOS:**224```bash225git clone https://github.com/Pantheon-Security/chrome-mcp-secure.git226cd chrome-mcp-secure227./setup.sh228```229230**Windows (PowerShell):**231```powershell232git clone https://github.com/Pantheon-Security/chrome-mcp-secure.git233cd chrome-mcp-secure234.\setup.ps1235```236237This will:2381. Install dependencies and build the project2392. Register the MCP server with Claude Code2403. Start Chrome with remote debugging2414. Create an isolated Chrome profile242243### Manual Setup244245```bash246npm install && npm run build247claude mcp add chrome-mcp-secure --scope user -- node /path/to/chrome-mcp-secure/dist/index.js248google-chrome --remote-debugging-port=9222 --user-data-dir=~/.chrome-mcp-profile249```250251### Platform-Specific Notes252253| Platform | Setup Script | Chrome Profile Location |254|----------|--------------|------------------------|255| Linux | `./setup.sh` | `~/.chrome-mcp-profile` |256| macOS | `./setup.sh` | `~/.chrome-mcp-profile` |257| Windows | `.\setup.ps1` | `%USERPROFILE%\.chrome-mcp-profile` |258259---260261## Quick Start262263### 1. Start Chrome with debugging264```bash265./setup.sh --start-chrome266```267268### 2. Use in Claude Code269```270"Check Chrome connection with health tool"271"Navigate to https://example.com"272"Take a screenshot"273```274275### 3. Secure Login Flow276```277"Store a credential for my GitHub account"278"Navigate to github.com/login"279"Use secure_login with the stored credential"280```281282---283284## Available Tools285286### Browser Automation (15 tools)287288| Tool | Description |289|------|-------------|290| `health` | Check Chrome connection and version |291| `navigate` | Navigate to URL |292| `get_tabs` | List all Chrome tabs |293| `click_element` | Click element by CSS selector |294| `click` | Click at coordinates |295| `type` | Type text at cursor |296| `get_text` | Extract text from element |297| `get_page_info` | Get URL, title, interactive elements |298| `get_page_state` | Get scroll position, viewport size |299| `scroll` | Scroll to coordinates |300| `screenshot` | Capture page screenshot |301| `wait_for_element` | Wait for element to appear |302| `evaluate` | Execute JavaScript |303| `fill` | Fill form field |304| `bypass_cert_and_navigate` | Navigate with HTTPS cert bypass |305306### Secure Credential Tools (7 tools)307308| Tool | Description |309|------|-------------|310| `store_credential` | Store encrypted login credentials |311| `list_credentials` | List stored credentials (no passwords shown) |312| `get_credential` | Get credential metadata |313| `delete_credential` | Remove a stored credential |314| `update_credential` | Update an existing credential |315| `secure_login` | Auto-fill login forms using stored credentials |316| `get_vault_status` | Check vault encryption status |317318---319320## Secure Credential Usage321322### Storing Credentials323324```325Store a credential for my Google account:326- Name: "Google Work"327- Type: google328- Email: me@example.com329- Password: mypassword123330- Domain: google.com331```332333### Using Credentials for Login334335```3361. Navigate to https://accounts.google.com3372. Use secure_login with the credential ID from list_credentials338```339340The `secure_login` tool will:341- Retrieve and decrypt the credential from the vault342- Auto-fill the username/email field343- Auto-fill the password field344- Click the submit button345- Wipe credentials from memory after use346347---348349## What Gets Protected350351| Data | Protection |352|------|------------|353| Login credentials | Post-quantum encrypted at rest |354| Passwords in memory | Auto-wiped after 5 min TTL |355| Log output | Credentials auto-masked |356| Chrome profile | Isolated from default browser |357| Audit trail | Hash-chained for tamper detection |358359---360361## Configuration362363### Environment Variables364365```bash366# Chrome connection367CHROME_HOST=localhost368CHROME_PORT=9222369CHROME_PROFILE_DIR=~/.chrome-mcp-profile370371# Encryption (recommended for production)372CHROME_MCP_ENCRYPTION_KEY=<base64-32-bytes>373CHROME_MCP_USE_POST_QUANTUM=true374375# Credential vault376CHROME_MCP_CONFIG_DIR=~/.chrome-mcp377CHROME_MCP_CREDENTIAL_TTL=300000 # 5 minutes378379# Logging380LOG_LEVEL=info381AUDIT_LOGGING=true382```383384### Generate Strong Encryption Key385386```bash387openssl rand -base64 32388```389390See [SECURITY.md](./SECURITY.md) for complete configuration reference.391392---393394## Security Architecture395396### Encryption397398```399 ┌─────────────────────────────────────┐400 │ ML-KEM-768 Key Pair │401 │ (Post-Quantum Key Encapsulation) │402 └─────────────────┬───────────────────┘403 │404 ┌─────────────────┴───────────────────┐405 │ ChaCha20-Poly1305 │406 │ (Symmetric AEAD Encryption) │407 └─────────────────┬───────────────────┘408 │409 ┌─────────────────┴───────────────────┐410 │ Encrypted Credential Files │411 │ ~/.chrome-mcp/credentials/*.pqenc │412 └─────────────────────────────────────┘413```414415### Memory Protection416417- **SecureCredential class**: Auto-wipes credentials after TTL (5 min default)418- **Zero-fill buffers**: Random overwrite + zero fill prevents memory dumps419- **No credential logging**: Automatic masking of sensitive field names420421### Why ChaCha20-Poly1305 over AES-GCM?422423| Property | ChaCha20-Poly1305 | AES-GCM |424|----------|-------------------|---------|425| Timing attacks | Immune (constant-time) | Vulnerable without AES-NI |426| Software speed | Fast everywhere | Slow without hardware |427| Complexity | Simple | Complex (GCM mode) |428| Adoption | Google, Cloudflare TLS | Legacy systems |429430---431432## Management Commands433434```bash435# Full setup436./setup.sh437438# Check status439./setup.sh --check440441# Uninstall from Claude Code442./setup.sh --uninstall443444# Start/stop Chrome445./setup.sh --start-chrome446./setup.sh --stop-chrome447```448449---450451## Architecture452453```454┌─────────────┐ ┌──────────────────┐ ┌─────────────┐455│ Claude/ │────▶│ MCP Server │────▶│ Chrome │456│ AI Agent │ │ (This Fork) │ │ (CDP) │457└─────────────┘ └──────────────────┘ └─────────────┘458 │459 ┌──────┴──────┐460 │ Security │461 │ Layers │462 └─────────────┘463 • PQ Encryption464 • Credential Vault465 • Memory Wipe466 • Audit Logs467 • Rate Limits468 • Input Validation469```470471---472473## File Structure474475```476chrome-mcp-secure/477├── src/478│ ├── index.ts # MCP server entry point479│ ├── cdp-client.ts # Persistent CDP WebSocket client480│ ├── tools.ts # Browser automation tools481│ │482│ │── # Core Security (v2.1.0)483│ ├── credential-vault.ts # Encrypted credential storage484│ ├── credential-tools.ts # Credential MCP tools485│ ├── crypto.ts # Post-quantum encryption (ML-KEM-768 + ChaCha20)486│ ├── secure-memory.ts # Memory protection utilities487│ ├── security.ts # Input validation, rate limiting488│ ├── logger.ts # Logging with auto-masking489│ ├── errors.ts # Typed error classes490│ │491│ │── # Advanced Security Modules (v2.2.0+)492│ ├── secrets-scanner.ts # Credential leak detection (25+ patterns)493│ ├── response-validator.ts # Prompt injection detection494│ ├── session-manager.ts # Session lifecycle management495│ ├── mcp-auth.ts # Token-based MCP authentication496│ ├── cert-pinning.ts # Certificate pinning for sensitive domains497│ ├── screenshot-redaction.ts # Auto-redact sensitive fields498│ └── file-permissions.ts # Cross-platform secure file permissions499│500├── dist/ # Compiled JavaScript501├── setup.sh # Linux/macOS setup502├── setup.ps1 # Windows setup503├── SECURITY.md # Security documentation504├── CHANGELOG.md # Version history505├── CLAUDE.md # Claude Code integration guide506└── README.md507```508509---510511## Comparison with Original512513| Feature | [lxe/chrome-mcp](https://github.com/lxe/chrome-mcp) | This Fork |514|---------|----------|-----------|515| Chrome automation | ✅ | ✅ |516| Persistent WebSocket | ✅ | ✅ |517| Cross-platform | ✅ | ✅ |518| **Post-quantum encryption** | ❌ | ✅ |519| **Secure credential vault** | ❌ | ✅ |520| **Memory scrubbing** | ❌ | ✅ |521| **Audit logging** | ❌ | ✅ |522| **Auto log masking** | ❌ | ✅ |523| **Profile isolation** | ❌ | ✅ |524| **Secrets scanner** | ❌ | ✅ |525| **Prompt injection detection** | ❌ | ✅ |526| **Session management** | ❌ | ✅ |527| **MCP authentication** | ❌ | ✅ |528| **Certificate pinning** | ❌ | ✅ |529| **Screenshot redaction** | ❌ | ✅ |530531---532533## What's New in v2.2.x534535### v2.2.1 - Cross-Platform File Permissions536- All file operations use centralized `file-permissions.ts`537- Proper Windows ACL support via `icacls`538- Consistent 0o700/0o600 permissions on Unix539540### v2.2.0 - Advanced Security Modules541Six new security modules totaling **3,000+ lines** of security hardening:5425431. **Secrets Scanner** - Detects leaked credentials in page content using patterns from TruffleHog, GitLeaks, and MEDUSA5442. **Response Validator** - Blocks prompt injection attacks in scraped content5453. **Session Manager** - Auto-expires credential sessions after configurable timeouts5464. **MCP Authentication** - Protects the MCP server itself with token-based auth5475. **Certificate Pinning** - Validates TLS certificates for sensitive domains5486. **Screenshot Redaction** - Overlays sensitive fields before screenshots549550See [CHANGELOG.md](./CHANGELOG.md) for full version history.551552---553554## Troubleshooting555556### Chrome not accessible557```bash558curl http://localhost:9222/json559# If no response, start Chrome:560./setup.sh --start-chrome561```562563### Credential decryption fails5641. Check if you changed machines (machine-derived key won't work)5652. Set `CHROME_MCP_ENCRYPTION_KEY` to the same key used to encrypt5663. Credentials may need to be re-stored if key is lost567568### Element not found569```570Use get_page_info to see available elements571Use wait_for_element for dynamic content572```573574---575576## Development577578```bash579# Install dependencies580npm install581582# Development mode (auto-reload)583npm run dev584585# Type checking586npm run typecheck587588# Build for production589npm run build590591# Run built version592npm start593```594595---596597## Reporting Vulnerabilities598599Found a security issue? **Do not open a public GitHub issue.**600601Email: support@pantheonsecurity.io602603---604605## Credits606607- **Original Chrome MCP**: [lxe](https://github.com/lxe) - [chrome-mcp](https://github.com/lxe/chrome-mcp)608- **Security Hardening**: [Pantheon Security](https://github.com/Pantheon-Security)609- **Security Patterns**: Adapted from [notebooklm-mcp-secure](https://github.com/Pantheon-Security/notebooklm-mcp-secure)610- **Post-Quantum Crypto**: [@noble/post-quantum](https://www.npmjs.com/package/@noble/post-quantum)611612## License613614MIT - Same as original.615616---617618<div align="center">619620**Security hardened by [Pantheon Security](https://github.com/Pantheon-Security)**621622[Full Security Documentation](./SECURITY.md) • [Report Vulnerability](mailto:support@pantheonsecurity.io)623624</div>625
Full transparency — inspect the skill content before installing.