Real-time audit and approval system for Claude Code tool calls. Get instant visibility and control over AI agent actions with a sleek web dashboard.
CCO-MCP provides a security layer between Claude Code and your system, enabling you to monitor and control AI tool calls in real-time. It acts as a firewall for AI actions, allowing you to review sensitive operations before they execute while auto-approving safe ones based on configurable rules. This let's you scale to many more non-interactive Claude Code instances running in the background without incurring "tab-switching fatigue".
git clone https://github.com/onegrep/cco-mcp.git
cd cco-mcp
docker-compose upInstall CCO-MCP at the user scope:
claude mcp add -s user -t http cco-mcp http://localhost:8660/mcpThis will add the following to your Claude Code config:
{
  "mcpServers": {
    "cco-mcp": {
      "type": "http",
      "url": "http://localhost:8660/mcp"
    }
  }
}For self-hosted deployments, replace http://localhost:8660/mcp with your deployment URL.
Visit http://localhost:8660 to access the dashboard.
To use CCO-MCP for approval prompts, run Claude Code in non-interactive mode with the appropriate Permission Prompt Tool flag:
claude code -p "your prompt here" --permission-prompt-tool mcp__cco-mcp__approval_promptThis enables Claude to request approval through CCO-MCP before executing sensitive operations without using the "dangerously skip permissions" option.
Create rules to auto-approve safe operations (like file reads) while requiring manual approval for sensitive ones (like running bash commands).
Monitor all tool calls as they happen with live updates via Server-Sent Events.
Every tool call is logged with full context including agent identity, parameters, and approval status.
All configuration can be managed through the web interface at http://localhost:8660/config.
- Default Action: Choose whether unmatched requests are automatically approved or require manual review
 - Auto-Deny Timeout: Set how long to wait for manual approval before automatically denying (default: 5 minutes)
 - Entry TTL: Configure how long audit log entries are retained (default: 24 hours)
 
Rules use a priority system (lower numbers = higher priority) to determine actions:
- Tool Matching: Match specific tools (built-in like Read/Write or MCP server tools)
 - Agent Matching: Create rules for specific agent identities
 - Pattern Matching: Use wildcards for flexible rule creation
 - Actions: Set rules to auto-approve or auto-deny matching requests
 
PORT- Server port (default: 8660)CCO_CONFIG_PATH- Config file location (default: ~/.cco-mcp/config.json)
cco-mcp/
βββ src/              # TypeScript backend
β   βββ audit/        # Core audit service
β   βββ routes/       # REST API endpoints
β   βββ server.ts     # MCP server
βββ ui/               # React frontend
β   βββ src/
β       βββ components/
β       βββ pages/
βββ dist/             # Build output
- Simplicity first - Enabling core use-case of approving background agents
 - Real-time by default - SSE for instant updates
 - Type safety - Full TypeScript coverage
 - User-friendly - Intuitive UI with helpful defaults
 
# Install required tools
just brew
# Setup project dependencies
just setup
# Run both backend and UI
just dev-all
# Run tests
just test
# Format code
just format
# Build everything
just build-allWe welcome contributions! Please see our Contributing Guide for details.
MIT License - Copyright 2025 OneGrep, Inc.
Built for use with Claude Code and the Model Context Protocol by Anthropic.
