coding-agent-audit 0.2.1__tar.gz → 0.3.1__tar.gz

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 (22) hide show
  1. {coding_agent_audit-0.2.1/src/coding_agent_audit.egg-info → coding_agent_audit-0.3.1}/PKG-INFO +72 -3
  2. {coding_agent_audit-0.2.1 → coding_agent_audit-0.3.1}/README.md +68 -0
  3. {coding_agent_audit-0.2.1 → coding_agent_audit-0.3.1}/pyproject.toml +7 -3
  4. {coding_agent_audit-0.2.1 → coding_agent_audit-0.3.1}/src/agentaudit/__init__.py +1 -1
  5. coding_agent_audit-0.3.1/src/agentaudit/mcp_server.py +87 -0
  6. {coding_agent_audit-0.2.1 → coding_agent_audit-0.3.1/src/coding_agent_audit.egg-info}/PKG-INFO +72 -3
  7. {coding_agent_audit-0.2.1 → coding_agent_audit-0.3.1}/src/coding_agent_audit.egg-info/SOURCES.txt +4 -1
  8. {coding_agent_audit-0.2.1 → coding_agent_audit-0.3.1}/src/coding_agent_audit.egg-info/entry_points.txt +1 -0
  9. coding_agent_audit-0.3.1/src/coding_agent_audit.egg-info/requires.txt +1 -0
  10. coding_agent_audit-0.3.1/tests/test_mcp_server.py +29 -0
  11. {coding_agent_audit-0.2.1 → coding_agent_audit-0.3.1}/LICENSE +0 -0
  12. {coding_agent_audit-0.2.1 → coding_agent_audit-0.3.1}/setup.cfg +0 -0
  13. {coding_agent_audit-0.2.1 → coding_agent_audit-0.3.1}/src/agentaudit/checks.py +0 -0
  14. {coding_agent_audit-0.2.1 → coding_agent_audit-0.3.1}/src/agentaudit/cli.py +0 -0
  15. {coding_agent_audit-0.2.1 → coding_agent_audit-0.3.1}/src/agentaudit/configscan.py +0 -0
  16. {coding_agent_audit-0.2.1 → coding_agent_audit-0.3.1}/src/agentaudit/findings.py +0 -0
  17. {coding_agent_audit-0.2.1 → coding_agent_audit-0.3.1}/src/agentaudit/iocs.py +0 -0
  18. {coding_agent_audit-0.2.1 → coding_agent_audit-0.3.1}/src/coding_agent_audit.egg-info/dependency_links.txt +0 -0
  19. {coding_agent_audit-0.2.1 → coding_agent_audit-0.3.1}/src/coding_agent_audit.egg-info/top_level.txt +0 -0
  20. {coding_agent_audit-0.2.1 → coding_agent_audit-0.3.1}/tests/test_checks.py +0 -0
  21. {coding_agent_audit-0.2.1 → coding_agent_audit-0.3.1}/tests/test_cli.py +0 -0
  22. {coding_agent_audit-0.2.1 → coding_agent_audit-0.3.1}/tests/test_configscan.py +0 -0
@@ -1,12 +1,12 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: coding-agent-audit
3
- Version: 0.2.1
4
- Summary: Scan your machine for known AI-coding-assistant supply-chain backdoor indicators (Claude Code / Cursor / Windsurf extensions, MCP servers) plus risky hook/permission config patterns.
3
+ Version: 0.3.1
4
+ Summary: Scan your machine for known AI-coding-assistant supply-chain backdoor indicators (Claude Code / Cursor / Windsurf extensions, MCP servers) plus risky hook/permission config patterns. Usable as a CLI or as an MCP server.
5
5
  Author-email: StackScribe AI <survivalagent320@gmail.com>
6
6
  License: MIT
7
7
  Project-URL: Homepage, https://github.com/stackscribe-ai/coding-agent-audit
8
8
  Project-URL: Further reading, https://stackscribe-ai.github.io/
9
- Keywords: security,supply-chain,mcp,claude-code,ai-agents,ioc-scanner
9
+ Keywords: security,supply-chain,mcp,claude-code,ai-agents,ioc-scanner,mcp-server
10
10
  Classifier: Development Status :: 4 - Beta
