@integsec/agentic-pentest-proxy 0.2.5 → 0.2.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (160) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +85 -717
  3. package/dist/bin/integsec-agentic-pentest-manifest.d.ts +3 -0
  4. package/dist/bin/integsec-agentic-pentest-manifest.d.ts.map +1 -0
  5. package/dist/bin/integsec-agentic-pentest-manifest.js +180 -0
  6. package/dist/bin/integsec-agentic-pentest-manifest.js.map +1 -0
  7. package/dist/bin/integsec-agentic-pentest-proxy.d.ts +1 -1
  8. package/dist/bin/integsec-agentic-pentest-proxy.d.ts.map +1 -1
  9. package/dist/bin/integsec-agentic-pentest-proxy.js +32 -4
  10. package/dist/bin/integsec-agentic-pentest-proxy.js.map +1 -1
  11. package/dist/bin/integsec-agentic-pentest-setup.d.ts +3 -0
  12. package/dist/bin/integsec-agentic-pentest-setup.d.ts.map +1 -0
  13. package/dist/bin/integsec-agentic-pentest-setup.js +92 -0
  14. package/dist/bin/integsec-agentic-pentest-setup.js.map +1 -0
  15. package/dist/src/audit/azure-monitor.d.ts +2 -2
  16. package/dist/src/audit/azure-monitor.d.ts.map +1 -1
  17. package/dist/src/audit/azure-monitor.js +8 -5
  18. package/dist/src/audit/azure-monitor.js.map +1 -1
  19. package/dist/src/audit/cloudwatch.d.ts.map +1 -1
  20. package/dist/src/audit/cloudwatch.js.map +1 -1
  21. package/dist/src/audit/gcp-logging.d.ts.map +1 -1
  22. package/dist/src/audit/gcp-logging.js +6 -7
  23. package/dist/src/audit/gcp-logging.js.map +1 -1
  24. package/dist/src/audit/index.d.ts +7 -0
  25. package/dist/src/audit/index.d.ts.map +1 -1
  26. package/dist/src/audit/index.js +11 -1
  27. package/dist/src/audit/index.js.map +1 -1
  28. package/dist/src/audit/local.d.ts.map +1 -1
  29. package/dist/src/audit/local.js +2 -1
  30. package/dist/src/audit/local.js.map +1 -1
  31. package/dist/src/builder/dry-run.d.ts +12 -0
  32. package/dist/src/builder/dry-run.d.ts.map +1 -0
  33. package/dist/src/builder/dry-run.js +103 -0
  34. package/dist/src/builder/dry-run.js.map +1 -0
  35. package/dist/src/builder/manifest-writer.d.ts +7 -0
  36. package/dist/src/builder/manifest-writer.d.ts.map +1 -0
  37. package/dist/src/builder/manifest-writer.js +17 -0
  38. package/dist/src/builder/manifest-writer.js.map +1 -0
  39. package/dist/src/builder/review-display.d.ts +10 -0
  40. package/dist/src/builder/review-display.d.ts.map +1 -0
  41. package/dist/src/builder/review-display.js +55 -0
  42. package/dist/src/builder/review-display.js.map +1 -0
  43. package/dist/src/builder/smart-validator.d.ts +39 -0
  44. package/dist/src/builder/smart-validator.d.ts.map +1 -0
  45. package/dist/src/builder/smart-validator.js +157 -0
  46. package/dist/src/builder/smart-validator.js.map +1 -0
  47. package/dist/src/builder/steps/domains.d.ts +10 -0
  48. package/dist/src/builder/steps/domains.d.ts.map +1 -0
  49. package/dist/src/builder/steps/domains.js +71 -0
  50. package/dist/src/builder/steps/domains.js.map +1 -0
  51. package/dist/src/builder/steps/engagement-info.d.ts +17 -0
  52. package/dist/src/builder/steps/engagement-info.d.ts.map +1 -0
  53. package/dist/src/builder/steps/engagement-info.js +49 -0
  54. package/dist/src/builder/steps/engagement-info.js.map +1 -0
  55. package/dist/src/builder/steps/engagement-window.d.ts +15 -0
  56. package/dist/src/builder/steps/engagement-window.d.ts.map +1 -0
  57. package/dist/src/builder/steps/engagement-window.js +57 -0
  58. package/dist/src/builder/steps/engagement-window.js.map +1 -0
  59. package/dist/src/builder/steps/exclusions.d.ts +13 -0
  60. package/dist/src/builder/steps/exclusions.d.ts.map +1 -0
  61. package/dist/src/builder/steps/exclusions.js +57 -0
  62. package/dist/src/builder/steps/exclusions.js.map +1 -0
  63. package/dist/src/builder/steps/ip-ranges.d.ts +10 -0
  64. package/dist/src/builder/steps/ip-ranges.d.ts.map +1 -0
  65. package/dist/src/builder/steps/ip-ranges.js +64 -0
  66. package/dist/src/builder/steps/ip-ranges.js.map +1 -0
  67. package/dist/src/builder/steps/review.d.ts +10 -0
  68. package/dist/src/builder/steps/review.d.ts.map +1 -0
  69. package/dist/src/builder/steps/review.js +29 -0
  70. package/dist/src/builder/steps/review.js.map +1 -0
  71. package/dist/src/builder/steps/techniques.d.ts +13 -0
  72. package/dist/src/builder/steps/techniques.d.ts.map +1 -0
  73. package/dist/src/builder/steps/techniques.js +68 -0
  74. package/dist/src/builder/steps/techniques.js.map +1 -0
  75. package/dist/src/builder/steps/urls-and-cloud.d.ts +15 -0
  76. package/dist/src/builder/steps/urls-and-cloud.d.ts.map +1 -0
  77. package/dist/src/builder/steps/urls-and-cloud.js +53 -0
  78. package/dist/src/builder/steps/urls-and-cloud.js.map +1 -0
  79. package/dist/src/builder/web/api.d.ts +9 -0
  80. package/dist/src/builder/web/api.d.ts.map +1 -0
  81. package/dist/src/builder/web/api.js +40 -0
  82. package/dist/src/builder/web/api.js.map +1 -0
  83. package/dist/src/builder/web/client-form.html +222 -0
  84. package/dist/src/builder/web/server.d.ts +14 -0
  85. package/dist/src/builder/web/server.d.ts.map +1 -0
  86. package/dist/src/builder/web/server.js +85 -0
  87. package/dist/src/builder/web/server.js.map +1 -0
  88. package/dist/src/builder/wizard.d.ts +9 -0
  89. package/dist/src/builder/wizard.d.ts.map +1 -0
  90. package/dist/src/builder/wizard.js +49 -0
  91. package/dist/src/builder/wizard.js.map +1 -0
  92. package/dist/src/config.d.ts +11 -1
  93. package/dist/src/config.d.ts.map +1 -1
  94. package/dist/src/config.js +33 -3
  95. package/dist/src/config.js.map +1 -1
  96. package/dist/src/dns-resolver.d.ts +10 -1
  97. package/dist/src/dns-resolver.d.ts.map +1 -1
  98. package/dist/src/dns-resolver.js +41 -3
  99. package/dist/src/dns-resolver.js.map +1 -1
  100. package/dist/src/extractor.d.ts +12 -0
  101. package/dist/src/extractor.d.ts.map +1 -1
  102. package/dist/src/extractor.js +386 -0
  103. package/dist/src/extractor.js.map +1 -1
  104. package/dist/src/index.d.ts +1 -1
  105. package/dist/src/index.js +1 -1
  106. package/dist/src/ip-matcher.d.ts +23 -0
  107. package/dist/src/ip-matcher.d.ts.map +1 -1
  108. package/dist/src/ip-matcher.js +96 -23
  109. package/dist/src/ip-matcher.js.map +1 -1
  110. package/dist/src/manifest-schema.d.ts +12 -62
  111. package/dist/src/manifest-schema.d.ts.map +1 -1
  112. package/dist/src/manifest.d.ts +6 -0
  113. package/dist/src/manifest.d.ts.map +1 -1
  114. package/dist/src/manifest.js +21 -6
  115. package/dist/src/manifest.js.map +1 -1
  116. package/dist/src/proxy.d.ts +19 -4
  117. package/dist/src/proxy.d.ts.map +1 -1
  118. package/dist/src/proxy.js +111 -33
  119. package/dist/src/proxy.js.map +1 -1
  120. package/dist/src/safe-filename.d.ts +3 -0
  121. package/dist/src/safe-filename.d.ts.map +1 -0
  122. package/dist/src/safe-filename.js +8 -0
  123. package/dist/src/safe-filename.js.map +1 -0
  124. package/dist/src/sanitizer.d.ts.map +1 -1
  125. package/dist/src/sanitizer.js +36 -10
  126. package/dist/src/sanitizer.js.map +1 -1
  127. package/dist/src/technique-checker.d.ts +14 -0
  128. package/dist/src/technique-checker.d.ts.map +1 -1
  129. package/dist/src/technique-checker.js +123 -2
  130. package/dist/src/technique-checker.js.map +1 -1
  131. package/dist/src/transports/http.d.ts +6 -2
  132. package/dist/src/transports/http.d.ts.map +1 -1
  133. package/dist/src/transports/http.js +101 -13
  134. package/dist/src/transports/http.js.map +1 -1
  135. package/dist/src/transports/sse.d.ts +1 -1
  136. package/dist/src/transports/sse.d.ts.map +1 -1
  137. package/dist/src/transports/sse.js +28 -18
  138. package/dist/src/transports/sse.js.map +1 -1
  139. package/dist/src/transports/stdio.d.ts +2 -2
  140. package/dist/src/transports/stdio.d.ts.map +1 -1
  141. package/dist/src/transports/stdio.js +77 -48
  142. package/dist/src/transports/stdio.js.map +1 -1
  143. package/dist/src/tui/audit-tailer.d.ts.map +1 -1
  144. package/dist/src/tui/audit-tailer.js +2 -1
  145. package/dist/src/tui/audit-tailer.js.map +1 -1
  146. package/dist/src/tui/useAuditWatcher.d.ts.map +1 -1
  147. package/dist/src/tui/useAuditWatcher.js +2 -1
  148. package/dist/src/tui/useAuditWatcher.js.map +1 -1
  149. package/dist/src/types.d.ts +1 -1
  150. package/dist/src/types.d.ts.map +1 -1
  151. package/dist/src/validator.d.ts +19 -28
  152. package/dist/src/validator.d.ts.map +1 -1
  153. package/dist/src/validator.js +315 -113
  154. package/dist/src/validator.js.map +1 -1
  155. package/examples/claude-desktop-burp-config.json +5 -7
  156. package/examples/claude-desktop-config.json +3 -4
  157. package/examples/scope-manifest.json +11 -11
  158. package/package.json +33 -13
  159. package/scripts/postinstall.cjs +14 -0
  160. package/examples/scope-test-integsec.json +0 -32
