Skip to content

Harness Security Matrix — Intutic Compliance Scope Open-Core

Last updated: Phase 3 implementation complete
Coverage: 18 active harnesses

This document is the canonical reference for what Intutic enforces, how, and the gaps that remain per harness.


Defense Vectors

VectorMechanismHow it blocksScope
A — Client HookPre-tool-use script, exit code 2Blocks before tool executesClaude Code, Cursor, Windsurf, Cline, OpenHands, Goose
B — Proxy GateLLM request inspection at the API boundaryBlocks / audits before LLM sees the promptAll 14 active harnesses (+ Windsurf via TLS MITM)
C — Drift GuardFile watcher + 30s poll cycleDetects and restores tampered governance configs17 paths across all harnesses

Coverage Matrix

#HarnessHook (A)Proxy (B)Drift Guard (C)Self-Mod RiskNotes
1Claude Code✅ PreToolUse✅ settings.jsonMediumFull coverage
2Cursor Chat/Plan✅ 3-level hooks.json✅ 3 pathsHIGHAgent/Composer mode: see §Gaps
3Windsurf✅ Shell/MCP hooks✅ TLS MITM✅ 2 pathsHIGHCascade traffic via TLS MITM proxy
4Cline✅ .cline/hooks/✅ VS Code settings✅ hooks.jsonHIGHDual proxy injection
5Roo Code⚠️ Notify-only✅ VS Code settings✅ .roorulesHIGHNo blocking hooks in Roo Code yet
6Aider❌ No hook system✅ openai-api-base✅ .aider.conf.ymlHIGHtest-cmd/lint-cmd suppressed
7OpenHands✅ .openhands/hooks.json✅ llm.base_url✅ hooks.jsonHIGHShell script hook, fail-closed
8Codex CLI❌ No hook system✅ ~/.codex/config.toml✅ .env.intuticLowTwo config files written
9n8n⚠️ Mgmt-level only✅ API-configurable✅ gatekeeper nodeMediumPer-exec gate via IF/Code node
10Continue❌ No hook system✅ apiBase in config.yaml✅ config.yamlLowProxy-only
11Goose✅ Plugin PreToolUse✅ provider.host✅ Immutable pluginHIGHchmod 444 + OS immutable flags
12Antigravity❌ No hook API✅ Proxy native✅ .gemini/settings.jsonMediumProxy-native; drift guard added
13Claude Desktop❌ No hooks❌ Locked to Anthropic✅ claude_desktop_config.jsonMediumDrift guard detects rogue MCP servers
14Open-WebUI❌ Docker service✅ Docker envN/ALowDocument Docker env pattern
15OpenClaw✅ pre-tool-check✅ openclaw.jsonMediumFull coverage
16Hermes✅ hermes-check.sh✅ config.yamlMediumBinds tool execution hooks
17Pi✅ pre-tool hooks✅ hooks.jsonMediumIntercepts at workspace root
18GitHub Copilot❌ Instructions-only✅ copilot-instructions.mdLowMerge active SOP rules

Per-Harness Onboarding Guide

Claude Code

bash
intutic connect --harness claude-code

Writes .claude/settings.json + ~/.claude/settings.json with permissions.deny rules and PreToolUse hooks. Hook script at .intutic/hooks/pre-tool-check.js. Drift guard watches both paths.

Cursor

bash
intutic connect --harness cursor

Writes .cursorrules (governance text) + .cursor/hooks.json (project) + ~/.cursor/hooks.json (user).

Windsurf

bash
intutic connect --harness windsurf

Writes .windsurfrules + ~/.codeium/windsurf/hooks.json + .windsurf/hooks.json. Also configures ~/.codeium/windsurf/settings.json with http.proxy pointing to the Intutic TLS MITM proxy (port 8877). Cascade AI traffic is governed via the proxy.

Important: The Intutic CA cert must be trusted for TLS MITM to work:

bash
intutic init   # Generates CA cert and injects into user trust store

Cline

bash
intutic connect --harness cline

Writes .clinerules (governance text) + .cline/hooks/hooks.json (blocking PreToolUse hook). Also injects cline.apiBase and cline.openAiBaseUrl into VS Code settings + ~/.intutic/.env.intutic sidecar.

Aider

bash
intutic connect --harness aider

Writes .aider.conf.yml with openai-api-base and anthropic-api-base set to the Intutic proxy. Strips test-cmd and lint-cmd if present (these are auto-executed on startup and represent the highest Aider privilege escalation risk). Strip events are logged to the control plane audit feed.

OpenHands

bash
intutic connect --harness openhands

Writes config.toml with [llm] base_url and [intutic] SOP section. Also writes .openhands/hooks.json with PreToolUse shell hook (fail-closed).

Goose

bash
intutic connect --harness goose

Writes ~/.agents/plugins/intutic-governance/hooks/hooks.json + scripts/intutic-check.sh. Applies chmod 444 + chflags uchg (macOS) or chattr +i (Linux) to make plugin files immutable. Also merges provider.host into ~/.config/goose/config.yaml.


Known Architectural Gaps (Permanent)

HarnessGapReasonMitigation
Cursor Agent/ComposerNo hook/proxy interceptionProprietary Cursor backend, hardcodedDocument-only: recommend Chat/Plan panel for governed workflows
Claude DesktopNo hooks, no proxyLocked to Anthropic; no hook APIDrift guard watches config for rogue MCP servers
Windsurf Cascade AICannot intercept without TLS MITMNo base URL fieldTLS MITM via local CA (see windsurf-tls-mitm.md)
Roo Code client hooksNotification-onlyNo blocking hook API in current releaseProxy + drift guard; update when Roo Code adds blocking hooks
n8n per-execution hooksManagement-level onlyEXTERNAL_HOOK_FILES applies globally not per-executionInject IF/Code gatekeeper node into each governed workflow

The circuit breaker for AI agents