remote-access-mcp 3.1.0 → 3.1.1

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.
@@ -1 +1 @@
1
- {"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../../src/tools/plugins.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAMtD,wBAAsB,wBAAwB,CAAC,MAAM,EAAC,SAAS,EAAC,GAAG,EAAC,WAAW,GAAE,OAAO,CAAC,IAAI,CAAC,CAQ7F;AACD,wBAAgB,mBAAmB,CAAC,MAAM,EAAC,SAAS,EAAC,GAAG,EAAC,WAAW,GAAE,IAAI,CAIzE"}
1
+ {"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../../src/tools/plugins.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAetD,wBAAsB,wBAAwB,CAAC,MAAM,EAAC,SAAS,EAAC,GAAG,EAAC,WAAW,GAAE,OAAO,CAAC,IAAI,CAAC,CAS7F;AACD,wBAAgB,mBAAmB,CAAC,MAAM,EAAC,SAAS,EAAC,GAAG,EAAC,WAAW,GAAE,IAAI,CAIzE"}
@@ -13,16 +13,28 @@ function manifests() { if (!fs.existsSync(root()))
13
13
  catch {
14
14
  return [];
15
15
  } }); }
16
+ function pluginDir(name) { return path.join(root(), name.replace(/[^a-zA-Z0-9._-]/g, '_')); }
17
+ function pluginEntry(m) {
18
+ if (!m.entry || !m.trusted)
19
+ return null;
20
+ const dir = pluginDir(m.name);
21
+ const resolved = path.resolve(dir, m.entry);
22
+ const rel = path.relative(dir, resolved);
23
+ if (!rel || rel.startsWith('..' + path.sep) || path.isAbsolute(rel))
24
+ return null;
25
+ return resolved;
26
+ }
16
27
  export async function registerInstalledPlugins(server, ctx) {
17
28
  for (const m of manifests()) {
18
- if (!m.entry)
29
+ const entry = pluginEntry(m);
30
+ if (!entry)
19
31
  continue;
20
- const dir = path.join(root(), m.name.replace(/[^a-zA-Z0-9._-]/g, '_'));
32
+ const dir = pluginDir(m.name);
21
33
  const allowed = (m.permissions || []).every(p => !ctx.token.scopes.length || ctx.token.scopes.includes(p));
22
34
  if (!allowed)
23
35
  continue;
24
36
  try {
25
- const mod = await import(pathToFileURL(path.resolve(dir, m.entry)).href);
37
+ const mod = await import(pathToFileURL(entry).href);
26
38
  if (typeof mod.register === 'function')
27
39
  await mod.register(server, ctx);
28
40
  }
@@ -33,7 +45,8 @@ export function registerPluginTools(server, ctx) {
33
45
  server.registerTool('plugin_list', { description: 'List installed local Remote Access MCP plugins and their declared permissions.', inputSchema: {} }, async () => { assertToolPermitted({ tool: 'plugin_list', scopes: ctx.token.scopes, readOnly: ctx.readOnly }); return { content: [{ type: 'text', text: JSON.stringify(manifests(), null, 2) }] }; });
34
46
  server.registerTool('plugin_install', { description: 'Install a trusted local plugin directory containing manifest.json. The source must already exist on the machine.', inputSchema: { source: z.string() } }, async ({ source }) => { assertToolPermitted({ tool: 'plugin_install', scopes: ctx.token.scopes, readOnly: ctx.readOnly }); const src = path.resolve(source); assertAllowed({ allowed_paths: ctx.token.allowed_paths, denied_paths: ctx.token.denied_paths, shell_enabled: ctx.token.shell_enabled }, src); const mf = path.join(src, 'manifest.json'); if (!fs.existsSync(mf))
35
47
  return { content: [{ type: 'text', text: 'manifest.json not found.' }], isError: true }; const m = JSON.parse(fs.readFileSync(mf, 'utf8')); if (!m.name || !m.version)
36
- return { content: [{ type: 'text', text: 'Invalid plugin manifest.' }], isError: true }; const dest = path.join(root(), m.name.replace(/[^a-zA-Z0-9._-]/g, '_')); fs.mkdirSync(root(), { recursive: true }); fs.cpSync(src, dest, { recursive: true }); return { content: [{ type: 'text', text: `Plugin ${m.name}@${m.version} installed. Declared permissions: ${(m.permissions || []).join(', ') || 'none'}.` }] }; });
48
+ return { content: [{ type: 'text', text: 'Invalid plugin manifest.' }], isError: true }; if (m.trusted !== true)
49
+ return { content: [{ type: 'text', text: 'Plugin manifest must explicitly set trusted=true before installation.' }], isError: true }; const dest = pluginDir(m.name); fs.mkdirSync(root(), { recursive: true }); fs.cpSync(src, dest, { recursive: true }); return { content: [{ type: 'text', text: `Plugin ${m.name}@${m.version} installed. Declared permissions: ${(m.permissions || []).join(', ') || 'none'}.` }] }; });
37
50
  server.registerTool('plugin_remove', { description: 'Remove an installed local plugin.', inputSchema: { name: z.string().regex(/^[a-zA-Z0-9._-]+$/) } }, async ({ name }) => { assertToolPermitted({ tool: 'plugin_remove', scopes: ctx.token.scopes, readOnly: ctx.readOnly }); const p = path.join(root(), name); if (!fs.existsSync(p))
38
51
  return { content: [{ type: 'text', text: 'Plugin not found.' }], isError: true }; fs.rmSync(p, { recursive: true, force: true }); return { content: [{ type: 'text', text: `Plugin ${name} removed.` }] }; });
39
52
  }