package/README.md CHANGED
@@ -1,756 +1,124 @@
1
- # IntegSec Agentic Pentest MCP Proxy
1
+ # IntegSec Agentic Pentest Proxy
2
2
 
3
- **Scope enforcement proxy for AI-driven penetration testing.**
3
+ An MCP proxy that checks tool calls against a pentest scope manifest before forwarding them to your MCP tools. It blocks calls it can identify as outside the targets, techniques, or time window you approved, and records decisions in a local audit log.
4
4
 
5
- The IntegSec Agentic Pentest MCP Proxy sits between an AI agent (Claude, GPT, etc.) and an MCP tool server ([TurboPentest](https://turbopentest.com), Nuclei MCP, etc.), intercepting every tool call and validating it against a scope manifest before it reaches the upstream server. Out-of-scope targets, banned techniques, and expired engagement windows are blocked in real time with a full audit trail.
5
+ **Requires Node.js 22 or newer.** The proxy supports stdio tools, SSE upstreams such as Burp Suite, and HTTP upstreams.
6
6
 
7
- Built by **[IntegSec](https://integsec.com)** — offensive cybersecurity testing and threat simulation for modern organizations moving at AI speed.
7
+ ## Quick start: add an MCP tool
8
8
 
9
- ```
10
- +------------+ JSON-RPC +---------------------+ JSON-RPC +----------------+
11
- | AI Agent | ----------> | IntegSec Agentic | ----------> | Upstream MCP |
12
- | (Claude) | <---------- | Pentest MCP Proxy | <---------- | (TurboPentest) |
13
- +------------+ allow/block | (validate + audit) | forwarded +----------------+
14
- +---------------------+
15
- |
16
- v
17
- +-----------+
18
- | Audit Log |
19
- | (JSONL / |
20
- | Cloud) |
21
- +-----------+
22
- ```
23
-
24
- > **Using AI agents for pentesting?** [TurboPentest](https://turbopentest.com) delivers agentic penetration testing powered by Claude — 15 orchestrated security tools, OWASP Top 10 coverage, results in under 4 hours, blockchain-attested reports. Starting at $99/domain. Pair it with this proxy for scope-safe autonomous testing.
25
-
26
- ---
27
-
28
- ## Table of Contents
29
-
30
- - [Why This Exists](#why-this-exists)
31
- - [Features](#features)
32
- - [Quick Start](#quick-start)
33
- - [Installation](#installation)
34
- - [Configuration](#configuration)
35
- - [Scope Manifest](#scope-manifest)
36
- - [Environment Variables](#environment-variables)
37
- - [Technique Mappings](#technique-mappings)
38
- - [Usage](#usage)
39
- - [CLI](#cli)
40
- - [Claude Desktop Integration](#claude-desktop-integration)
41
- - [Claude Code Integration](#claude-code-integration)
42
- - [Docker](#docker)
43
- - [HTTP Mode](#http-mode)
44
- - [TUI Monitor](#tui-monitor)
45
- - [How Validation Works](#how-validation-works)
46
- - [Audit Logging](#audit-logging)
47
- - [Examples](#examples)
48
- - [Contributing](#contributing)
49
- - [Architecture](#architecture)
50
- - [Development Setup](#development-setup)
51
- - [Project Structure](#project-structure)
52
- - [Testing](#testing)
53
- - [Adding a New Audit Backend](#adding-a-new-audit-backend)
54
- - [Adding Tool Extraction Support](#adding-tool-extraction-support)
55
- - [Code Style](#code-style)
56
- - [Roadmap](#roadmap)
57
- - [About IntegSec](#about-integsec)
58
- - [License](#license)
59
-
60
- ---
61
-
62
- ## Why This Exists
63
-
64
- AI agents equipped with offensive security tools (nmap, sqlmap, Metasploit, etc.) can cause serious harm if they stray outside an authorized engagement scope. A misconfigured prompt or hallucinated target can turn a legitimate pentest into an unauthorized attack.
65
-
66
- The IntegSec Agentic Pentest MCP Proxy solves this by enforcing scope at the protocol layer — not at the prompt layer. Every tool invocation is validated against a cryptographically-loadable scope manifest before it reaches the upstream MCP server. If the target, technique, or timing is wrong, the call is blocked and logged.
67
-
68
- **No prompt engineering. No honor system. Enforcement.**
69
-
70
-
71
- ---
72
-
73
- ## Features
74
-
75
- - **8-step validation pipeline** — technique check, time window, target extraction, DNS resolution, exclusion check, authorization check, default deny
76
- - **Fail-closed design** — DNS failures, unknown targets, and expired windows all result in blocks
77
- - **19 tool extractors + smart fallback** — built-in parameter extraction for nmap, sqlmap, burp, curl, metasploit, nuclei, gobuster, ffuf, nikto, and more, with generic fallback for unknown tools
78
- - **Wildcard domain matching** — `*.acme.com` matches `app.acme.com` but not `deep.sub.acme.com`
79
- - **CIDR + IPv6 support** — authorize by IP range, detect RFC-1918 private ranges and cloud metadata endpoints
80
- - **DNS caching with TTL** — parallel A+AAAA resolution with in-flight deduplication
81
- - **Technique blocking** — categorize tools into `dos`, `destructive`, `social_engineering`, etc., with custom mappings
82
- - **Parameter sanitization** — passwords, tokens, API keys, and secrets are redacted before logging
83
- - **Multi-backend audit logging** — local JSONL, AWS CloudWatch, Azure Monitor, GCP Cloud Logging
84
- - **Two transport modes** — stdio (child process) and HTTP (reverse proxy)
85
- - **Cloud-native manifest loading** — load scope from file, env var, AWS Secrets Manager, Azure Key Vault, or GCP Secret Manager
86
- - **Docker-ready** — multi-stage build, runs as non-root user
87
- - **Zero runtime config files** — everything via environment variables
88
-
89
- ---
90
-
91
- ## Quick Start
92
-
93
- ```bash
94
- # Install
95
- npm install -g @integsec/agentic-pentest-proxy
96
-
97
- # Create a scope manifest
98
- cat > scope.json << 'EOF'
99
- {
100
- "engagement_id": "ENG-2025-0042",
101
- "client": "Acme Corp",
102
- "operator": "operator@yourfirm.com",
103
- "authorized_targets": {
104
- "ip_ranges": ["10.10.10.0/24"],
105
- "domains": ["*.acme.com"],
106
- "urls": [],
107
- "cloud_accounts": []
108
- },
109
- "excluded_targets": ["hr.acme.com"],
110
- "authorized_techniques": ["recon", "web_app"],
111
- "excluded_techniques": ["dos", "destructive", "social_engineering"],
112
- "engagement_window": {
113
- "start": "2026-03-27T08:00:00Z",
114
- "end": "2026-04-10T17:00:00Z"
115
- }
116
- }
117
- EOF
118
-
119
- # Run the proxy (stdio mode, wrapping TurboPentest MCP)
120
- SCOPE_MANIFEST_PATH=./scope.json \
121
- UPSTREAM_MCP_COMMAND=npx \
122
- UPSTREAM_MCP_ARGS="-y,@turbopentest/mcp-server" \
123
- integsec-agentic-pentest-proxy
124
- ```
125
-
126
- The proxy will intercept all tool calls, validate targets against scope.json, and log decisions to `./audit/`.
127
-
128
- ---
129
-
130
- ## Installation
131
-
132
- ### npm (global)
133
-
134
- ```bash
135
- npm install -g @integsec/agentic-pentest-proxy
136
- ```
137
-
138
- ### npm (project-local)
139
-
140
- ```bash
141
- npm install @integsec/agentic-pentest-proxy
142
- ```
143
-
144
- ### From source
145
-
146
- ```bash
147
- git clone https://github.com/integsec/agentic-pentest-mcp-proxy.git
148
- cd agentic-pentest-mcp-proxy
149
- npm install
150
- npm run build
151
- ```
152
-
153
- ### Docker
154
-
155
- ```bash
156
- docker build -t integsec-agentic-pentest-proxy .
157
- docker run --rm \
158
- -e SCOPE_MANIFEST_PATH=/scope.json \
159
- -e MCP_TRANSPORT=sse \
160
- -e UPSTREAM_MCP_URL=http://host.docker.internal:8080 \
161
- -e PROXY_PORT=9090 \
162
- -v ./scope.json:/scope.json:ro \
163
- -p 9090:9090 \
164
- integsec-agentic-pentest-proxy
165
- ```
166
-
167
- ---
168
-
169
- ## Configuration
170
-
171
- ### Scope Manifest
172
-
173
- The scope manifest defines the boundaries of a penetration testing engagement. It is validated against a strict Zod schema on load.
174
-
175
- ```jsonc
176
- {
177
- // Unique engagement identifier — used in audit log filenames
178
- "engagement_id": "ENG-2025-0142",
179
-
180
- // Client and operator for audit attribution
181
- "client": "Acme Corp",
182
- "operator": "operator@integsec.com",
183
-
184
- // What the AI agent IS allowed to target
185
- "authorized_targets": {
186
- "ip_ranges": ["10.10.10.0/24", "203.0.113.0/28"],
187
- "domains": ["*.acme.com", "acme-staging.example.com"],
188
- "urls": ["https://app.acme.com", "https://api.acme.com"],
189
- "cloud_accounts": ["aws:123456789012"]
190
- },
191
-
192
- // Override: these are NEVER allowed even if they match above
193
- "excluded_targets": ["203.0.113.5", "hr.acme.com"],
194
-
195
- // Technique categories (for reference / future enforcement)
196
- "authorized_techniques": ["recon", "web_app", "api_testing"],
197
-
198
- // Tool categories that are always blocked
199
- "excluded_techniques": ["dos", "destructive", "social_engineering"],
200
-
201
- // Time window — calls outside this range are blocked
202
- "engagement_window": {
203
- "start": "2026-03-26T08:00:00Z",
204
- "end": "2026-04-09T17:00:00Z"
205
- }
206
- }
207
- ```
208
-
209
- **Loading priority:** The proxy checks these sources in order and uses the first one found:
210
-
211
- 1. `SCOPE_MANIFEST_JSON` — inline JSON in env var
212
- 2. `SCOPE_MANIFEST_PATH` — path to a local JSON file
213
- 3. `SCOPE_MANIFEST_SECRET_ARN` — AWS Secrets Manager
214
- 4. `SCOPE_MANIFEST_KEYVAULT_URI` — Azure Key Vault
215
- 5. `SCOPE_MANIFEST_GCP_SECRET` — GCP Secret Manager
216
-
217
- ### Environment Variables
218
-
219
- | Variable | Default | Description |
220
- |----------|---------|-------------|
221
- | **Manifest (one required)** | | |
222
- | `SCOPE_MANIFEST_PATH` | — | Path to scope manifest JSON file |
223
- | `SCOPE_MANIFEST_JSON` | — | Inline scope manifest JSON string |
224
- | `SCOPE_MANIFEST_SECRET_ARN` | — | AWS Secrets Manager ARN |
225
- | `SCOPE_MANIFEST_KEYVAULT_URI` | — | Azure Key Vault secret URI |
226
- | `SCOPE_MANIFEST_GCP_SECRET` | — | GCP Secret Manager resource name |
227
- | **Transport** | | |
228
- | `MCP_TRANSPORT` | `stdio` | Transport mode: `stdio` or `sse` |
229
- | `UPSTREAM_MCP_COMMAND` | — | Command to spawn upstream MCP (stdio mode) |
230
- | `UPSTREAM_MCP_ARGS` | — | Comma-separated args for upstream command |
231
- | `UPSTREAM_MCP_URL` | — | Upstream MCP HTTP URL (HTTP mode) |
232
- | `PROXY_PORT` | `9090` | HTTP listen port (HTTP mode) |
233
- | **Audit** | | |
234
- | `AUDIT_LOG_PATH` | `./audit/` | Directory for local JSONL audit logs |
235
- | `AWS_LOG_GROUP` | — | AWS CloudWatch log group name |
236
- | `AWS_REGION` | — | AWS region for CloudWatch |
237
- | `AZURE_LOG_WORKSPACE_ID` | — | Azure Log Analytics workspace ID |
238
- | `AZURE_DCR_IMMUTABLE_ID` | — | Azure Data Collection Rule immutable ID |
239
- | `AZURE_DCR_STREAM_NAME` | `Custom-MCPProxyAudit_CL` | Azure DCR stream name |
240
- | `GOOGLE_CLOUD_PROJECT` | — | GCP project ID for Cloud Logging |
241
- | **Tuning** | | |
242
- | `TECHNIQUE_MAP_PATH` | — | Path to custom technique mappings JSON |
243
- | `DNS_CACHE_TTL` | `60` | DNS cache TTL in seconds |
244
- | `LOG_LEVEL` | `INFO` | Log verbosity |
245
- | `PROXY_VERSION` | `0.1.0` | Version string in audit entries |
246
-
247
- See [`.env.example`](.env.example) for a complete template.
248
-
249
- ### Technique Mappings
250
-
251
- The proxy ships with built-in technique categories (`dos`, `destructive`, `social_engineering`). You can extend these with a custom mapping file:
252
-
253
- ```json
254
- {
255
- "wireless": {
256
- "exact": ["aircrack-ng", "wifite", "kismet"],
257
- "patterns": ["wifi", "wireless"]
258
- },
259
- "physical": {
260
- "exact": ["lockpick_sim"],
261
- "patterns": ["physical"]
262
- }
263
- }
264
- ```
265
-
266
- Point `TECHNIQUE_MAP_PATH` at this file. Custom mappings are merged with built-in ones — they don't replace them.
267
-
268
- ---
269
-
270
- ## Usage
271
-
272
- ### CLI
273
-
274
- ```bash
275
- # stdio mode — wrap any MCP server
276
- SCOPE_MANIFEST_PATH=./scope.json \
277
- UPSTREAM_MCP_COMMAND=npx \
278
- UPSTREAM_MCP_ARGS="-y,@turbopentest/mcp-server" \
279
- integsec-agentic-pentest-proxy
280
-
281
- # HTTP mode — reverse proxy to a running MCP server
282
- SCOPE_MANIFEST_PATH=./scope.json \
283
- MCP_TRANSPORT=sse \
284
- UPSTREAM_MCP_URL=http://localhost:8080 \
285
- PROXY_PORT=9090 \
286
- integsec-agentic-pentest-proxy
287
- ```
288
-
289
- ### Claude Desktop Integration
290
-
291
- Add to your Claude Desktop `claude_desktop_config.json`:
292
-
293
- ```json
294
- {
295
- "mcpServers": {
296
- "turbopentest-scoped": {
297
- "command": "npx",
298
- "args": ["-y", "@integsec/agentic-pentest-proxy"],
299
- "env": {
300
- "SCOPE_MANIFEST_PATH": "/path/to/scope.json",
301
- "MCP_TRANSPORT": "stdio",
302
- "UPSTREAM_MCP_COMMAND": "npx",
303
- "UPSTREAM_MCP_ARGS": "-y,@turbopentest/mcp-server",
304
- "AUDIT_LOG_PATH": "./audit/"
305
- }
306
- }
307
- }
308
- }
309
- ```
310
-
311
- ### Claude Code Integration
312
-
313
- Add to your `.mcp.json` or project settings:
314
-
315
- ```json
316
- {
317
- "mcpServers": {
318
- "turbopentest-scoped": {
319
- "command": "npx",
320
- "args": ["-y", "@integsec/agentic-pentest-proxy"],
321
- "env": {
322
- "SCOPE_MANIFEST_PATH": "./scope.json",
323
- "UPSTREAM_MCP_COMMAND": "npx",
324
- "UPSTREAM_MCP_ARGS": "-y,@turbopentest/mcp-server"
325
- }
326
- }
327
- }
328
- }
329
- ```
330
-
331
- ### Docker
332
-
333
- ```bash
334
- # HTTP mode
335
- docker run --rm \
336
- -e SCOPE_MANIFEST_PATH=/scope.json \
337
- -e MCP_TRANSPORT=sse \
338
- -e UPSTREAM_MCP_URL=http://host.docker.internal:8080 \
339
- -e PROXY_PORT=9090 \
340
- -v ./scope.json:/scope.json:ro \
341
- -v ./audit:/app/audit \
342
- -p 9090:9090 \
343
- integsec-agentic-pentest-proxy
344
-
345
- # With AWS CloudWatch
346
- docker run --rm \
347
- -e SCOPE_MANIFEST_SECRET_ARN=arn:aws:secretsmanager:us-east-1:123456789012:secret:scope \
348
- -e MCP_TRANSPORT=sse \
349
- -e UPSTREAM_MCP_URL=http://host.docker.internal:8080 \
350
- -e AWS_LOG_GROUP=/integsec/mcp-proxy \
351
- -e AWS_REGION=us-east-1 \
352
- -p 9090:9090 \
353
- integsec-agentic-pentest-proxy
354
- ```
355
-
356
- ---
357
-
358
- ## TUI Monitor
359
-
360
- A real-time terminal dashboard for monitoring proxy decisions as they happen.
361
-
362
- ```bash
363
- # Monitor the default audit directory
364
- integsec-agentic-pentest-tui
365
-
366
- # Monitor a specific directory
367
- integsec-agentic-pentest-tui --audit-path /path/to/audit
9
+ 1. Install the proxy:
368
10
 
369
- # Filter to a specific engagement
370
- integsec-agentic-pentest-tui --engagement ENG-2026-TEST-001
371
- ```
372
-
373
- The TUI displays three panels:
374
-
375
- - **Engagement Header** — engagement ID, client, operator
376
- - **Stats Panel** — running allowed/blocked counts, top targets, top tools
377
- - **Live Feed** — color-coded scrolling decision feed (green = allowed, red = blocked)
378
-
379
- Run the TUI in a separate terminal while the proxy is active (via Claude Desktop, Claude Code, or CLI). It tails the audit JSONL files and updates in real time.
380
-
381
- ---
382
-
383
- ## How Validation Works
384
-
385
- Every `tools/call` JSON-RPC message passes through an 8-step validation pipeline:
386
-
387
- ```
388
- 1. TECHNIQUE CHECK ──▶ Is the tool in an excluded_techniques category?
389
- │ YES → BLOCKED_TECHNIQUE
390
- ▼
391
- 2. TIME WINDOW ──────▶ Is current time within engagement_window?
392
- │ NO → BLOCKED_OUTSIDE_WINDOW
393
- ▼
394
- 3. TARGET EXTRACTION ▶ Extract hostname/IP from tool parameters
395
- │ (19 tool-specific extractors + fallback params)
396
- ▼
397
- 4. NO TARGET? ───────▶ No target-like parameter found?
398
- │ YES → ALLOWED_NO_TARGET
399
- ▼
400
- 5. DNS RESOLUTION ───▶ Resolve hostname to A + AAAA records
401
- │ NXDOMAIN → BLOCKED_DNS_FAILED
402
- ▼
403
- 6. EXCLUSION CHECK ──▶ Does target match excluded_targets?
404
- │ YES → BLOCKED_EXCLUDED_TARGET
405
- ▼
406
- 7. AUTHORIZATION ────▶ Does target match authorized_targets?
407
- │ YES → ALLOWED
408
- ▼
409
- 8. DEFAULT DENY ─────▶ BLOCKED_NOT_IN_SCOPE
410
- ```
411
-
412
- **Key design decisions:**
413
- - **Exclusions beat authorizations.** If `hr.acme.com` is in `excluded_targets`, it's blocked even if `*.acme.com` is authorized.
414
- - **DNS failures are blocks.** If the proxy can't resolve a hostname, it won't forward the call. Fail closed.
415
- - **Private IPs require explicit authorization.** RFC-1918 ranges and cloud metadata endpoints (169.254.169.254) are only allowed if they appear in `authorized_targets.ip_ranges`.
416
- - **No target = allowed.** Tools that don't operate on network targets (e.g., `list_tools`, `get_version`) pass through.
417
-
418
- ---
419
-
420
- ## Audit Logging
421
-
422
- Every validation decision produces an audit entry:
423
-
424
- ```json
425
- {
426
- "timestamp": "2026-03-27T14:32:01.000Z",
427
- "engagement_id": "ENG-2025-0142",
428
- "client": "Acme Corp",
429
- "operator": "operator@integsec.com",
430
- "tool_name": "nmap_scan",
431
- "tool_parameters": { "target": "10.10.10.5", "flags": "[REDACTED]" },
432
- "extracted_target": "10.10.10.5",
433
- "resolved_ips": ["10.10.10.5"],
434
- "decision": "ALLOWED",
435
- "decision_reason": "Target 10.10.10.5 matches authorized IP range 10.10.10.0/24",
436
- "matched_scope_item": "10.10.10.0/24",
437
- "duration_ms": 2,
438
- "proxy_version": "0.1.0"
439
- }
440
- ```
441
-
442
- ### Backends
443
-
444
- | Backend | Config | Format |
445
- |---------|--------|--------|
446
- | **Local** (always active) | `AUDIT_LOG_PATH` | JSONL files: `{engagement_id}.jsonl` |
447
- | **AWS CloudWatch** | `AWS_LOG_GROUP` + `AWS_REGION` | Log events in `{engagement_id}/{date}` stream |
448
- | **Azure Monitor** | `AZURE_LOG_WORKSPACE_ID` + `AZURE_DCR_IMMUTABLE_ID` | Logs Ingestion API via Data Collection Rules |
449
- | **GCP Cloud Logging** | `GOOGLE_CLOUD_PROJECT` | Cloud Logging entries with severity mapping |
450
-
451
- Multiple backends can be active simultaneously. Entries are buffered and flushed every 5 seconds. Backend failures are isolated — a CloudWatch error won't affect local logging.
452
-
453
- ### Decision Types
454
-
455
- | Decision | Meaning |
456
- |----------|---------|
457
- | `ALLOWED` | Target matches an authorized scope item |
458
- | `ALLOWED_NO_TARGET` | Tool has no network target parameter |
459
- | `BLOCKED_TECHNIQUE` | Tool belongs to an excluded technique category |
460
- | `BLOCKED_OUTSIDE_WINDOW` | Current time is outside the engagement window |
461
- | `BLOCKED_EXCLUDED_TARGET` | Target is explicitly excluded |
462
- | `BLOCKED_NOT_IN_SCOPE` | Target doesn't match any authorized scope item |
463
- | `BLOCKED_DNS_FAILED` | DNS resolution returned no addresses |
464
-
465
- ---
466
-
467
- ## Examples
468
-
469
- See the [`examples/`](examples/) directory for:
470
-
471
- - **[`scope-manifest.json`](examples/scope-manifest.json)** — a real-world scope manifest
472
- - **[`claude-desktop-config.json`](examples/claude-desktop-config.json)** — Claude Desktop integration config
473
- - **[`technique-map.json`](examples/technique-map.json)** — custom technique category mappings
474
-
475
- ---
476
-
477
- ## Contributing
478
-
479
- Contributions are welcome. The IntegSec Agentic Pentest MCP Proxy is an open-source project under the MIT license.
480
-
481
- ### Architecture
482
-
483
- ```
484
- bin/
485
- integsec-agentic-pentest-proxy.ts CLI entry point — loads config, manifest, starts transport
486
-
487
- src/
488
- proxy.ts ScopeEnforcementProxy — core orchestrator
489
- validator.ts ScopeValidator — 8-step validation pipeline
490
- extractor.ts Target extraction from tool parameters (19 tools + fallback)
491
- domain-matcher.ts Wildcard and exact domain matching
492
- ip-matcher.ts CIDR matching, RFC-1918 detection
493
- dns-resolver.ts Caching DNS resolver with deduplication
494
- technique-checker.ts Tool → technique category mapping
495
- sanitizer.ts Parameter redaction for audit logs
496
- manifest.ts Manifest loading (file, env, AWS, Azure, GCP)
497
- manifest-schema.ts Zod schema for scope manifest
498
- config.ts Environment variable loader
499
- types.ts TypeScript type definitions
500
-
501
- audit/
502
- index.ts AuditLogger facade — manages multiple backends
503
- local.ts Local JSONL file logger
504
- cloudwatch.ts AWS CloudWatch backend
505
- azure-monitor.ts Azure Monitor backend
506
- gcp-logging.ts GCP Cloud Logging backend
507
-
508
- transports/
509
- stdio.ts stdio transport — spawns upstream as child process
510
- http.ts HTTP reverse proxy transport
511
- ```
512
-
513
- ### Development Setup
514
-
515
- ```bash
516
- # Clone the repo
517
- git clone https://github.com/integsec/agentic-pentest-mcp-proxy.git
518
- cd agentic-pentest-mcp-proxy
519
-
520
- # Install dependencies
521
- npm install
522
-
523
- # Build
524
- npm run build
525
-
526
- # Run tests
527
- npm test
528
-
529
- # Watch mode (rebuild on change)
530
- npm run dev
531
-
532
- # Type check without emitting
533
- npm run lint
534
- ```
535
-
536
- **Requirements:**
537
- - Node.js >= 20.0.0
538
- - npm >= 9
539
-
540
- ### Project Structure
541
-
542
- The codebase follows these principles:
543
-
544
- - **Pure TypeScript, ES modules** — no CommonJS, no bundler
545
- - **Zod for runtime validation** — all external data is schema-validated
546
- - **Fail-closed security** — when in doubt, block
547
- - **Isolated backends** — failures in one audit backend never affect others
548
- - **No classes where functions suffice** — classes only for stateful components (DnsResolver, AuditLogger, ScopeEnforcementProxy)
549
- - **No external HTTP framework** — uses Node.js built-in `http` module for the HTTP transport
550
-
551
- ### Testing
552
-
553
- Tests use [Vitest](https://vitest.dev/) and are organized into unit and integration suites.
554
-
555
- ```bash
556
- # Run all tests
557
- npm test
558
-
559
- # Run tests in watch mode
560
- npm run test:watch
11
+ ```bash
12
+ npm install -g @integsec/agentic-pentest-proxy
13
+ ```
561
14
 
562
- # Run a specific test file
563
- npx vitest run tests/unit/validator.test.ts
564
- ```
15
+ 2. Create a scope manifest with the guided wizard:
565
16
 
566
- **Test structure:**
17
+ ```bash
18
+ integsec-agentic-pentest-manifest new -o scope.json
19
+ ```
567
20
 
568
- ```
569
- tests/
570
- unit/
571
- validator.test.ts Validation pipeline (comprehensive)
572
- extractor.test.ts Target extraction for 19 tools + fallback
573
- domain-matcher.test.ts Domain pattern matching
574
- ip-matcher.test.ts CIDR and private IP detection
575
- dns-resolver.test.ts DNS caching and deduplication
576
- manifest-schema.test.ts Scope manifest schema validation
577
- manifest.test.ts Manifest loading from all sources
578
- technique-checker.test.ts Technique categorization
579
- sanitizer.test.ts Parameter redaction
580
- audit-local.test.ts Local audit file writing
581
- smoke.test.ts Module import sanity check
582
- integration/
583
- proxy.test.ts Full message flow through proxy
584
- fixtures/
585
- scope-valid.json Valid scope manifest
586
- scope-expired.json Expired scope manifest
587
- tool-calls.json Sample JSON-RPC messages
588
- ```
21
+ Set the real engagement targets and time window. Review the generated file with the engagement owner before using it.
589
22
 
590
- **Writing tests:**
591
- - Every new module should have a corresponding test file in `tests/unit/`
592
- - Use the fixtures in `tests/fixtures/` for scope manifests and tool call payloads
593
- - Mock DNS and cloud SDKs in unit tests; integration tests use the full proxy
594
- - Aim for edge cases: invalid inputs, boundary conditions, Unicode domains, IPv6, etc.
23
+ 3. Generate a client entry for **each** MCP tool. Put the tool's normal launch command after `--`:
595
24
 
596
- ### Adding a New Audit Backend
25
+ ```bash
26
+ integsec-agentic-pentest-setup --name scanner-scoped --manifest ./scope.json -- npx -y @example/scanner-mcp
27
+ ```
597
28
 
598
- 1. Create `src/audit/your-backend.ts` implementing the `AuditBackend` interface:
599
- ```typescript
600
- export interface AuditBackend {
601
- name: string;
602
- write(entries: AuditEntry[]): Promise<void>;
29
+ Replace `npx -y @example/scanner-mcp` with the command from your tool's own setup instructions. The command prints an `mcpServers` entry. Paste that entry into your MCP client's configuration and restart the client. To add another tool, run setup again with a new `--name`, then add its entry under the same `mcpServers` object.
30
+
31
+ For example, the generated entry has this shape (the setup command fills in your actual manifest and audit paths):
32
+
33
+ ```json
34
+ {
35
+ "mcpServers": {
36
+ "scanner-scoped": {
37
+ "command": "integsec-agentic-pentest-proxy",
38
+ "env": {
39
+ "SCOPE_MANIFEST_PATH": "/path/to/scope.json",
40
+ "MCP_TRANSPORT": "stdio",
41
+ "AUDIT_LOG_PATH": "/path/to/audit",
42
+ "UPSTREAM_MCP_COMMAND": "npx",
43
+ "UPSTREAM_MCP_ARGS_JSON": "[\"-y\",\"@example/scanner-mcp\"]"
44
+ }
45
+ }
46
+ }
603
47
  }
604
48
  ```
605
- 2. Add it to the AuditLogger in `bin/integsec-agentic-pentest-proxy.ts` when the relevant env vars are set.
606
- 3. Add a unit test in `tests/unit/audit-your-backend.test.ts`.
607
- 4. Document the env vars in this README and `.env.example`.
608
-
609
- ### Adding Tool Extraction Support
610
-
611
- To add target extraction for a new tool, edit `src/extractor.ts`:
612
-
613
- 1. Add the tool name to the `TOOL_MAPPINGS` array with its target parameter name(s).
614
- 2. If the tool uses a non-standard parameter format, add a case to the extraction logic.
615
- 3. Add test cases in `tests/unit/extractor.test.ts`.
616
-
617
- ### Code Style
618
-
619
- - TypeScript strict mode
620
- - No `any` types — use `unknown` and narrow
621
- - Explicit return types on exported functions
622
- - No default exports — use named exports
623
- - Keep functions small and focused
624
- - Security-sensitive code gets extra test coverage
625
-
626
- ---
627
-
628
- ## Roadmap
629
49
 
630
- The following is the planned development roadmap for the IntegSec Agentic Pentest MCP Proxy. Items are grouped by phase and roughly ordered by priority within each phase.
50
+ Use the `mcpServers` block in Claude Desktop's MCP configuration or in your Claude Code project's `.mcp.json`. Other MCP clients may label the server settings differently; use the generated command and environment variables in their equivalent fields. The proxy starts when the client launches the tool.
631
51
 
632
- ### Phase 1 — Core Hardening (v0.2)
633
-
634
- - [ ] **Signed scope manifests** — Ed25519 signatures on manifests to prevent tampering, with key pinning
635
- - [ ] **Manifest hot-reload** — watch manifest file for changes and reload without restart
636
- - [ ] **Scope manifest v2 schema** — add per-tool overrides, port ranges, protocol restrictions, and path-level URL scoping
637
- - [ ] **Rate limiting** — per-tool and per-target rate limits to prevent runaway agents
638
- - [ ] **Metrics endpoint** — Prometheus `/metrics` with counters for allowed/blocked decisions, latency histograms
639
- - [ ] **WebSocket transport** — support MCP over WebSocket for persistent connections
640
- - [ ] **Plugin system for validators** — allow custom validation steps via a plugin interface
52
+ 4. Watch decisions in another terminal:
641
53
 
642
- ### Phase 2 — Interception & Manipulation Engine (v0.3)
643
-
644
- > Burp Suite-style interception, inspection, and modification of MCP tool calls in real time.
54
+ ```bash
55
+ integsec-agentic-pentest-tui --audit-path ./audit
56
+ ```
645
57
 
646
- - [ ] **Intercept mode** — pause tool calls before forwarding, allowing human review and approval
647
- - [ ] **Request modification** — edit tool parameters before forwarding (e.g., add `--safe-mode` flags, restrict scan intensity)
648
- - [ ] **Response modification** — filter or transform upstream responses before they reach the AI agent
649
- - [ ] **Replay engine** — capture and replay tool call sequences for testing and training
650
- - [ ] **Match & replace rules** — regex-based rules to automatically rewrite parameters (e.g., replace hostnames, inject headers)
651
- - [ ] **Breakpoints** — conditional breakpoints on tool name, target, technique, or parameter patterns
652
- - [ ] **Interception history** — searchable log of all intercepted, modified, forwarded, and dropped messages
653
- - [ ] **Scope diff viewer** — visual diff showing what the agent requested vs. what was actually forwarded
654
- - [ ] **Redirection engine** — reroute tool calls to alternative targets (e.g., redirect production targets to staging, honeypots, or simulation environments)
655
- - [ ] **Upstream multiplexing** — forward a single tool call to multiple upstream servers simultaneously for comparison or redundancy
58
+ Setup prints the exact audit path to use. If your shell is in another directory, use that printed path. For a one-off TUI without a global install:
656
59
 
657
- ### Phase 3 — Terminal UI (v0.4)
60
+ ```bash
61
+ npm exec --yes --package=@integsec/agentic-pentest-proxy -- integsec-agentic-pentest-tui --audit-path ./audit
62
+ ```
658
63
 
659
- > A real-time terminal dashboard for monitoring and controlling the proxy from the command line.
64
+ The TUI reads local audit files; it does not start the proxy. [See TUI screenshots](docs/tui.md).
660
65
 
661
- - [ ] **Live decision feed** — streaming view of ALLOWED/BLOCKED decisions as they happen
662
- - [ ] **Scope summary panel** — display active engagement info, authorized targets, and time window countdown
663
- - [ ] **Audit log viewer** — browse and filter audit entries with keyboard navigation
664
- - [ ] **Intercept queue** — review, approve, modify, or drop pending intercepted tool calls from the TUI
665
- - [ ] **Target heatmap** — ASCII visualization of which targets are being hit and how often
666
- - [ ] **Technique breakdown** — live stats on tool categories being used
667
- - [ ] **Session management** — start, pause, resume, and terminate proxy sessions
668
- - [ ] **Keyboard shortcuts** — vim-style bindings for rapid navigation
669
- - [ ] **Multi-pane layout** — configurable split views (decisions + audit + intercept queue)
670
- - [ ] **Dark/light themes** — because terminal aesthetics matter
66
+ ![Fictional TUI session showing allowed and blocked MCP calls](docs/images/tui-out-of-scope.png)
671
67
 
672
- ### Phase 4 — Web GUI (v0.5)
68
+ ## Other MCP tool types
673
69
 
674
- > Full-featured browser-based interface for teams, with collaboration features.
70
+ | Tool connection | What to do |
71
+ | --- | --- |
72
+ | **stdio** tool launched by a command | Use the setup command above with `-- <command> [args...]`. |
73
+ | **SSE** upstream already listening, such as Burp Suite | Use `integsec-agentic-pentest-setup --name burp-scoped --manifest ./scope.json --sse http://127.0.0.1:9876`. |
74
+ | **HTTP** upstream | Run the proxy as an HTTP service and point your MCP client at it. [HTTP and Docker guide](docs/integrations.md#http-and-docker). |
675
75
 
676
- - [ ] **Dashboard** — real-time overview of active engagements, decision rates, and alerts
677
- - [ ] **Scope manifest editor** — visual editor with validation, preview, and version history
678
- - [ ] **Audit explorer** — filterable, sortable table of all audit entries with export (CSV, JSON)
679
- - [ ] **Intercept workspace** — browser-based intercept, modify, and forward interface with syntax highlighting
680
- - [ ] **Request/response inspector** — detailed view of tool call parameters, extracted targets, DNS results, and validation steps
681
- - [ ] **Engagement timeline** — chronological visualization of all tool calls with scope boundary overlay
682
- - [ ] **Team collaboration** — multi-user access with role-based permissions (operator, reviewer, read-only)
683
- - [ ] **Engagement management** — create, clone, archive, and compare scope manifests across engagements
684
- - [ ] **Alert rules** — configurable notifications (email, Slack, webhook) on scope violations or anomalous patterns
685
- - [ ] **Report generation** — exportable engagement summary with decision statistics, target coverage, and compliance evidence
686
- - [ ] **API** — REST/GraphQL API for programmatic access to all GUI features
76
+ Use one generated client entry per upstream tool. A single scope manifest can be shared by several entries; each call still gets checked. [More client examples](docs/integrations.md).
687
77
 
688
- ### Phase 5 — Offensive Security MCP Marketplace (v1.0)
78
+ ## What gets checked
689
79
 
690
- > A curated registry of offensive security MCP servers, each with scope enforcement metadata.
80
+ The proxy checks MCP `tools/call` arguments it can inspect. It blocks unknown target-bearing arguments, out-of-scope targets, explicit exclusions, restricted techniques, expired engagement windows, and free-form commands by default. DNS names authorized through IP ranges must resolve entirely inside the allowed ranges. Local JSONL auditing is always on; cloud logging is optional.
691
81
 
692
- - [ ] **Server registry** — searchable catalog of offensive security MCP servers (recon, exploitation, post-exploitation, reporting)
693
- - [ ] **Scope profiles** — each server publishes a scope profile declaring what targets/techniques it can affect
694
- - [ ] **One-click install** — install and configure MCP servers with automatic scope proxy wrapping
695
- - [ ] **Compatibility matrix** — which servers work with which AI agents (Claude, GPT, local LLMs)
696
- - [ ] **Community submissions** — submit and review MCP servers with quality ratings and security audits
697
- - [ ] **Technique taxonomy** — standardized technique categories (aligned with MITRE ATT&CK) for cross-server filtering
698
- - [ ] **Composite workflows** — chain multiple MCP servers into multi-stage attack workflows with per-stage scope constraints
699
- - [ ] **Sandboxed preview** — try MCP servers against a built-in vulnerable target before deploying
700
- - [ ] **License and compliance metadata** — track licensing, data handling, and compliance requirements per server
701
- - [ ] **Version management** — pin server versions, get update notifications, and review changelogs
82
+ The proxy cannot control destinations selected inside an upstream tool, HTTP redirects, targets read from files or encoded payloads, DNS changes after validation, or traffic that bypasses MCP. Use network egress controls and review each upstream tool's schema before relying on the proxy for an engagement. [Security model](docs/security.md).
702
83
 
703
- ### Phase 6 — Enterprise & Ecosystem (v1.x)
84
+ ## Install and release options
704
85
 
705
- - [ ] **SSO/OIDC integration** — enterprise authentication for the GUI and API
706
- - [ ] **Centralized policy server** — manage scope manifests across multiple proxies from a single control plane
707
- - [ ] **SIEM integration** — forward audit logs to Splunk, Elastic, Sentinel, etc.
708
- - [ ] **Compliance reporting** — automated reports for PCI-DSS, SOC 2, ISO 27001, and CREST engagement evidence
709
- - [ ] **Agent behavior analytics** — ML-based detection of anomalous agent behavior (target drift, technique escalation)
710
- - [ ] **Multi-agent support** — scope enforcement across multiple concurrent AI agents with shared state
711
- - [ ] **Engagement templates** — pre-built scope manifests for common engagement types (web app, internal network, cloud, API)
712
- - [ ] **SDK / library mode** — import scope validation as a library into custom agent frameworks without running a proxy
713
- - [ ] **CI/CD integration** — validate scope manifests in CI pipelines, run automated scope compliance checks
86
+ | Option | Command or image |
87
+ | --- | --- |
88
+ | Global npm install | `npm install -g @integsec/agentic-pentest-proxy` |
89
+ | Project install | `npm install @integsec/agentic-pentest-proxy` |
90
+ | GHCR image | `ghcr.io/integsec/agentic-pentest-proxy:latest` |
91
+ | Docker Hub image | `integsec/agentic-pentest-mcp-proxy:latest` |
714
92
 
715
- ### Future Explorations
93
+ The npm package includes the proxy, manifest builder, setup helper, and TUI executables. To see the optional install welcome banner, add `--foreground-scripts`; npm hides package install-script output by default. You can always run `integsec-agentic-pentest-proxy --help` for the same next steps. The welcome script does not access the network or modify files.
716
94
 
717
- - **MCP-native protocol extensions** — propose scope enforcement as a first-class MCP protocol feature
718
- - **Hardware security module (HSM) support** — store manifest signing keys in HSMs
719
- - **Air-gapped mode** — offline operation with pre-loaded manifests and local-only audit
720
- - **Agent scoring** — track per-agent compliance rates and generate trust scores over time
95
+ Google Cloud logging and Secret Manager SDKs are opt-in to keep the default install lean and free of their deprecated transitive package. If you use either GCP backend, install the SDKs alongside the proxy:
721
96
 
722
- ---
97
+ ```bash
98
+ npm install -g @integsec/agentic-pentest-proxy @google-cloud/logging @google-cloud/secret-manager
99
+ ```
723
100
 
724
- ## About IntegSec
101
+ AWS and Azure SDKs are included as optional dependencies. See [configuration and cloud setup](docs/configuration.md) for the required environment variables and Docker notes.
102
+ If you use GCP and are upgrading from 0.2.6, install the GCP SDKs before restarting the proxy; it now reports a missing Cloud Logging SDK at startup.
725
103
 
726
- **[IntegSec](https://integsec.com)** delivers human-expert-led agentic penetration testing for modern organizations moving at AI speed. We combine seasoned offensive security professionals with autonomous AI agents to find real vulnerabilities — not just scan results.
104
+ ## Troubleshooting
727
105
 
728
- ### Our Services
106
+ | Symptom | Check |
107
+ | --- | --- |
108
+ | Tool does not appear in your MCP client | Paste the generated entry inside one `mcpServers` object, restart the client, and confirm the client can run `integsec-agentic-pentest-proxy`. |
109
+ | TUI shows no decisions | Start a tool call, then use the exact audit path printed by setup. The TUI and client may have different working directories. |
110
+ | Call is blocked | Check the decision and reason in the TUI or audit JSONL. Confirm the target, exclusions, technique, and window in your manifest. |
111
+ | GCP backend says its SDK is missing | Install the two GCP packages shown above alongside the proxy. |
112
+ | Need all CLI options | Run `integsec-agentic-pentest-proxy --help`, `integsec-agentic-pentest-setup --help`, `integsec-agentic-pentest-manifest --help`, or `integsec-agentic-pentest-tui --help`. |
729
113
 
730
- - **[Pentest as a Service (PTaaS)](https://integsec.com/become-unbreachable)** — continuous human-led penetration testing for web apps, networks, APIs, and cloud environments
731
- - **[Adversary Simulation & Red Teaming](https://integsec.com/redteaming)** — real-world attack simulations to evaluate your security posture
732
- - **LLM Red Teaming** — security testing for AI/LLM applications
733
- - **OWASP Reviews** — structured assessments aligned with OWASP Testing Guides
734
- - **Offensive Cybersecurity Training** — level up your team's security skills
735
-
736
- ### TurboPentest
737
-
738
- **[TurboPentest](https://turbopentest.com)** is our agentic penetration testing platform. Paladin AI agents powered by Claude orchestrate 15 professional security tools — Nmap, OWASP ZAP, Nuclei, Nikto, Subfinder, FFUF, OpenVAS, Semgrep, and more — to deliver comprehensive security assessments in under 4 hours.
114
+ ## Reference
739
115
 
740
- - OWASP Top 10 coverage with validated exploits, not just potential findings
741
- - Black box and white box testing with GitHub integration
742
- - Blockchain-attested reports (SHA-256 hashed, anchored to Base L2)
743
- - CI/CD, VS Code, and Burp Suite Pro integrations
744
- - **Starting at $99/domain** — [try it now](https://turbopentest.com)
745
-
746
- > **Need human expertise + AI speed?** [Contact IntegSec](https://integsec.com) for expert-led pentesting backed by the same AI agents that power TurboPentest.
747
-
748
- ---
116
+ - [Configuration and manifest fields](docs/configuration.md)
117
+ - [Client integrations, HTTP, and Docker](docs/integrations.md)
118
+ - [TUI usage and screenshots](docs/tui.md)
119
+ - [Security model and limitations](docs/security.md)
120
+ - [Contributing and development](docs/development.md)
749
121
 
750
122
  ## License
751
123
 
752
- MIT License. See [LICENSE](LICENSE) for details.
753
-
754
- ---
755
-
756
- Built by **[IntegSec](https://integsec.com)** | **[TurboPentest](https://turbopentest.com)** | [GitHub](https://github.com/integsec) | [Twitter](https://x.com/integ_sec)
124
+ Apache-2.0. See [LICENSE](LICENSE).