@atbash/cli 0.5.11 → 0.5.13
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.
- package/README.md +15 -6
- package/dist/commands/connect.d.ts +28 -7
- package/dist/commands/connect.js +230 -68
- package/dist/commands/connect.js.map +1 -1
- package/dist/commands/introspect-mcp.d.ts +74 -0
- package/dist/commands/introspect-mcp.js +215 -0
- package/dist/commands/introspect-mcp.js.map +1 -0
- package/dist/commands/minimal-mcp-client.d.ts +33 -0
- package/dist/commands/minimal-mcp-client.js +391 -0
- package/dist/commands/minimal-mcp-client.js.map +1 -0
- package/package.json +10 -4
package/README.md
CHANGED
|
@@ -315,15 +315,19 @@ The agent is not trusted to know when it should stop. If the agent could loosen
|
|
|
315
315
|
```
|
|
316
316
|
It runs the same read-only scan and prints the exact destination URL and the exact payload it *would* send, then exits. Nothing leaves the machine.
|
|
317
317
|
|
|
318
|
-
2. **That the package
|
|
318
|
+
2. **That the package matches the artifact the Atbash deployment attests.** The
|
|
319
|
+
CLI repository is private, so npm provenance is not currently available. Compare
|
|
320
|
+
the exact version's registry integrity with the dashboard's same-origin manifest:
|
|
319
321
|
```bash
|
|
320
|
-
|
|
321
|
-
npm
|
|
322
|
+
curl -s https://<HOST>/api/cli-releases
|
|
323
|
+
npm view @atbash/cli@<VERSION> dist.integrity
|
|
322
324
|
```
|
|
325
|
+
Matching values prove the tarball matches what that deployment vouches for; they
|
|
326
|
+
do not prove it was built from a particular source commit.
|
|
323
327
|
|
|
324
|
-
3. **Where it sends and what it sends.** Exactly one POST, only to the `--host` you pass (HTTPS required;
|
|
328
|
+
3. **Where it sends and what it sends.** Exactly one POST, only to the `--host` you pass (HTTPS required; an unrecognized host is refused unless explicitly allowed). It relays agent / tool / skill **names**, sanitized MCP endpoint URLs and launch-command basenames — never tokens, auth headers, env values, or file contents.
|
|
325
329
|
|
|
326
|
-
If any check fails —
|
|
330
|
+
If any check fails — an integrity value that does not match the deployment's manifest, an unexpected destination, or a dry-run payload containing anything sensitive — **don't run it.** Those are exactly the signals a malicious clone cannot fake.
|
|
327
331
|
|
|
328
332
|
## Command reference
|
|
329
333
|
|
|
@@ -345,8 +349,13 @@ npx --yes @atbash/cli connect G9MB-TS3U --host https://your-atbash-host --dry-ru
|
|
|
345
349
|
| `--dry-run` | Do the scan and print exactly what would be sent, then exit WITHOUT sending |
|
|
346
350
|
| `--json` | Machine-readable output (for agents / automation) |
|
|
347
351
|
| `--home <dir>` | Home directory to scan (for testing) |
|
|
352
|
+
| `--introspect` | Opt in to starting configured MCP servers locally and listing their advertised surface; no tools are called |
|
|
353
|
+
| `--allow-unrecognized-host` | Explicitly permit a host outside the built-in Atbash allowlist |
|
|
348
354
|
|
|
349
|
-
|
|
355
|
+
Default discovery is read-only and sends one request. `--introspect` starts and stops
|
|
356
|
+
configured MCP server processes, so it is not purely read-only even though Atbash
|
|
357
|
+
never invokes their tools. See [Verifying this CLI](#verifying-this-cli-before-you-run-it-humans--ai-agents)
|
|
358
|
+
and the [release checklist](RELEASE_CHECKLIST.md).
|
|
350
359
|
|
|
351
360
|
### `atbash judge <action>`
|
|
352
361
|
|
|
@@ -2,12 +2,23 @@ import { Command } from "commander";
|
|
|
2
2
|
interface DeclaredTool {
|
|
3
3
|
name: string;
|
|
4
4
|
description?: string;
|
|
5
|
+
/** Sanitized JSON-Schema shape (from MCP introspection) — structure only. */
|
|
6
|
+
inputSchema?: unknown;
|
|
7
|
+
}
|
|
8
|
+
interface SurfaceEvidence {
|
|
9
|
+
source: "local-declaration" | "mcp-tools-list" | "manifest";
|
|
10
|
+
status: "complete" | "incomplete";
|
|
11
|
+
transport?: "http" | "stdio";
|
|
12
|
+
server?: string;
|
|
13
|
+
observedAt?: string;
|
|
14
|
+
error?: string;
|
|
5
15
|
}
|
|
6
16
|
type Agent = {
|
|
7
17
|
type: "declared";
|
|
8
18
|
label: string;
|
|
9
19
|
detail: string;
|
|
10
20
|
declaredTools: DeclaredTool[];
|
|
21
|
+
surfaceEvidence?: SurfaceEvidence;
|
|
11
22
|
} | {
|
|
12
23
|
type: "config";
|
|
13
24
|
label: string;
|
|
@@ -16,19 +27,29 @@ type Agent = {
|
|
|
16
27
|
mcpServers: Record<string, unknown>;
|
|
17
28
|
};
|
|
18
29
|
};
|
|
19
|
-
/** One-line skill description from SKILL.md frontmatter `description:` or first heading.
|
|
30
|
+
/** One-line skill description from SKILL.md frontmatter `description:` or first heading.
|
|
31
|
+
* Frontmatter is parsed with a real YAML parser (handles quotes, block scalars,
|
|
32
|
+
* folded/multiline values and nested maps that the previous regex mis-read). */
|
|
20
33
|
declare function describeSkill(text: string | undefined, fallback: string): string;
|
|
34
|
+
/** Descriptions are useful capability evidence, but never worth relaying a
|
|
35
|
+
* credential or binary/control content from an untrusted local skill file. */
|
|
36
|
+
declare function safeDescription(raw: string): string | undefined;
|
|
21
37
|
/** Walk a skills root (bounded) → declared tools. Mirrors src/lib/scan/adapters/local-skills.ts. */
|
|
22
38
|
declare function enumerateSkills(root: string, maxDepth?: number, cap?: number): DeclaredTool[];
|
|
23
39
|
/**
|
|
24
|
-
* Reduce an mcpServers map to the SANITIZED structural
|
|
25
|
-
* needs — server name, host+path of the endpoint, and
|
|
26
|
-
* nothing else. Every value that could carry a live
|
|
27
|
-
* token, apiKey, args, url credentials, absolute
|
|
28
|
-
* reduced. The connector relays the tool SURFACE,
|
|
40
|
+
* THE sanitization boundary. Reduce an mcpServers map to the SANITIZED structural
|
|
41
|
+
* signal the hosted scanner needs — server name, host+path of the endpoint, and
|
|
42
|
+
* executable basename — and nothing else. Every value that could carry a live
|
|
43
|
+
* secret or PII (env, headers, token, apiKey, args, url credentials, absolute
|
|
44
|
+
* command paths) is dropped or reduced. The connector relays the tool SURFACE,
|
|
45
|
+
* never secrets. Raw specs from `readAllMcpServers()` MUST pass through here before
|
|
46
|
+
* entering any relayed `Agent`.
|
|
47
|
+
*
|
|
48
|
+
* Caps the map at MAX_RELAY_SERVERS. Callers are expected to compare the returned
|
|
49
|
+
* size against the input size and label the result partial — see `discover()`.
|
|
29
50
|
*/
|
|
30
51
|
declare function relaySafeServers(servers: Record<string, unknown>): Record<string, unknown>;
|
|
31
52
|
/** Enumerate the agents/MCP tools configured on this machine. Read-only. */
|
|
32
53
|
declare function discover(home: string): Agent[];
|
|
33
54
|
export declare function registerConnectCommand(program: Command): void;
|
|
34
|
-
export { discover, enumerateSkills, describeSkill, relaySafeServers };
|
|
55
|
+
export { discover, enumerateSkills, describeSkill, relaySafeServers, safeDescription };
|
package/dist/commands/connect.js
CHANGED
|
@@ -41,10 +41,15 @@ exports.discover = discover;
|
|
|
41
41
|
exports.enumerateSkills = enumerateSkills;
|
|
42
42
|
exports.describeSkill = describeSkill;
|
|
43
43
|
exports.relaySafeServers = relaySafeServers;
|
|
44
|
+
exports.safeDescription = safeDescription;
|
|
44
45
|
const fs = __importStar(require("fs"));
|
|
45
46
|
const os = __importStar(require("os"));
|
|
46
47
|
const path = __importStar(require("path"));
|
|
47
48
|
const chalk_1 = __importDefault(require("chalk"));
|
|
49
|
+
const yaml_1 = require("yaml");
|
|
50
|
+
const TOML = __importStar(require("@iarna/toml"));
|
|
51
|
+
const jsonc = __importStar(require("jsonc-parser"));
|
|
52
|
+
const introspect_mcp_1 = require("./introspect-mcp");
|
|
48
53
|
/**
|
|
49
54
|
* `atbash connect <code>` — the local connector.
|
|
50
55
|
*
|
|
@@ -84,6 +89,18 @@ const KNOWN_HOSTS = new Set([
|
|
|
84
89
|
* https://atbash.ai once production serves it (KNOWN_HOSTS already allows it).
|
|
85
90
|
*/
|
|
86
91
|
const DEFAULT_HOST = "https://chromia-verified-ai-dev-two.vercel.app";
|
|
92
|
+
// Discovery is intentionally bounded. A local config is untrusted input even
|
|
93
|
+
// though it lives on the operator's machine: a giant/malformed file must not turn
|
|
94
|
+
// a one-shot connector into a memory or latency sink.
|
|
95
|
+
const MAX_CONFIG_BYTES = 2 * 1024 * 1024;
|
|
96
|
+
const MAX_SKILL_BYTES = 256 * 1024;
|
|
97
|
+
const MAX_RELAY_SERVERS = 200;
|
|
98
|
+
const SECRET_DESCRIPTION = [
|
|
99
|
+
/-----BEGIN (?:RSA |EC |OPENSSH )?PRIVATE KEY-----/,
|
|
100
|
+
/\bBearer\s+[A-Za-z0-9._~+/=-]{12,}/i,
|
|
101
|
+
/\b(?:sk|pk|ghp|github_pat|xox[baprs]|AKIA)[-_A-Za-z0-9]{12,}\b/,
|
|
102
|
+
/\beyJ[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{8,}\b/,
|
|
103
|
+
];
|
|
87
104
|
// ── filesystem helpers (all best-effort; never throw) ────────────────────────
|
|
88
105
|
const exists = (...segs) => {
|
|
89
106
|
try {
|
|
@@ -94,16 +111,23 @@ const exists = (...segs) => {
|
|
|
94
111
|
}
|
|
95
112
|
};
|
|
96
113
|
const readJson = (...segs) => {
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
114
|
+
// JSONC-tolerant: many editor MCP configs (VS Code, Cursor, Windsurf) allow
|
|
115
|
+
// comments and trailing commas, which JSON.parse rejects — silently reporting
|
|
116
|
+
// "nothing found" on a perfectly valid config. jsonc-parser is best-effort and
|
|
117
|
+
// never throws; it returns the parsed value alongside a (here-ignored) error list.
|
|
118
|
+
const text = readText(MAX_CONFIG_BYTES, ...segs);
|
|
119
|
+
if (text === undefined)
|
|
101
120
|
return null;
|
|
102
|
-
|
|
121
|
+
const errors = [];
|
|
122
|
+
const val = jsonc.parse(text, errors, { allowTrailingComma: true, disallowComments: false });
|
|
123
|
+
return val && typeof val === "object" && !Array.isArray(val) ? val : null;
|
|
103
124
|
};
|
|
104
|
-
const readText = (...segs) => {
|
|
125
|
+
const readText = (maxBytes, ...segs) => {
|
|
105
126
|
try {
|
|
106
|
-
|
|
127
|
+
const file = path.join(...segs);
|
|
128
|
+
if (fs.statSync(file).size > maxBytes)
|
|
129
|
+
return undefined;
|
|
130
|
+
return fs.readFileSync(file, "utf8");
|
|
107
131
|
}
|
|
108
132
|
catch {
|
|
109
133
|
return undefined;
|
|
@@ -119,37 +143,32 @@ const listDirs = (...segs) => {
|
|
|
119
143
|
return [];
|
|
120
144
|
}
|
|
121
145
|
};
|
|
122
|
-
/** One-line skill description from SKILL.md frontmatter `description:` or first heading.
|
|
146
|
+
/** One-line skill description from SKILL.md frontmatter `description:` or first heading.
|
|
147
|
+
* Frontmatter is parsed with a real YAML parser (handles quotes, block scalars,
|
|
148
|
+
* folded/multiline values and nested maps that the previous regex mis-read). */
|
|
123
149
|
function describeSkill(text, fallback) {
|
|
124
150
|
if (!text)
|
|
125
151
|
return fallback;
|
|
126
152
|
const frontmatter = (text.match(/^---\r?\n([\s\S]*?)\r?\n---/) || [])[1];
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
const
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
if (lines.length)
|
|
135
|
-
break;
|
|
136
|
-
continue;
|
|
137
|
-
}
|
|
138
|
-
if (!/^[ \t]/.test(line))
|
|
139
|
-
break; // dedent ends the block scalar
|
|
140
|
-
lines.push(line.trim());
|
|
141
|
-
}
|
|
142
|
-
const folded = lines.join(" ").trim();
|
|
143
|
-
if (folded)
|
|
144
|
-
return folded;
|
|
145
|
-
}
|
|
146
|
-
else if (inline) {
|
|
147
|
-
return inline.replace(/^["']|["']$/g, "").trim();
|
|
153
|
+
if (frontmatter) {
|
|
154
|
+
try {
|
|
155
|
+
const data = (0, yaml_1.parse)(frontmatter);
|
|
156
|
+
const desc = data && typeof data.description === "string" ? data.description : "";
|
|
157
|
+
const oneLine = desc.replace(/\s+/g, " ").trim();
|
|
158
|
+
if (oneLine)
|
|
159
|
+
return safeDescription(oneLine) ?? fallback;
|
|
148
160
|
}
|
|
161
|
+
catch { /* malformed frontmatter — fall through to first heading */ }
|
|
149
162
|
}
|
|
150
163
|
const heading = text.split(/\r?\n/).map((l) => l.trim())
|
|
151
164
|
.find((l) => l && !l.startsWith("---") && !/^(name|description):/i.test(l));
|
|
152
|
-
return heading ? heading.replace(/^#+\s*/, "").trim() : fallback;
|
|
165
|
+
return heading ? (safeDescription(heading.replace(/^#+\s*/, "").trim()) ?? fallback) : fallback;
|
|
166
|
+
}
|
|
167
|
+
/** Descriptions are useful capability evidence, but never worth relaying a
|
|
168
|
+
* credential or binary/control content from an untrusted local skill file. */
|
|
169
|
+
function safeDescription(raw) {
|
|
170
|
+
const value = raw.replace(/[\u0000-\u001f\u007f]+/g, " ").replace(/\s+/g, " ").trim().slice(0, 240);
|
|
171
|
+
return value && !SECRET_DESCRIPTION.some((pattern) => pattern.test(value)) ? value : undefined;
|
|
153
172
|
}
|
|
154
173
|
/** Walk a skills root (bounded) → declared tools. Mirrors src/lib/scan/adapters/local-skills.ts. */
|
|
155
174
|
function enumerateSkills(root, maxDepth = 3, cap = 400) {
|
|
@@ -164,9 +183,10 @@ function enumerateSkills(root, maxDepth = 3, cap = 400) {
|
|
|
164
183
|
catch {
|
|
165
184
|
return;
|
|
166
185
|
}
|
|
167
|
-
|
|
186
|
+
const skillFile = entries.find((e) => e.isFile() && e.name.toLowerCase() === "skill.md");
|
|
187
|
+
if (skillFile) {
|
|
168
188
|
const name = path.basename(dir);
|
|
169
|
-
tools.push({ name, description: describeSkill(readText(dir,
|
|
189
|
+
tools.push({ name, description: describeSkill(readText(MAX_SKILL_BYTES, dir, skillFile.name), `${category} skill`) });
|
|
170
190
|
return; // a skill folder is a leaf
|
|
171
191
|
}
|
|
172
192
|
for (const e of entries)
|
|
@@ -193,15 +213,26 @@ const MCP_CONFIGS = [
|
|
|
193
213
|
*/
|
|
194
214
|
function parseCodexMcpServers(toml) {
|
|
195
215
|
const servers = {};
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
216
|
+
let parsed;
|
|
217
|
+
try {
|
|
218
|
+
parsed = TOML.parse(toml);
|
|
219
|
+
}
|
|
220
|
+
catch {
|
|
221
|
+
return servers;
|
|
222
|
+
}
|
|
223
|
+
const mcp = parsed.mcp_servers && typeof parsed.mcp_servers === "object"
|
|
224
|
+
? parsed.mcp_servers : undefined;
|
|
225
|
+
if (!mcp)
|
|
226
|
+
return servers;
|
|
227
|
+
for (const [name, spec] of Object.entries(mcp)) {
|
|
228
|
+
if (!spec || typeof spec !== "object")
|
|
229
|
+
continue;
|
|
230
|
+
const s = spec;
|
|
231
|
+
if (s.enabled === false)
|
|
201
232
|
continue; // declared but switched off
|
|
202
|
-
const url =
|
|
203
|
-
const command =
|
|
204
|
-
servers[
|
|
233
|
+
const url = typeof s.url === "string" ? s.url : undefined;
|
|
234
|
+
const command = typeof s.command === "string" ? s.command : undefined;
|
|
235
|
+
servers[name] = url ? { url } : command ? { command } : {};
|
|
205
236
|
}
|
|
206
237
|
return servers;
|
|
207
238
|
}
|
|
@@ -231,22 +262,36 @@ function safeServerUrl(raw) {
|
|
|
231
262
|
return undefined;
|
|
232
263
|
}
|
|
233
264
|
}
|
|
234
|
-
/**
|
|
235
|
-
*
|
|
236
|
-
* the
|
|
265
|
+
/** Reduce a launch command to its executable BASENAME — the capability signal
|
|
266
|
+
* ("node", "npx", "uvx", "python") — without the absolute path that would leak
|
|
267
|
+
* the local username and directory layout (e.g. /Users/alice/private/agent/run).
|
|
268
|
+
* Takes the first whitespace token ("npx -y pkg" → "npx"), then basenames it, and
|
|
269
|
+
* rejects multiline / absurdly long values outright. */
|
|
237
270
|
function safeServerCommand(raw) {
|
|
238
|
-
|
|
271
|
+
if (typeof raw !== "string")
|
|
272
|
+
return undefined;
|
|
273
|
+
const trimmed = raw.trim();
|
|
274
|
+
if (!trimmed || /[\r\n]/.test(trimmed) || trimmed.length > 200)
|
|
275
|
+
return undefined;
|
|
276
|
+
const first = trimmed.split(/\s+/)[0];
|
|
277
|
+
const base = path.basename(first);
|
|
278
|
+
return base || undefined;
|
|
239
279
|
}
|
|
240
280
|
/**
|
|
241
|
-
* Reduce an mcpServers map to the SANITIZED structural
|
|
242
|
-
* needs — server name, host+path of the endpoint, and
|
|
243
|
-
* nothing else. Every value that could carry a live
|
|
244
|
-
* token, apiKey, args, url credentials, absolute
|
|
245
|
-
* reduced. The connector relays the tool SURFACE,
|
|
281
|
+
* THE sanitization boundary. Reduce an mcpServers map to the SANITIZED structural
|
|
282
|
+
* signal the hosted scanner needs — server name, host+path of the endpoint, and
|
|
283
|
+
* executable basename — and nothing else. Every value that could carry a live
|
|
284
|
+
* secret or PII (env, headers, token, apiKey, args, url credentials, absolute
|
|
285
|
+
* command paths) is dropped or reduced. The connector relays the tool SURFACE,
|
|
286
|
+
* never secrets. Raw specs from `readAllMcpServers()` MUST pass through here before
|
|
287
|
+
* entering any relayed `Agent`.
|
|
288
|
+
*
|
|
289
|
+
* Caps the map at MAX_RELAY_SERVERS. Callers are expected to compare the returned
|
|
290
|
+
* size against the input size and label the result partial — see `discover()`.
|
|
246
291
|
*/
|
|
247
292
|
function relaySafeServers(servers) {
|
|
248
293
|
const out = {};
|
|
249
|
-
for (const [name, spec] of Object.entries(servers)) {
|
|
294
|
+
for (const [name, spec] of Object.entries(servers).slice(0, MAX_RELAY_SERVERS)) {
|
|
250
295
|
if (!spec || typeof spec !== "object") {
|
|
251
296
|
out[name] = {};
|
|
252
297
|
continue;
|
|
@@ -260,9 +305,9 @@ function relaySafeServers(servers) {
|
|
|
260
305
|
if (command)
|
|
261
306
|
safe.command = command;
|
|
262
307
|
if (typeof s.type === "string")
|
|
263
|
-
safe.type = s.type;
|
|
308
|
+
safe.type = s.type.slice(0, 40);
|
|
264
309
|
if (typeof s.transport === "string")
|
|
265
|
-
safe.transport = s.transport;
|
|
310
|
+
safe.transport = s.transport.slice(0, 40);
|
|
266
311
|
out[name] = safe;
|
|
267
312
|
}
|
|
268
313
|
return out;
|
|
@@ -284,17 +329,41 @@ function discover(home) {
|
|
|
284
329
|
tools.push({ name: `plugin:${name}`, description: "Hermes plugin" });
|
|
285
330
|
agents.push({ type: "declared", label: "Hermes", detail: `${tools.length} skill${tools.length === 1 ? "" : "s"} / plugins`, declaredTools: tools });
|
|
286
331
|
}
|
|
287
|
-
// MCP
|
|
332
|
+
// MCP config sources — collected once as RAW specs, then sanitized for relay.
|
|
333
|
+
for (const { label, servers } of readAllMcpServers(home)) {
|
|
334
|
+
const count = Object.keys(servers).length;
|
|
335
|
+
const safe = relaySafeServers(servers);
|
|
336
|
+
// Say so when the relay cap truncated the map. A payload listing 200 of 250
|
|
337
|
+
// servers under a bare "250 MCP servers" label reads as complete coverage.
|
|
338
|
+
const relayed = Object.keys(safe).length;
|
|
339
|
+
const detail = relayed < count
|
|
340
|
+
? `${relayed} of ${count} MCP servers relayed (capped at ${MAX_RELAY_SERVERS} — list is partial)`
|
|
341
|
+
: `${count} MCP server${count === 1 ? "" : "s"}`;
|
|
342
|
+
agents.push({ type: "config", label, detail, config: { mcpServers: safe } });
|
|
343
|
+
}
|
|
344
|
+
return agents;
|
|
345
|
+
}
|
|
346
|
+
/**
|
|
347
|
+
* ⚠️ SECURITY INVARIANT — this returns RAW, UNSANITIZED server specs.
|
|
348
|
+
* The values here contain live secrets: url credentials, `env`, `headers`,
|
|
349
|
+
* `token`, `apiKey`, and absolute command paths. They exist ONLY so `--introspect`
|
|
350
|
+
* can reach a server locally. They MUST NEVER be put into the relay payload
|
|
351
|
+
* directly. Every path that turns these into an `Agent` MUST route them through
|
|
352
|
+
* `relaySafeServers()` first (the single sanitization boundary). If you add a new
|
|
353
|
+
* consumer, sanitize before it leaves this file. Callers today: `discover()`
|
|
354
|
+
* (sanitizes) and the introspection pass (local only, never relayed).
|
|
355
|
+
*/
|
|
356
|
+
function readAllMcpServers(home) {
|
|
357
|
+
const out = [];
|
|
288
358
|
const seen = new Set();
|
|
289
359
|
for (const { label, segs } of MCP_CONFIGS) {
|
|
290
360
|
if (seen.has(label))
|
|
291
361
|
continue;
|
|
292
362
|
const cfg = readJson(home, ...segs);
|
|
293
363
|
const servers = cfg && typeof cfg === "object" ? (cfg.mcpServers ?? cfg.servers) : undefined;
|
|
294
|
-
|
|
295
|
-
if (count > 0 && servers) {
|
|
364
|
+
if (servers && typeof servers === "object" && Object.keys(servers).length > 0) {
|
|
296
365
|
seen.add(label);
|
|
297
|
-
|
|
366
|
+
out.push({ label, servers });
|
|
298
367
|
}
|
|
299
368
|
}
|
|
300
369
|
// Claude Code (~/.claude.json): servers live globally AND per-project — merge both.
|
|
@@ -313,19 +382,17 @@ function discover(home) {
|
|
|
313
382
|
if (projects && typeof projects === "object")
|
|
314
383
|
for (const p of Object.values(projects))
|
|
315
384
|
collect(p);
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
agents.push({ type: "config", label: "Claude Code", detail: `${count} MCP server${count === 1 ? "" : "s"}`, config: { mcpServers: relaySafeServers(merged) } });
|
|
385
|
+
if (Object.keys(merged).length > 0)
|
|
386
|
+
out.push({ label: "Claude Code", servers: merged });
|
|
319
387
|
}
|
|
320
|
-
// OpenAI Codex CLI (~/.codex/config.toml) — TOML
|
|
321
|
-
const codexToml = readText(home, ".codex", "config.toml");
|
|
388
|
+
// OpenAI Codex CLI (~/.codex/config.toml) — TOML.
|
|
389
|
+
const codexToml = readText(MAX_CONFIG_BYTES, home, ".codex", "config.toml");
|
|
322
390
|
if (codexToml) {
|
|
323
391
|
const servers = parseCodexMcpServers(codexToml);
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
agents.push({ type: "config", label: "Codex", detail: `${count} MCP server${count === 1 ? "" : "s"}`, config: { mcpServers: relaySafeServers(servers) } });
|
|
392
|
+
if (Object.keys(servers).length > 0)
|
|
393
|
+
out.push({ label: "Codex", servers });
|
|
327
394
|
}
|
|
328
|
-
return
|
|
395
|
+
return out;
|
|
329
396
|
}
|
|
330
397
|
function registerConnectCommand(program) {
|
|
331
398
|
program
|
|
@@ -336,6 +403,8 @@ function registerConnectCommand(program) {
|
|
|
336
403
|
.option("--home <dir>", "Home directory to scan (for testing)")
|
|
337
404
|
.option("--dry-run", "Do the read-only scan and print exactly what WOULD be sent (destination + tool names), then exit WITHOUT sending")
|
|
338
405
|
.option("--json", "Emit machine-readable JSON instead of formatted text (for agents / automation)")
|
|
406
|
+
.option("--introspect", "Also START configured MCP servers locally and list their advertised tools/resources (introspection-confirmed surface, not runtime behavior), then stop them. Never calls a tool")
|
|
407
|
+
.option("--allow-unrecognized-host", "Permit relaying to a --host that is not an official Atbash deployment (otherwise the command refuses to send)")
|
|
339
408
|
.action(async (rawCode, opts) => {
|
|
340
409
|
const home = opts.home || os.homedir();
|
|
341
410
|
const host = (opts.host || process.env.ATBASH_HOST || DEFAULT_HOST).replace(/\/+$/, "");
|
|
@@ -343,6 +412,8 @@ function registerConnectCommand(program) {
|
|
|
343
412
|
const machine = os.hostname();
|
|
344
413
|
const dryRun = !!opts.dryRun;
|
|
345
414
|
const asJson = !!opts.json;
|
|
415
|
+
const introspect = !!opts.introspect;
|
|
416
|
+
const allowUnrecognizedHost = !!opts.allowUnrecognizedHost;
|
|
346
417
|
const endpoint = `${host}/api/agent-scan/session/${encodeURIComponent(code)}`;
|
|
347
418
|
// Parsed up front so the destination verdict is available to every output
|
|
348
419
|
// path, including the JSON one an agent reads before deciding to proceed.
|
|
@@ -361,8 +432,13 @@ function registerConnectCommand(program) {
|
|
|
361
432
|
// gets a stable, parseable description of exactly what this command is/was doing.
|
|
362
433
|
const emitJson = (extra) => console.log(JSON.stringify({
|
|
363
434
|
tool: "@atbash/cli connect",
|
|
364
|
-
transmits:
|
|
365
|
-
|
|
435
|
+
transmits: (introspect
|
|
436
|
+
? "agent/tool/skill names, MCP endpoint URLs, launch command basenames, and MCP-introspected tool names/descriptions"
|
|
437
|
+
: "agent/tool/skill names, MCP endpoint URLs and launch command basenames")
|
|
438
|
+
+ " — never tokens, auth headers, env values, tool inputs/outputs, or file contents",
|
|
439
|
+
// Introspection STARTS local MCP servers, so the run is not purely read-only.
|
|
440
|
+
readOnly: !introspect,
|
|
441
|
+
startsLocalServers: introspect,
|
|
366
442
|
requests: dryRun ? 0 : 1,
|
|
367
443
|
machine, host, endpoint, code,
|
|
368
444
|
// An agent should treat `recognizedHost: false` as a reason to stop and
|
|
@@ -390,7 +466,91 @@ function registerConnectCommand(program) {
|
|
|
390
466
|
console.error("\n" + chalk_1.default.red(` ✗ ${msg}.`) + chalk_1.default.dim(" Use an https:// host (localhost may use http).\n"));
|
|
391
467
|
process.exit(1);
|
|
392
468
|
}
|
|
469
|
+
// An unrecognized destination is the one real attack (a swapped --host). A
|
|
470
|
+
// warning is not enough for the automation path, which skips prompts — so
|
|
471
|
+
// refuse to SEND to an unknown host unless the operator explicitly opts in.
|
|
472
|
+
// (--dry-run never sends, so it may proceed to preview.)
|
|
473
|
+
if (!recognizedHost && !allowUnrecognizedHost && !dryRun) {
|
|
474
|
+
const msg = `refusing to relay to an unrecognized host (${hostname || host}) — not an official Atbash deployment. Re-run with --allow-unrecognized-host if you trust it.`;
|
|
475
|
+
if (asJson)
|
|
476
|
+
emitJson({ ok: false, error: msg });
|
|
477
|
+
else
|
|
478
|
+
console.error("\n" + chalk_1.default.red(` ✗ ${msg}`) + "\n");
|
|
479
|
+
process.exit(1);
|
|
480
|
+
}
|
|
393
481
|
const agents = discover(home);
|
|
482
|
+
// ── optional: MCP introspection (starts servers locally) ──────────────────
|
|
483
|
+
// Turns name-only MCP entries into an introspection-confirmed ADVERTISED
|
|
484
|
+
// surface. This does not verify implementation behavior. Additive: each
|
|
485
|
+
// reachable server contributes a declared-tools agent the scanner classifies
|
|
486
|
+
// exactly like any other. Only sanitized names/descriptions are relayed.
|
|
487
|
+
if (introspect) {
|
|
488
|
+
const sources = readAllMcpServers(home);
|
|
489
|
+
if (sources.length > 0) {
|
|
490
|
+
if (!asJson)
|
|
491
|
+
console.log(chalk_1.default.dim(` Introspecting ${sources.reduce((n, s) => n + Object.keys(s.servers).length, 0)} MCP server(s) locally (starting & stopping each)…`));
|
|
492
|
+
const results = await (0, introspect_mcp_1.introspectServers)(sources, {
|
|
493
|
+
onProgress: asJson ? undefined : (label, server, res) => console.log(chalk_1.default.dim(` ${res.ok ? chalk_1.default.green("✓") : chalk_1.default.yellow("•")} ${label} · ${server}${res.ok ? ` → ${res.tools.length} tool(s)` : ` (${res.error ?? "unreachable"})`}`)),
|
|
494
|
+
});
|
|
495
|
+
for (const r of results) {
|
|
496
|
+
// The introspection pass is capped. Record the shortfall as an
|
|
497
|
+
// explicitly INCOMPLETE surface rather than letting those servers
|
|
498
|
+
// vanish from a report that otherwise reads as exhaustive.
|
|
499
|
+
if (r.omitted) {
|
|
500
|
+
const note = `${r.omitted} server(s) in this source were not introspected — the run hit its per-scan server cap`;
|
|
501
|
+
if (!asJson)
|
|
502
|
+
console.log(chalk_1.default.yellow(` ! ${r.label} · ${note}`));
|
|
503
|
+
agents.push({
|
|
504
|
+
type: "declared",
|
|
505
|
+
label: `${r.label} · (not introspected)`,
|
|
506
|
+
detail: `${r.omitted} MCP server(s) skipped · introspection incomplete`,
|
|
507
|
+
declaredTools: [],
|
|
508
|
+
surfaceEvidence: {
|
|
509
|
+
source: "mcp-tools-list",
|
|
510
|
+
status: "incomplete",
|
|
511
|
+
observedAt: new Date().toISOString(),
|
|
512
|
+
error: note,
|
|
513
|
+
},
|
|
514
|
+
});
|
|
515
|
+
}
|
|
516
|
+
for (const s of r.servers) {
|
|
517
|
+
if (!s.ok) {
|
|
518
|
+
agents.push({
|
|
519
|
+
type: "declared",
|
|
520
|
+
label: `${r.label} · ${s.server}`,
|
|
521
|
+
detail: `MCP ${s.transport} · introspection incomplete`,
|
|
522
|
+
declaredTools: [],
|
|
523
|
+
surfaceEvidence: {
|
|
524
|
+
source: "mcp-tools-list",
|
|
525
|
+
status: "incomplete",
|
|
526
|
+
transport: s.transport,
|
|
527
|
+
server: s.server,
|
|
528
|
+
observedAt: new Date().toISOString(),
|
|
529
|
+
error: (s.error ?? "unreachable").slice(0, 300),
|
|
530
|
+
},
|
|
531
|
+
});
|
|
532
|
+
continue;
|
|
533
|
+
}
|
|
534
|
+
const extras = [s.resourceCount ? `${s.resourceCount} resource${s.resourceCount === 1 ? "" : "s"}` : "", s.promptCount ? `${s.promptCount} prompt${s.promptCount === 1 ? "" : "s"}` : ""].filter(Boolean);
|
|
535
|
+
agents.push({
|
|
536
|
+
type: "declared",
|
|
537
|
+
label: `${r.label} · ${s.server}`,
|
|
538
|
+
// "introspection-confirmed" — the server DECLARED these tools when we
|
|
539
|
+
// listed them; it is not proof of what the implementation will do.
|
|
540
|
+
detail: `${s.tools.length} tool${s.tools.length === 1 ? "" : "s"} (MCP ${s.transport} · introspection-confirmed)${extras.length ? " · " + extras.join(", ") : ""}`,
|
|
541
|
+
declaredTools: s.tools,
|
|
542
|
+
surfaceEvidence: {
|
|
543
|
+
source: "mcp-tools-list",
|
|
544
|
+
status: "complete",
|
|
545
|
+
transport: s.transport,
|
|
546
|
+
server: s.server,
|
|
547
|
+
observedAt: new Date().toISOString(),
|
|
548
|
+
},
|
|
549
|
+
});
|
|
550
|
+
}
|
|
551
|
+
}
|
|
552
|
+
}
|
|
553
|
+
}
|
|
394
554
|
const payload = { agents, machine };
|
|
395
555
|
// ── machine-readable path (agents / automation) ──────────────────────────
|
|
396
556
|
if (asJson) {
|
|
@@ -415,7 +575,9 @@ function registerConnectCommand(program) {
|
|
|
415
575
|
// reviewing this command can confirm nothing hidden is happening.
|
|
416
576
|
console.log(chalk_1.default.dim(" Reads (read-only): known agent/MCP config files under your home dir — OpenClaw, Hermes,"));
|
|
417
577
|
console.log(chalk_1.default.dim(" Claude Desktop/Code, Cursor, Windsurf, VS Code, Gemini, Continue, Codex."));
|
|
418
|
-
console.log(chalk_1.default.dim(" Relays names, MCP URLs and launch
|
|
578
|
+
console.log(chalk_1.default.dim(" Relays names, MCP URLs and launch-command basenames only — never tokens, headers, env values or file contents."));
|
|
579
|
+
if (introspect)
|
|
580
|
+
console.log(chalk_1.default.yellow(" Introspection ON:") + chalk_1.default.dim(" also STARTS your MCP servers locally to list their tools, then stops them. Relays tool names/descriptions only — never inputs, outputs, args or env."));
|
|
419
581
|
console.log(chalk_1.default.dim(` Sends: ${dryRun ? "nothing (dry run)" : "one POST to the destination below, then exits"}.`));
|
|
420
582
|
// Machine identity is stated loudly on purpose: if this ran somewhere other
|
|
421
583
|
// than the computer you mean to govern (an AI-assistant sandbox, a VM, a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/commands/connect.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/commands/connect.ts"],"names":[],"mappings":"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"}
|