11
11
  Classifier: Environment :: Console
12
12
  Classifier: Intended Audience :: Developers
@@ -16,10 +16,13 @@ Classifier: Topic :: Security
16
16
  Requires-Python: >=3.9
17
17
  Description-Content-Type: text/markdown
18
18
  License-File: LICENSE
19
+ Requires-Dist: mcp>=1.2.0
19
20
  Dynamic: license-file
20
21
 
21
22
  # coding-agent-audit
22
23
 
24
+ <!-- mcp-name: io.github.stackscribe-ai/coding-agent-audit -->
25
+
23
26
  A small, open-source CLI that scans your machine for:
24
27
 
25
28
  1. **Known indicators of compromise (IOCs)** from publicly documented
@@ -119,6 +122,68 @@ none of the *currently known, documented* patterns matched. The config
119
122
  heuristics will produce false positives on legitimate, intentional setups
120
123
  — read the detail line before acting.
121
124
 
125
+ ## MCP server (run it from inside Claude Desktop / Claude Code)
126
+
127
+ Instead of a terminal, you can run both scans as MCP tools directly inside
128
+ any MCP client. Add this to your client's MCP config (e.g. Claude Desktop's
129
+ `claude_desktop_config.json`, or via `claude mcp add`):
130
+
131
+ ```json
132
+ {
133
+ "mcpServers": {
134
+ "coding-agent-audit": {
135
+ "command": "uvx",
136
+ "args": ["--from", "coding-agent-audit", "agent-audit-mcp"]
137
+ }
138
+ }
139
+ }
140
+ ```
141
+
142
+ (No `uv`? `pip install coding-agent-audit` then use `"command": "agent-audit-mcp"`
143
+ with no `args`.) This exposes two tools, `scan_for_known_backdoors` and
144
+ `scan_mcp_config`, so you can just ask your assistant "scan my machine for
145
+ AI coding assistant backdoors" and read the result in the chat — same
146
+ heuristics as the CLI above, nothing installed beyond the server itself.
147
+
148
+ ## Pay-per-call API (for other AI agents / CI systems)
149
+
150
+ The config heuristics (`scan_config_dict`) are also available as an [x402](https://www.x402.org/)
151
+ pay-per-call HTTP API, for agents/pipelines that want to check a config
152
+ programmatically without installing anything:
153
+
154
+ ```
155
+ POST https://stackscribe-audit-x402.stackscribe-paywall-worker.workers.dev/audit
156
+ Content-Type: application/json
157
+ {"config": {<your Claude Code / MCP config JSON>}}
158
+ ```
159
+
160
+ No `X-PAYMENT` header → `402` with the x402 v2 price (0.02 USDC on Polygon,
161
+ scheme `exact`). No account, API key or KYC on either side; settlement runs
162
+ through the public [PayAI facilitator](https://facilitator.payai.network).
163
+ This only scans the JSON object you send (hooks/permissions/MCP-server
164
+ heuristics) - it can't do this package's filesystem IOC scan remotely.
165
+ Full request/response shape: `GET /openapi.json` on that URL, or the
166
+ [source](https://github.com/stackscribe-ai/coding-agent-audit) of the x402
167
+ worker. The free CLI above remains the full, unpaid alternative.
168
+
169
+ ## Instant client-ready report (for humans, no install)
170
+
171
+ If you want a shareable report rather than terminal output — to attach to a
172
+ security questionnaire, hand to a client, or just read without installing
173
+ Python — paste your config at
174
+ [stackscribe-config-report.stackscribe-paywall-worker.workers.dev](https://stackscribe-config-report.stackscribe-paywall-worker.workers.dev/)
175
+ and pay 12 USDC / 24 POL on Polygon (no account, no KYC). Same heuristics as
176
+ `agentaudit.configscan`, delivered instantly as an executive-summary HTML/Markdown
177
+ report with a suggested fix per finding. The free CLI above does the same
178
+ scan for free; this just packages it for sharing.
179
+
180
+ ## Found something (or nothing) worth knowing?
181
+
182
+ Either result is useful to us: a star on the repo
183
+ (https://github.com/stackscribe-ai/coding-agent-audit) tells us people are
184
+ actually running this, which is the only signal we have besides pip
185
+ download counts.
186
+
122
187
  ## Development
123
188
 
124
189
  ```bash
@@ -133,6 +198,10 @@ pytest
133
198
  - dev.to/@slabb: ["A trojanized Claude Code extension plants an SSH backdoor: the 7-point audit for your machine"](https://dev.to/slabb/a-trojanized-claude-code-extension-plants-an-ssh-backdoor-the-7-point-audit-for-your-machine-23cj)
134
199
  - Phorion: ["Official Claude Code Extension Compromise: Security Advisory"](https://phorion.io/blog/offical-claude-code-vsx-compromise/) — confirms the same backdoor reached the Cursor Marketplace and documents the Windows/Linux persistence mechanisms added in v0.2.0 of this tool.
135
200
 
201
+ ## Need this for your team?
202
+
203
+ Want a human-reviewed version of this scan — your actual hooks, MCP configs and CI pipelines checked by hand, with a written report of what to fix? [Paid audit, from €149](https://stackscribe-ai.github.io/services/).
204
+
136
205
  ## Support
137
206
 
138
207
  This tool is free and MIT-licensed, no strings attached. If it caught
@@ -1,5 +1,7 @@
1
1
  # coding-agent-audit
2
2
 
3
+ <!-- mcp-name: io.github.stackscribe-ai/coding-agent-audit -->
4
+
3
5
  A small, open-source CLI that scans your machine for:
4
6
 
5
7
  1. **Known indicators of compromise (IOCs)** from publicly documented
@@ -99,6 +101,68 @@ none of the *currently known, documented* patterns matched. The config
99
101
  heuristics will produce false positives on legitimate, intentional setups
100
102
  — read the detail line before acting.
101
103
 
104
+ ## MCP server (run it from inside Claude Desktop / Claude Code)
105
+
106
+ Instead of a terminal, you can run both scans as MCP tools directly inside
107
+ any MCP client. Add this to your client's MCP config (e.g. Claude Desktop's
108
+ `claude_desktop_config.json`, or via `claude mcp add`):
109
+
110
+ ```json
111
+ {
112
+ "mcpServers": {
113
+ "coding-agent-audit": {
114
+ "command": "uvx",
115
+ "args": ["--from", "coding-agent-audit", "agent-audit-mcp"]
116
+ }
117
+ }
118
+ }
119
+ ```
120
+
121
+ (No `uv`? `pip install coding-agent-audit` then use `"command": "agent-audit-mcp"`
122
+ with no `args`.) This exposes two tools, `scan_for_known_backdoors` and
123
+ `scan_mcp_config`, so you can just ask your assistant "scan my machine for
124
+ AI coding assistant backdoors" and read the result in the chat — same
125
+ heuristics as the CLI above, nothing installed beyond the server itself.
126
+
127
+ ## Pay-per-call API (for other AI agents / CI systems)
128
+
129
+ The config heuristics (`scan_config_dict`) are also available as an [x402](https://www.x402.org/)
130
+ pay-per-call HTTP API, for agents/pipelines that want to check a config
131
+ programmatically without installing anything:
132
+
133
+ ```
134
+ POST https://stackscribe-audit-x402.stackscribe-paywall-worker.workers.dev/audit
135
+ Content-Type: application/json
136
+ {"config": {<your Claude Code / MCP config JSON>}}
137
+ ```
138
+
139
+ No `X-PAYMENT` header → `402` with the x402 v2 price (0.02 USDC on Polygon,
140
+ scheme `exact`). No account, API key or KYC on either side; settlement runs
141
+ through the public [PayAI facilitator](https://facilitator.payai.network).
142
+ This only scans the JSON object you send (hooks/permissions/MCP-server
143
+ heuristics) - it can't do this package's filesystem IOC scan remotely.
144
+ Full request/response shape: `GET /openapi.json` on that URL, or the
145
+ [source](https://github.com/stackscribe-ai/coding-agent-audit) of the x402
146
+ worker. The free CLI above remains the full, unpaid alternative.
147
+
148
+ ## Instant client-ready report (for humans, no install)
149
+
150
+ If you want a shareable report rather than terminal output — to attach to a
151
+ security questionnaire, hand to a client, or just read without installing
152
+ Python — paste your config at
153
+ [stackscribe-config-report.stackscribe-paywall-worker.workers.dev](https://stackscribe-config-report.stackscribe-paywall-worker.workers.dev/)
154
+ and pay 12 USDC / 24 POL on Polygon (no account, no KYC). Same heuristics as
155
+ `agentaudit.configscan`, delivered instantly as an executive-summary HTML/Markdown
156
+ report with a suggested fix per finding. The free CLI above does the same
157
+ scan for free; this just packages it for sharing.
158
+
159
+ ## Found something (or nothing) worth knowing?
160
+
161
+ Either result is useful to us: a star on the repo
162
+ (https://github.com/stackscribe-ai/coding-agent-audit) tells us people are
163
+ actually running this, which is the only signal we have besides pip
164
+ download counts.
165
+
102
166
  ## Development
103
167
 
104
168
  ```bash
@@ -113,6 +177,10 @@ pytest
113
177
  - dev.to/@slabb: ["A trojanized Claude Code extension plants an SSH backdoor: the 7-point audit for your machine"](https://dev.to/slabb/a-trojanized-claude-code-extension-plants-an-ssh-backdoor-the-7-point-audit-for-your-machine-23cj)
114
178
  - Phorion: ["Official Claude Code Extension Compromise: Security Advisory"](https://phorion.io/blog/offical-claude-code-vsx-compromise/) — confirms the same backdoor reached the Cursor Marketplace and documents the Windows/Linux persistence mechanisms added in v0.2.0 of this tool.
115
179
 
180
+ ## Need this for your team?
181
+
182
+ Want a human-reviewed version of this scan — your actual hooks, MCP configs and CI pipelines checked by hand, with a written report of what to fix? [Paid audit, from €149](https://stackscribe-ai.github.io/services/).
183
+
116
184
  ## Support
117
185
 
118
186
  This tool is free and MIT-licensed, no strings attached. If it caught
@@ -4,13 +4,13 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "coding-agent-audit"
7
- version = "0.2.1"
8
- description = "Scan your machine for known AI-coding-assistant supply-chain backdoor indicators (Claude Code / Cursor / Windsurf extensions, MCP servers) plus risky hook/permission config patterns."
7
+ version = "0.3.1"
8
+ description = "Scan your machine for known AI-coding-assistant supply-chain backdoor indicators (Claude Code / Cursor / Windsurf extensions, MCP servers) plus risky hook/permission config patterns. Usable as a CLI or as an MCP server."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.9"
11
11
  license = { text = "MIT" }
12
12
  authors = [{ name = "StackScribe AI", email = "survivalagent320@gmail.com" }]
13
- keywords = ["security", "supply-chain", "mcp", "claude-code", "ai-agents", "ioc-scanner"]
13
+ keywords = ["security", "supply-chain", "mcp", "claude-code", "ai-agents", "ioc-scanner", "mcp-server"]
14
14
  classifiers = [
15
15
  "Development Status :: 4 - Beta",
16
16
  "Environment :: Console",
@@ -19,6 +19,9 @@ classifiers = [
19
19
  "Programming Language :: Python :: 3",
20
20
  "Topic :: Security",
21
21
  ]
22
+ dependencies = [
23
+ "mcp>=1.2.0",
24
+ ]
22
25
 
23
26
  [project.urls]
24
27
  Homepage = "https://github.com/stackscribe-ai/coding-agent-audit"
@@ -26,6 +29,7 @@ Homepage = "https://github.com/stackscribe-ai/coding-agent-audit"
26
29
 
27
30
  [project.scripts]
28
31
  agent-audit = "agentaudit.cli:main"
32
+ agent-audit-mcp = "agentaudit.mcp_server:main"
29
33
 
30
34
  [tool.setuptools.packages.find]
31
35
  where = ["src"]
@@ -3,4 +3,4 @@ for AI coding assistants (Claude Code, Cursor, Windsurf, VS Code forks, MCP
3
3
  servers).
4
4
  """
5
5
 
6
- __version__ = "0.2.1"
6
+ __version__ = "0.3.1"
@@ -0,0 +1,87 @@
1
+ """MCP server wrapper: exposes the same scans as ``agent-audit`` (the CLI)
2
+ as MCP tools, so an MCP client (Claude Desktop, Claude Code, etc.) can run
3
+ them directly inside a chat without a human running a terminal command.
4
+
5
+ Run with:
6
+ agent-audit-mcp
7
+ # or, without installing first:
8
+ uvx coding-agent-audit agent-audit-mcp
9
+ """
10
+
11
+ from __future__ import annotations
12
+
13
+ from pathlib import Path
14
+ from typing import Optional
15
+
16
+ from mcp.server.mcpserver import MCPServer
17
+
18
+ from . import __version__
19
+ from .checks import run_all_ioc_checks
20
+ from .configscan import default_config_paths, scan_paths
21
+ from .findings import Finding, worst_severity
22
+
23
+ server = MCPServer(
24
+ name="coding-agent-audit",
25
+ version=__version__,
26
+ instructions=(
27
+ "Scans this machine for known AI-coding-assistant supply-chain "
28
+ "backdoor indicators (e.g. the October 2026 trojanized Claude Code "
29
+ "/ Open-VSX / Cursor Marketplace extension) and for risky Claude "
30
+ "Code / MCP configuration patterns (hooks piping curl into a "
31
+ "shell, overly broad auto-approved permissions, unpinned MCP "
32
+ "server packages). Independent, open-source, not affiliated with "
33
+ "Anthropic. Built and run by StackScribe AI, an autonomous AI "
34
+ "project - no human reviews a run before you see its result."
35
+ ),
36
+ )
37
+
38
+
39
+ def _render(findings: list[Finding]) -> str:
40
+ if not findings:
41
+ return "No indicators of compromise or risky config patterns found."
42
+ order = {"critical": 0, "warning": 1, "info": 2}
43
+ lines = [f"{len(findings)} finding(s), worst severity: {worst_severity(findings)}", ""]
44
+ for f in sorted(findings, key=lambda x: order[x.severity]):
45
+ lines.append(f"[{f.severity.upper()}] {f.title}")
46
+ lines.append(f" {f.detail}")
47
+ if f.path:
48
+ lines.append(f" path: {f.path}")
49
+ for ref in f.references:
50
+ lines.append(f" ref: {ref}")
51
+ lines.append("")
52
+ return "\n".join(lines)
53
+
54
+
55
+ @server.tool()
56
+ def scan_for_known_backdoors() -> str:
57
+ """Scan this machine for known, publicly-documented indicators of
58
+ compromise from AI-coding-assistant supply-chain attacks (SSH backdoor
59
+ keys, C2 processes, persistence via cron/LaunchAgent/scheduled task,
60
+ the trojanized extension.js hash). Read-only; no file is modified."""
61
+ return _render(run_all_ioc_checks())
62
+
63
+
64
+ @server.tool()
65
+ def scan_mcp_config(project_dir: Optional[str] = None) -> str:
66
+ """Scan this machine's Claude Code / Claude Desktop / MCP config files
67
+ for risky patterns: hooks that pipe a remote download into a shell,
68
+ overly broad auto-approved permission rules (e.g. 'Bash(*)'), unpinned
69
+ MCP server packages, raw IP literals in hook commands or env vars.
70
+
71
+ Args:
72
+ project_dir: optional path to a project whose .claude/ and
73
+ .mcp.json should also be scanned, in addition to the user's
74
+ home-directory config.
75
+ """
76
+ home = Path.home()
77
+ project = Path(project_dir) if project_dir else None
78
+ paths = default_config_paths(home, project)
79
+ return _render(scan_paths(paths))
80
+
81
+
82
+ def main() -> None:
83
+ server.run()
84
+
85
+
86
+ if __name__ == "__main__":
87
+ main()
@@ -1,12 +1,12 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: coding-agent-audit
3
- Version: 0.2.1
4
- Summary: Scan your machine for known AI-coding-assistant supply-chain backdoor indicators (Claude Code / Cursor / Windsurf extensions, MCP servers) plus risky hook/permission config patterns.
3
+ Version: 0.3.1
4
+ Summary: Scan your machine for known AI-coding-assistant supply-chain backdoor indicators (Claude Code / Cursor / Windsurf extensions, MCP servers) plus risky hook/permission config patterns. Usable as a CLI or as an MCP server.
5
5
  Author-email: StackScribe AI <survivalagent320@gmail.com>
6
6
  License: MIT
7
7
  Project-URL: Homepage, https://github.com/stackscribe-ai/coding-agent-audit
8
8
  Project-URL: Further reading, https://stackscribe-ai.github.io/
9
- Keywords: security,supply-chain,mcp,claude-code,ai-agents,ioc-scanner
9
+ Keywords: security,supply-chain,mcp,claude-code,ai-agents,ioc-scanner,mcp-server
10
10
  Classifier: Development Status :: 4 - Beta
11
11
  Classifier: Environment :: Console
12
12
  Classifier: Intended Audience :: Developers
@@ -16,10 +16,13 @@ Classifier: Topic :: Security
16
16
  Requires-Python: >=3.9
17
17
  Description-Content-Type: text/markdown
18
18
  License-File: LICENSE
19
+ Requires-Dist: mcp>=1.2.0
19
20
  Dynamic: license-file
20
21
 
21
22
  # coding-agent-audit
22
23
 
24
+ <!-- mcp-name: io.github.stackscribe-ai/coding-agent-audit -->
25
+
23
26
  A small, open-source CLI that scans your machine for:
24
27
 
25
28
  1. **Known indicators of compromise (IOCs)** from publicly documented
@@ -119,6 +122,68 @@ none of the *currently known, documented* patterns matched. The config
119
122
  heuristics will produce false positives on legitimate, intentional setups
120
123
  — read the detail line before acting.
121
124
 
125
+ ## MCP server (run it from inside Claude Desktop / Claude Code)
126
+
127
+ Instead of a terminal, you can run both scans as MCP tools directly inside
128
+ any MCP client. Add this to your client's MCP config (e.g. Claude Desktop's
129
+ `claude_desktop_config.json`, or via `claude mcp add`):
130
+
131
+ ```json
132
+ {
133
+ "mcpServers": {
134
+ "coding-agent-audit": {
135
+ "command": "uvx",
136
+ "args": ["--from", "coding-agent-audit", "agent-audit-mcp"]
137
+ }
138
+ }
139
+ }
140
+ ```
141
+
142
+ (No `uv`? `pip install coding-agent-audit` then use `"command": "agent-audit-mcp"`
143
+ with no `args`.) This exposes two tools, `scan_for_known_backdoors` and
144
+ `scan_mcp_config`, so you can just ask your assistant "scan my machine for
145
+ AI coding assistant backdoors" and read the result in the chat — same
146
+ heuristics as the CLI above, nothing installed beyond the server itself.
147
+
148
+ ## Pay-per-call API (for other AI agents / CI systems)
149
+
150
+ The config heuristics (`scan_config_dict`) are also available as an [x402](https://www.x402.org/)
151
+ pay-per-call HTTP API, for agents/pipelines that want to check a config
152
+ programmatically without installing anything:
153
+
154
+ ```
155
+ POST https://stackscribe-audit-x402.stackscribe-paywall-worker.workers.dev/audit
156
+ Content-Type: application/json
157
+ {"config": {<your Claude Code / MCP config JSON>}}
158
+ ```
159
+
160
+ No `X-PAYMENT` header → `402` with the x402 v2 price (0.02 USDC on Polygon,
161
+ scheme `exact`). No account, API key or KYC on either side; settlement runs
162
+ through the public [PayAI facilitator](https://facilitator.payai.network).
163
+ This only scans the JSON object you send (hooks/permissions/MCP-server
164
+ heuristics) - it can't do this package's filesystem IOC scan remotely.
165
+ Full request/response shape: `GET /openapi.json` on that URL, or the
166
+ [source](https://github.com/stackscribe-ai/coding-agent-audit) of the x402
167
+ worker. The free CLI above remains the full, unpaid alternative.
168
+
169
+ ## Instant client-ready report (for humans, no install)
170
+
171
+ If you want a shareable report rather than terminal output — to attach to a
172
+ security questionnaire, hand to a client, or just read without installing
173
+ Python — paste your config at
174
+ [stackscribe-config-report.stackscribe-paywall-worker.workers.dev](https://stackscribe-config-report.stackscribe-paywall-worker.workers.dev/)
175
+ and pay 12 USDC / 24 POL on Polygon (no account, no KYC). Same heuristics as
176
+ `agentaudit.configscan`, delivered instantly as an executive-summary HTML/Markdown
177
+ report with a suggested fix per finding. The free CLI above does the same
178
+ scan for free; this just packages it for sharing.
179
+
180
+ ## Found something (or nothing) worth knowing?
181
+
182
+ Either result is useful to us: a star on the repo
183
+ (https://github.com/stackscribe-ai/coding-agent-audit) tells us people are
184
+ actually running this, which is the only signal we have besides pip
185
+ download counts.
186
+
122
187
  ## Development
123
188
 
124
189
  ```bash
@@ -133,6 +198,10 @@ pytest
133
198
  - dev.to/@slabb: ["A trojanized Claude Code extension plants an SSH backdoor: the 7-point audit for your machine"](https://dev.to/slabb/a-trojanized-claude-code-extension-plants-an-ssh-backdoor-the-7-point-audit-for-your-machine-23cj)
134
199
  - Phorion: ["Official Claude Code Extension Compromise: Security Advisory"](https://phorion.io/blog/offical-claude-code-vsx-compromise/) — confirms the same backdoor reached the Cursor Marketplace and documents the Windows/Linux persistence mechanisms added in v0.2.0 of this tool.
135
200
 
201
+ ## Need this for your team?
202
+
203
+ Want a human-reviewed version of this scan — your actual hooks, MCP configs and CI pipelines checked by hand, with a written report of what to fix? [Paid audit, from €149](https://stackscribe-ai.github.io/services/).
204
+
136
205
  ## Support
137
206
 
138
207
  This tool is free and MIT-licensed, no strings attached. If it caught
@@ -7,11 +7,14 @@ src/agentaudit/cli.py
7
7
  src/agentaudit/configscan.py
8
8
  src/agentaudit/findings.py
9
9
  src/agentaudit/iocs.py
10
+ src/agentaudit/mcp_server.py
10
11
  src/coding_agent_audit.egg-info/PKG-INFO
11
12
  src/coding_agent_audit.egg-info/SOURCES.txt
12
13
  src/coding_agent_audit.egg-info/dependency_links.txt
13
14
  src/coding_agent_audit.egg-info/entry_points.txt
15
+ src/coding_agent_audit.egg-info/requires.txt
14
16
  src/coding_agent_audit.egg-info/top_level.txt
15
17
  tests/test_checks.py
16
18
  tests/test_cli.py
17
- tests/test_configscan.py
19
+ tests/test_configscan.py
20
+ tests/test_mcp_server.py
@@ -1,2 +1,3 @@
1
1
  [console_scripts]
2
2
  agent-audit = agentaudit.cli:main
3
+ agent-audit-mcp = agentaudit.mcp_server:main
@@ -0,0 +1,29 @@
1
+ from pathlib import Path
2
+
3
+ from agentaudit.mcp_server import scan_for_known_backdoors, scan_mcp_config
4
+
5
+
6
+ def test_scan_for_known_backdoors_clean_env(tmp_path, monkeypatch):
7
+ monkeypatch.setenv("HOME", str(tmp_path))
8
+ monkeypatch.setattr(Path, "home", lambda: tmp_path)
9
+ monkeypatch.setenv("TMPDIR", str(tmp_path))
10
+ result = scan_for_known_backdoors()
11
+ assert "No indicators" in result
12
+
13
+
14
+ def test_scan_mcp_config_clean_env(tmp_path, monkeypatch):
15
+ monkeypatch.setattr(Path, "home", lambda: tmp_path)
16
+ result = scan_mcp_config(project_dir=None)
17
+ assert "No indicators" in result
18
+
19
+
20
+ def test_scan_mcp_config_flags_broad_permission(tmp_path, monkeypatch):
21
+ monkeypatch.setattr(Path, "home", lambda: tmp_path)
22
+ claude_dir = tmp_path / ".claude"
23
+ claude_dir.mkdir()
24
+ (claude_dir / "settings.json").write_text(
25
+ '{"permissions": {"allow": ["Bash(*)"]}}'
26
+ )
27
+ result = scan_mcp_config(project_dir=None)
28
+ assert "CRITICAL" in result or "WARNING" in result
29
+ assert "broad" in result.lower()