@@ -1 +1 @@
1
- {"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../src/tools/plugins.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../src/tools/plugins.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,8 @@ export function registerResourcesAndPrompts(server, ctx) {
9
9
  server.registerResource('services_resource', 'ramcp://services', { description: 'Configured service and runtime overview', mimeType: 'application/json' }, async () => ({ contents: [{ uri: 'ramcp://services', mimeType: 'application/json', text: json({ platform: process.platform, pid: process.pid, uptime: process.uptime() }) }] }));
10
10
  server.registerResource('network_resource', 'ramcp://network', { description: 'Local network interface information', mimeType: 'application/json' }, async () => ({ contents: [{ uri: 'ramcp://network', mimeType: 'application/json', text: json(os.networkInterfaces()) }] }));
11
11
  server.registerResource('projects_resource', 'ramcp://projects', { description: 'Local Remote Access MCP data directory overview', mimeType: 'application/json' }, async () => ({ contents: [{ uri: 'ramcp://projects', mimeType: 'application/json', text: json({ dataDir: dataDir(), entries: fs.existsSync(dataDir()) ? fs.readdirSync(dataDir()) : [] }) }] }));
12
- server.registerResource('audit_resource', 'ramcp://audit', { description: 'Recent audit entries for the authenticated operator', mimeType: 'application/json' }, async () => { gate('audit_resource'); const rows = ctx.cfg.audit.enabled ? [] : []; return { contents: [{ uri: 'ramcp://audit', mimeType: 'application/json', text: json(rows) }] }; });
12
+ server.registerResource('audit_resource', 'ramcp://audit', { description: 'Recent audit entries for the authenticated operator', mimeType: 'application/json' }, async () => { gate('audit_resource'); if (!ctx.cfg.audit.enabled)
13
+ return { contents: [{ uri: 'ramcp://audit', mimeType: 'application/json', text: json([]) }] }; const { AuditLog } = await import('../core/audit.js'); const audit = new AuditLog(ctx.cfg.audit.db_path); const fingerprint = AuditLog.fingerprint(ctx.token.token); const rows = audit.query({ fingerprint, limit: 100 }); return { contents: [{ uri: 'ramcp://audit', mimeType: 'application/json', text: json(rows) }] }; });
13
14
  const prompt = (name, title, description, text) => server.registerPrompt(name, { title, description }, async () => ({ description, messages: [{ role: 'user', content: { type: 'text', text } }] }));
14
15
  prompt('diagnose_prompt', 'Diagnose Server', 'Systematic server diagnosis', 'Inspect system health, failed services, processes, ports, logs, disk and network. Prefer read-only diagnostics first and summarize evidence before proposing mutations.');
15
16
  prompt('deploy_prompt', 'Deploy Project', 'Safe project deployment', 'Inspect the project, run tests/build, create a change snapshot, apply the smallest safe deployment steps, verify service health, and report rollback instructions.');
@@ -1 +1 @@
1
- {"version":3,"file":"resources-prompts.js","sourceRoot":"","sources":["../../src/tools/resources-prompts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AAIzB,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,MAAM,UAAU,2BAA2B,CAAC,MAAgB,EAAC,GAAe;IAC3E,MAAM,IAAI,GAAC,CAAC,IAAW,EAAC,EAAE,CAAA,mBAAmB,CAAC,EAAC,IAAI,EAAC,MAAM,EAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAC,QAAQ,EAAC,GAAG,CAAC,QAAQ,EAAC,CAAC,CAAC;IACpG,MAAM,IAAI,GAAC,CAAC,CAAS,EAAC,EAAE,CAAA,IAAI,CAAC,SAAS,CAAC,CAAC,EAAC,IAAI,EAAC,CAAC,CAAC,CAAC;IACjD,MAAM,CAAC,gBAAgB,CAAC,iBAAiB,EAAC,gBAAgB,EAAC,EAAC,WAAW,EAAC,kCAAkC,EAAC,QAAQ,EAAC,kBAAkB,EAAC,EAAC,KAAK,IAAE,EAAE,CAAA,CAAC,EAAC,QAAQ,EAAC,CAAC,EAAC,GAAG,EAAC,gBAAgB,EAAC,QAAQ,EAAC,kBAAkB,EAAC,IAAI,EAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,EAAE,CAAC,QAAQ,EAAE,EAAC,QAAQ,EAAC,OAAO,CAAC,QAAQ,EAAC,OAAO,EAAC,EAAE,CAAC,OAAO,EAAE,EAAC,IAAI,EAAC,EAAE,CAAC,IAAI,EAAE,EAAC,IAAI,EAAC,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,EAAC,WAAW,EAAC,EAAE,CAAC,QAAQ,EAAE,EAAC,UAAU,EAAC,EAAE,CAAC,OAAO,EAAE,EAAC,MAAM,EAAC,EAAE,CAAC,MAAM,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC;IACjZ,MAAM,CAAC,gBAAgB,CAAC,mBAAmB,EAAC,kBAAkB,EAAC,EAAC,WAAW,EAAC,yCAAyC,EAAC,QAAQ,EAAC,kBAAkB,EAAC,EAAC,KAAK,IAAE,EAAE,CAAA,CAAC,EAAC,QAAQ,EAAC,CAAC,EAAC,GAAG,EAAC,kBAAkB,EAAC,QAAQ,EAAC,kBAAkB,EAAC,IAAI,EAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,OAAO,CAAC,QAAQ,EAAC,GAAG,EAAC,OAAO,CAAC,GAAG,EAAC,MAAM,EAAC,OAAO,CAAC,MAAM,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC;IAChT,MAAM,CAAC,gBAAgB,CAAC,kBAAkB,EAAC,iBAAiB,EAAC,EAAC,WAAW,EAAC,qCAAqC,EAAC,QAAQ,EAAC,kBAAkB,EAAC,EAAC,KAAK,IAAE,EAAE,CAAA,CAAC,EAAC,QAAQ,EAAC,CAAC,EAAC,GAAG,EAAC,iBAAiB,EAAC,QAAQ,EAAC,kBAAkB,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,CAAC,iBAAiB,EAAE,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC;IAC5P,MAAM,CAAC,gBAAgB,CAAC,mBAAmB,EAAC,kBAAkB,EAAC,EAAC,WAAW,EAAC,iDAAiD,EAAC,QAAQ,EAAC,kBAAkB,EAAC,EAAC,KAAK,IAAE,EAAE,CAAA,CAAC,EAAC,QAAQ,EAAC,CAAC,EAAC,GAAG,EAAC,kBAAkB,EAAC,QAAQ,EAAC,kBAAkB,EAAC,IAAI,EAAC,IAAI,CAAC,EAAC,OAAO,EAAC,OAAO,EAAE,EAAC,OAAO,EAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAA,CAAC,CAAA,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,CAAA,CAAC,CAAA,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC;IACtU,MAAM,CAAC,gBAAgB,CAAC,gBAAgB,EAAC,eAAe,EAAC,EAAC,WAAW,EAAC,qDAAqD,EAAC,QAAQ,EAAC,kBAAkB,EAAC,EAAC,KAAK,IAAE,EAAE,GAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAA,MAAM,IAAI,GAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAA,CAAC,CAAA,EAAE,CAAA,CAAC,CAAA,EAAE,CAAC,CAAA,OAAM,EAAC,QAAQ,EAAC,CAAC,EAAC,GAAG,EAAC,eAAe,EAAC,QAAQ,EAAC,kBAAkB,EAAC,IAAI,EAAC,IAAI,CAAC,IAAI,CAAC,EAAC,CAAC,EAAC,CAAC,CAAA,CAAC,CAAC,CAAC;IACzT,MAAM,MAAM,GAAC,CAAC,IAAW,EAAC,KAAY,EAAC,WAAkB,EAAC,IAAW,EAAC,EAAE,CAAA,MAAM,CAAC,cAAc,CAAC,IAAI,EAAC,EAAC,KAAK,EAAC,WAAW,EAAC,EAAC,KAAK,IAAE,EAAE,CAAA,CAAC,EAAC,WAAW,EAAC,QAAQ,EAAC,CAAC,EAAC,IAAI,EAAC,MAAM,EAAC,OAAO,EAAC,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC;IACrM,MAAM,CAAC,iBAAiB,EAAC,iBAAiB,EAAC,6BAA6B,EAAC,yKAAyK,CAAC,CAAC;IACpP,MAAM,CAAC,eAAe,EAAC,gBAAgB,EAAC,yBAAyB,EAAC,oKAAoK,CAAC,CAAC;IACxO,MAAM,CAAC,uBAAuB,EAAC,gBAAgB,EAAC,uBAAuB,EAAC,kJAAkJ,CAAC,CAAC;IAC5N,MAAM,CAAC,wBAAwB,EAAC,iBAAiB,EAAC,8BAA8B,EAAC,kIAAkI,CAAC,CAAC;IACrN,MAAM,CAAC,YAAY,CAAC,iBAAiB,EAAC,EAAC,WAAW,EAAC,wDAAwD,EAAC,WAAW,EAAC,EAAE,EAAC,EAAC,KAAK,IAAE,EAAE,GAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAA,OAAM,EAAC,OAAO,EAAC,CAAC,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,EAAE,CAAC,QAAQ,EAAE,EAAC,QAAQ,EAAC,OAAO,CAAC,QAAQ,EAAC,OAAO,EAAC,EAAE,CAAC,OAAO,EAAE,EAAC,IAAI,EAAC,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,EAAC,WAAW,EAAC,EAAE,CAAC,QAAQ,EAAE,EAAC,UAAU,EAAC,EAAE,CAAC,OAAO,EAAE,EAAC,MAAM,EAAC,EAAE,CAAC,MAAM,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAA,CAAC,CAAC,CAAC;AAChX,CAAC"}
1
+ {"version":3,"file":"resources-prompts.js","sourceRoot":"","sources":["../../src/tools/resources-prompts.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../src/tools/shell.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAOtD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,GAAG,IAAI,CAyH5E"}
1
+ {"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../src/tools/shell.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAOtD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,GAAG,IAAI,CAgI5E"}
@@ -3,7 +3,7 @@ import { promisify } from 'node:util';
3
3
  import { z } from 'zod';
4
4
  import { assertToolPermitted, assertCommandPolicy } from '../core/policy.js';
5
5
  import { AuditLog } from '../core/audit.js';
6
- import { requestApproval, getApproval, decideApproval } from '../core/approvals.js';
6
+ import { requestApproval, getApproval, decideApproval, consumeApproval } from '../core/approvals.js';
7
7
  import { shellCommand, childEnv, isWindows } from '../core/platform.js';
8
8
  const exec = promisify(execFile);
9
9
  const MAX_OUTPUT = 60_000;
@@ -31,9 +31,14 @@ export function registerShellTools(server, ctx) {
31
31
  assertToolPermitted({ tool: 'run_command', scopes: ctx.token.scopes, readOnly: ctx.readOnly, policy: policy(), target: cwd });
32
32
  const tokenId = AuditLog.fingerprint(ctx.token.token);
33
33
  const approval = approval_id ? getApproval(approval_id, tokenId) : undefined;
34
- if (ctx.token.approval_mode === 'approval-required' && approval?.status !== 'approved') {
35
- const pending = requestApproval(tokenId, command, cwd);
36
- return { content: [{ type: 'text', text: `Approval required. Ask an authorized operator to approve approval_id=${pending.id}, then retry with approval_id.` }], isError: true };
34
+ if (ctx.token.approval_mode === 'approval-required') {
35
+ if (!approval || approval.status !== 'approved' || approval.command !== command || approval.cwd !== cwd) {
36
+ const pending = requestApproval(tokenId, command, cwd);
37
+ return { content: [{ type: 'text', text: `Approval required. Ask an authorized operator to approve approval_id=${pending.id}, then retry with approval_id.` }], isError: true };
38
+ }
39
+ if (!consumeApproval(approval.id, tokenId, command, cwd)) {
40
+ return { content: [{ type: 'text', text: 'Approval is invalid, already consumed, or does not match this exact command/cwd.' }], isError: true };
41
+ }
37
42
  }
38
43
  assertCommandPolicy({ command_allowlist: ctx.token.command_allowlist, approval_mode: 'auto' }, command, true);
39
44
  const timeout = Math.min(timeout_ms, 600_000);
@@ -69,11 +74,13 @@ export function registerShellTools(server, ctx) {
69
74
  inputSchema: { id: z.string(), approved: z.boolean() },
70
75
  }, async ({ id, approved }) => {
71
76
  assertToolPermitted({ tool: 'approval_decide', scopes: ctx.token.scopes, readOnly: ctx.readOnly });
72
- const requesterId = AuditLog.fingerprint(ctx.token.token);
73
- const a = getApproval(id, ctx.token.role === 'admin' || ctx.token.role === 'deployer' ? undefined : requesterId);
77
+ const actorId = AuditLog.fingerprint(ctx.token.token);
78
+ const privileged = ctx.token.role === 'admin' || ctx.token.role === 'deployer';
79
+ const requesterId = privileged ? undefined : actorId;
80
+ const a = getApproval(id, requesterId);
74
81
  if (!a)
75
82
  return { content: [{ type: 'text', text: 'Approval not found or not authorized.' }], isError: true };
76
- decideApproval(id, ctx.token.role === 'admin' || ctx.token.role === 'deployer' ? undefined : requesterId, approved);
83
+ decideApproval(id, requesterId, approved, actorId);
77
84
  return { content: [{ type: 'text', text: `Approval ${id}: ${approved ? 'approved' : 'rejected'}.` }] };
78
85
  });
79
86
  // ---- process_list ---------------------------------------------------------
@@ -1 +1 @@
1
- {"version":3,"file":"shell.js","sourceRoot":"","sources":["../../src/tools/shell.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shell.js","sourceRoot":"","sources":["../../src/tools/shell.ts"],"names":[],"mappings":"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"}
@@ -112,3 +112,10 @@ pass them as `target:` to the gate; (4) think about injection (quotes,
112
112
  metacharacters, second-order effects) and add a guard, not a regex hope;
113
113
  (5) never log secrets; the audit wrapper redacts args but your *output* is
114
114
  on you.
115
+
116
+
117
+ ## Approval security
118
+
119
+ Approval records are durable and protected by a filesystem lock. A granted approval is cryptographically unrelated to the shell command, so the implementation binds the approval to the exact command and working directory and atomically marks it consumed before execution. This prevents approval replay and command substitution.
120
+
121
+ Plugins are a trusted in-process extension mechanism. Entrypoints cannot escape their plugin directory, but JavaScript executed by an installed trusted plugin has the gateway process privileges; plugin installation is therefore an administrative trust boundary, not a sandbox.
@@ -115,10 +115,11 @@ persist via `saveConfig` and hot-reload; they cannot touch other tokens.
115
115
  ### Transfers / safety
116
116
  - `upload_file` / `download_file` — binary-safe transfer with SHA-256
117
117
  - `approval_decide` — approve or reject sensitive shell operations
118
- - `change_set_begin` / `change_set_add` / `change_set_status` / `change_set_commit` / `change_set_rollback`
118
+ - `change_set_begin` / `change_set_add` / `change_set_status` / `change_set_commit` / `change_set_rollback` — managed filesystem change sets; pass `change_set_id` to `write_file`, `edit_file`, and `delete_path` to capture mutations automatically. Rollback tracks missing paths (created later), restores deleted/modified paths, and can resume after partial failure.
119
119
 
120
120
  ### Diagnostics / data
121
121
  - `system_diagnostics` / `diagnose_service`
122
+ - `health_watch` / `health_status` / `health_stop` — persistent application-level watchers with single-process ownership and restart recovery.
122
123
  - `health_watch` / `health_status` / `health_stop`
123
124
  - `database_query` / `database_schema`
124
125
 
@@ -172,3 +173,12 @@ persist via `saveConfig` and hot-reload; they cannot touch other tokens.
172
173
  Env overrides (tests, minimal deploys): `RAMCP_TOKEN RAMCP_HOST RAMCP_PORT
173
174
  RAMCP_PUBLIC_HOST RAMCP_SHELL RAMCP_ALLOWED_PATHS RAMCP_DENIED_PATHS`
174
175
  (legacy `DANA_*` still honored). `SSH_BIN` existed for fleet tests — gone.
176
+
177
+
178
+ ### Approvals
179
+
180
+ Shell approvals are persisted under the data directory, survive gateway restarts, are bound to the exact command and working directory, record the approving token fingerprint, and are atomically consumed after one execution. An approval cannot be reused for another command.
181
+
182
+ ### Plugins
183
+
184
+ Installed plugins must explicitly set `trusted: true`. Plugin entrypoints are constrained to remain inside their own plugin directory. Plugins are intentionally a trusted in-process extension point, not a security sandbox; do not install untrusted code.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "remote-access-mcp",
3
- "version": "3.1.0",
3
+ "version": "3.1.1",
4
4
  "description": "Turn any machine into a secure AI-agent-accessible endpoint via MCP. Connect ChatGPT, Claude, Grok, and other MCP clients to files, shell, git, services, and more.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -82,5 +82,8 @@
82
82
  "better-sqlite3@12.11.1": true,
83
83
  "esbuild@0.28.2": true,
84
84
  "esbuild@0.21.5": true
85
+ },
86
+ "overrides": {
87
+ "qs": ">=6.16.0"
85
88
  }
86
89
  }