@agent-beam/beam 0.2.37 → 0.2.39

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 (112) hide show
  1. package/README.md +7 -13
  2. package/dist/access-risk.d.ts +10 -0
  3. package/dist/access-risk.js +43 -0
  4. package/dist/access-risk.js.map +1 -0
  5. package/dist/action-context.d.ts +30 -0
  6. package/dist/action-context.js +203 -0
  7. package/dist/action-context.js.map +1 -0
  8. package/dist/activity.d.ts +22 -0
  9. package/dist/activity.js +132 -0
  10. package/dist/activity.js.map +1 -0
  11. package/dist/agent-hook-install.d.ts +8 -0
  12. package/dist/agent-hook-install.js +278 -0
  13. package/dist/agent-hook-install.js.map +1 -0
  14. package/dist/agent-installers.js +16 -3
  15. package/dist/agent-installers.js.map +1 -1
  16. package/dist/agent-plugins.d.ts +3 -0
  17. package/dist/agent-plugins.js +66 -0
  18. package/dist/agent-plugins.js.map +1 -0
  19. package/dist/agents.d.ts +1 -0
  20. package/dist/agents.js +30 -184
  21. package/dist/agents.js.map +1 -1
  22. package/dist/behavioral-anomaly.d.ts +16 -0
  23. package/dist/behavioral-anomaly.js +66 -0
  24. package/dist/behavioral-anomaly.js.map +1 -0
  25. package/dist/cli.js +28 -10
  26. package/dist/cli.js.map +1 -1
  27. package/dist/client.d.ts +1 -1
  28. package/dist/client.js +203 -100
  29. package/dist/client.js.map +1 -1
  30. package/dist/connect.d.ts +7 -0
  31. package/dist/connect.js +12 -0
  32. package/dist/connect.js.map +1 -1
  33. package/dist/core.d.ts +50 -2
  34. package/dist/core.js +73 -24
  35. package/dist/core.js.map +1 -1
  36. package/dist/credential-egress.d.ts +17 -0
  37. package/dist/credential-egress.js +325 -0
  38. package/dist/credential-egress.js.map +1 -0
  39. package/dist/custom-rules.js +2 -1
  40. package/dist/custom-rules.js.map +1 -1
  41. package/dist/data-detectors.js +60 -4
  42. package/dist/data-detectors.js.map +1 -1
  43. package/dist/destructive-risk.d.ts +1 -0
  44. package/dist/destructive-risk.js +70 -0
  45. package/dist/destructive-risk.js.map +1 -0
  46. package/dist/edit-stats.js +5 -5
  47. package/dist/edit-stats.js.map +1 -1
  48. package/dist/entity-redaction.d.ts +11 -0
  49. package/dist/entity-redaction.js +88 -0
  50. package/dist/entity-redaction.js.map +1 -0
  51. package/dist/file-lock.d.ts +1 -0
  52. package/dist/file-lock.js +54 -0
  53. package/dist/file-lock.js.map +1 -0
  54. package/dist/forward.d.ts +13 -6
  55. package/dist/forward.js +120 -42
  56. package/dist/forward.js.map +1 -1
  57. package/dist/hook-adapters.d.ts +2 -2
  58. package/dist/hook-adapters.js +59 -60
  59. package/dist/hook-adapters.js.map +1 -1
  60. package/dist/hook-catalog.d.ts +12 -0
  61. package/dist/hook-catalog.js +469 -0
  62. package/dist/hook-catalog.js.map +1 -0
  63. package/dist/hook-config.d.ts +8 -0
  64. package/dist/hook-config.js +80 -0
  65. package/dist/hook-config.js.map +1 -0
  66. package/dist/hook-spool.d.ts +3 -0
  67. package/dist/hook-spool.js +56 -0
  68. package/dist/hook-spool.js.map +1 -0
  69. package/dist/install.d.ts +5 -5
  70. package/dist/install.js +48 -199
  71. package/dist/install.js.map +1 -1
  72. package/dist/inventory.js +1 -1
  73. package/dist/inventory.js.map +1 -1
  74. package/dist/jev.js +2 -1
  75. package/dist/jev.js.map +1 -1
  76. package/dist/judge.js +2 -1
  77. package/dist/judge.js.map +1 -1
  78. package/dist/mitigation-pattern.d.ts +1 -0
  79. package/dist/mitigation-pattern.js +140 -0
  80. package/dist/mitigation-pattern.js.map +1 -0
  81. package/dist/package-risk-rules.js +2 -2
  82. package/dist/package-risk-rules.js.map +1 -1
  83. package/dist/policy-paths.d.ts +20 -0
  84. package/dist/policy-paths.js +145 -0
  85. package/dist/policy-paths.js.map +1 -0
  86. package/dist/policy.d.ts +5 -0
  87. package/dist/policy.js +78 -10
  88. package/dist/policy.js.map +1 -1
  89. package/dist/rule-catalog.d.ts +3 -1
  90. package/dist/rule-catalog.js +124 -24
  91. package/dist/rule-catalog.js.map +1 -1
  92. package/dist/rule-matches.d.ts +13 -0
  93. package/dist/rule-matches.js +42 -0
  94. package/dist/rule-matches.js.map +1 -0
  95. package/dist/serve.js +55 -5
  96. package/dist/serve.js.map +1 -1
  97. package/dist/server.js +7 -6
  98. package/dist/server.js.map +1 -1
  99. package/dist/setup.js +26 -13
  100. package/dist/setup.js.map +1 -1
  101. package/dist/skill-risk-rules.js +2 -2
  102. package/dist/skill-risk-rules.js.map +1 -1
  103. package/dist/skill-setup.js +4 -5
  104. package/dist/skill-setup.js.map +1 -1
  105. package/dist/skill-sync.d.ts +5 -1
  106. package/dist/skill-sync.js +115 -14
  107. package/dist/skill-sync.js.map +1 -1
  108. package/dist/store.js +6 -9
  109. package/dist/store.js.map +1 -1
  110. package/dist/studio.js +2 -2
  111. package/package.json +6 -3
  112. package/stress-report.json +48 -48
@@ -1 +1 @@
1
- {"version":3,"file":"policy.js","sourceRoot":"","sources":["../src/policy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"policy.js","sourceRoot":"","sources":["../src/policy.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { type Matcher } from "./rule-matches.js";
1
2
  export type Severity = "critical" | "high" | "medium" | "info";
2
3
  export type RuleCategory = "exec" | "exfil" | "impact" | "integrity" | "persistence" | "privilege" | "recon" | "secrets" | "source_control" | "custom";
3
4
  export type Rule = {
@@ -6,7 +7,8 @@ export type Rule = {
6
7
  severity: Severity;
7
8
  category: RuleCategory;
8
9
  explanation: string;
9
- match: (s: string) => boolean;
10
+ match: Matcher;
11
+ severityFor?: (s: string) => Severity;
10
12
  };
11
13
  export declare const builtinRules: Rule[];
12
14
  /** Built-in rules by id, for callers (like `beam monitor`) that reuse a subset of the catalog. */
@@ -1,9 +1,16 @@
1
- const secret = /(?:\.env(?:\b|[./])|\.ssh[\\/]|id_rsa|id_ed25519|\.aws[\\/]credentials|(?:api[_-]?key|access[_-]?token|password|secret)\b)/i;
2
- const egress = /(?:https?:\/\/|\bcurl\b|\bwget\b|\bupload\b|\bwebhook\b|\bsend\b|\bexfiltrat\w*)/i;
3
- // Linear checks for "something | sh". As regexes (/curl[^\n]*\|\s*sh/) they backtrack
4
- // quadratically or worse on long hostile lines, and these rules also run on attacker-written
5
- // text inside customer apps (App monitoring). Each line's pipes are split once and scanned in order.
6
- const SHELL_AFTER_PIPE = /^\s*(?:sudo\s+)?(?:ba|z|fi)?sh\b/i;
1
+ // The built-in detection rules: pure data and regular expressions, with no Node.js built-ins, so
2
+ // the same catalog backs agent hooks (core.ts) and the in-app SDK (sdk.ts), which can run in
3
+ // edge runtimes.
4
+ import { promptAttack } from "./prompt-attacks.js";
5
+ import { isScopedTemporaryCleanup } from "./destructive-risk.js";
6
+ import { patternMatch, anyMatch, allMatch, functionalMatch } from "./rule-matches.js";
7
+ import { credentialExposureSpans, possibleCredentialExposure } from "./credential-egress.js";
8
+ const secret = /(?:\.env(?:\b|[./])|\.ssh[\\/]|id_rsa|id_ed25519|\.aws[\\/]credentials|\.pgpass\b|\.docker[\\/]config\.json|\.gnupg[\\/]|credentials\.json|(?:api[_-]?key|access[_-]?token|password|secret)\b)/i;
9
+ // Linear checks for "something | sh" or "something | <interpreter>". As regexes
10
+ // (/curl[^\n]*\|\s*sh/) they backtrack quadratically or worse on long hostile lines, and these
11
+ // rules also run on attacker-written text inside customer apps (App monitoring). Each line's
12
+ // pipes are split once and scanned in order.
13
+ const EXEC_AFTER_PIPE = /^\s*(?:sudo\s+)?(?:(?:ba|z|fi)?sh|python3?|node|ruby|perl|pwsh|powershell)\b/i;
7
14
  function pipesIntoShell(s, newArmer) {
8
15
  for (const line of s.split("\n")) {
9
16
  if (!line.includes("|"))
@@ -11,13 +18,38 @@ function pipesIntoShell(s, newArmer) {
11
18
  const arms = newArmer();
12
19
  let armed = false;
13
20
  for (const [i, segment] of line.split("|").entries()) {
14
- if (i > 0 && armed && SHELL_AFTER_PIPE.test(segment))
21
+ if (i > 0 && armed && EXEC_AFTER_PIPE.test(segment))
15
22
  return true;
16
23
  armed = arms(segment) || armed;
17
24
  }
18
25
  }
19
26
  return false;
20
27
  }
28
+ function pipelineMatcher(newArmer) {
29
+ return functionalMatch(text => pipesIntoShell(text, newArmer), text => {
30
+ const spans = [];
31
+ let offset = 0;
32
+ for (const line of text.split("\n")) {
33
+ const arms = newArmer();
34
+ let armedAt;
35
+ let cursor = 0;
36
+ for (const segment of line.split("|")) {
37
+ const executed = EXEC_AFTER_PIPE.exec(segment);
38
+ if (armedAt !== undefined && executed) {
39
+ spans.push({ start: offset + armedAt, end: offset + cursor + executed[0].length, label: "Pipeline into an interpreter" });
40
+ break;
41
+ }
42
+ if (arms(segment))
43
+ armedAt = cursor;
44
+ else
45
+ armedAt = undefined;
46
+ cursor += segment.length + 1;
47
+ }
48
+ offset += line.length + 1;
49
+ }
50
+ return spans;
51
+ });
52
+ }
21
53
  const downloads = () => (segment) => /\b(?:curl|wget)\b/i.test(segment);
22
54
  // base64, then a decode flag after it (in the same segment or a later one).
23
55
  const decodes = () => {
@@ -30,24 +62,92 @@ const decodes = () => {
30
62
  return /(?:^|\s)(?:-\w*d\w*|--decode)\b/i.test(segment.slice(at));
31
63
  };
32
64
  };
65
+ // "rm" with recursive-force intent, however the flags are written: combined (-rf, -fr), split
66
+ // (-r -f), long-form (--recursive --force), or mixed (-r --force). A single regex over the whole
67
+ // command missed the split-flag case entirely (an easy, common bypass), so each command segment
68
+ // (split on ; && || | and newlines, the points a shell actually starts a new command) is checked
69
+ // for "rm" plus both an r-flag and an f-flag anywhere in that segment, in any order.
70
+ const CMD_SPLIT = /[;&|\n]|&&|\|\|/;
71
+ function recursiveDeleteSpans(s) {
72
+ const spans = [];
73
+ let offset = 0;
74
+ for (const segment of s.split(CMD_SPLIT)) {
75
+ const start = offset;
76
+ offset += segment.length + 1;
77
+ if (!/\brm\b/i.test(segment))
78
+ continue;
79
+ const hasR = /(?:^|\s)-[a-z]*r[a-z]*(?:\s|$)/i.test(segment) || /--recursive\b/i.test(segment);
80
+ const hasF = /(?:^|\s)-[a-z]*f[a-z]*(?:\s|$)/i.test(segment) || /--force\b/i.test(segment);
81
+ if (hasR && hasF) {
82
+ const at = segment.search(/\brm\b/i);
83
+ spans.push({ start: start + at, end: start + segment.trimEnd().length, label: "Recursive forced deletion" });
84
+ }
85
+ }
86
+ return spans;
87
+ }
88
+ function rmRecursiveForce(s) { return recursiveDeleteSpans(s).length > 0; }
89
+ // Download-then-execute split across a command chain instead of a pipe: `curl -o x.sh ... && chmod
90
+ // +x x.sh && ./x.sh`. One segment fetches, a later segment (joined by && or ;) runs what it fetched.
91
+ const DOWNLOAD_THEN_EXEC = /\b(?:curl|wget)\b[^\n]{0,300}?(?:\s-[oO]\s|--output\b)[^\n]{0,300}?(?:&&|;)[^\n]{0,300}?(?:chmod\s+\+x|\.\/\S|(?:ba|z)?sh\b|python3?\b|node\b)/i;
92
+ // PowerShell's `IEX (New-Object Net.WebClient).DownloadString(...)` / `iwr ... | iex`, the
93
+ // single most common Windows download-and-run one-liner; and a Python process that fetches and
94
+ // executes in the same call instead of piping to a shell.
95
+ const POWERSHELL_DOWNLOAD_EXEC = /\bdownloadstring\s*\(|\b(?:iex|invoke-expression)\b[^\n]{0,300}?(?:iwr|invoke-webrequest|downloadstring)\b|\b(?:iwr|invoke-webrequest)\b[^\n]{0,300}?\|\s*(?:iex|invoke-expression)\b/i;
96
+ const PYTHON_FETCH_EXEC = /\b(?:exec|eval)\s*\(\s*(?:compile\s*\(\s*)?(?:urllib\.request\.urlopen|urlopen|requests\.get|urlretrieve)\b/i;
97
+ // Disk, partition and filesystem-level wipes: destroy an entire volume rather than files inside
98
+ // it, and are unrecoverable even with the deleted file still referenced elsewhere.
99
+ const DISK_WIPE = /\bdd\b[^\n]{0,300}?\bof=\/dev\/(?:[sh]d|nvme|disk)\w*|\bmkfs\b|\bmke2fs\b|\bwipefs\b|\bblkdiscard\b|\b(?:fdisk|gdisk|sgdisk|parted)\b|\bdiskutil\s+(?:eraseDisk|eraseVolume|reformat)\b|\bdiskpart\b[\s\S]{0,200}?\bclean\b|\bClear-Disk\b[^\n]{0,300}?-RemoveData|\bRemove-Partition\b|\bcipher\s+\/w:|\bformat\s+[a-z]:\s*\/y\b/i;
100
+ // The classic bash fork bomb and close variants (whitespace and function-name tolerant).
101
+ const FORK_BOMB = /:\s*\(\s*\)\s*\{\s*:\s*\|\s*:\s*&\s*\}\s*;\s*:/;
102
+ // Dropping an entire datastore instead of rows in it: Redis/Mongo have no SQL DROP/TRUNCATE syntax.
103
+ const DATASTORE_WIPE = /\bFLUSHALL\b|\bFLUSHDB\b|db\.dropDatabase\s*\(\)/i;
104
+ const otherDestructiveMatcher = anyMatch(patternMatch(/\bfind\b[^\n]{0,300}?-delete\b|\brsync\b[^\n]{0,300}?--delete\b|\bshred\b[^\n]{0,100}?-\w*u|\bshutil\.rmtree\s*\(|(?:\bfs\.)?\brm(?:dir)?Sync\s*\([^\n]{0,200}?recursive\s*:\s*true|\brd\s+\/s\s+\/q\b|\bRemove-Item\b[^\n]{0,1000}?(?:-Recurse|-Force)|\b(?:drop\s+(?:table|database)|truncate\s+(?:table\s+)?\w+)|\bgit\s+(?:reset\s+--hard|clean\s+-[^\n]{0,1000}?f)/i), patternMatch(DATASTORE_WIPE));
105
+ function otherDestructiveOperation(s) { return otherDestructiveMatcher(s); }
106
+ // A vault/secret-manager reference (op://, Azure Key Vault, HashiCorp Vault, Infisical, Doppler,
107
+ // a GitHub Actions secrets expression, or a generic broker placeholder) typed literally into a
108
+ // live command instead of being resolved by its own CLI/platform first. An agent can't resolve
109
+ // one of these into the real value itself (that's the point of the convention -- the real value
110
+ // never reaches it), so seeing the raw reference token in a command about to run means either the
111
+ // command is about to fail with it unresolved, or -- worse -- the agent is about to "fix" that by
112
+ // asking for the real value and inlining it instead. Either way, a human/CI process starting the
113
+ // real service (with its own resolver already wired up) is what should happen next, not the agent
114
+ // improvising. Mirrors the CREDENTIAL_REFERENCE check in data-detectors.ts.
115
+ const UNRESOLVED_REFERENCE = /\bop:\/\/|@Microsoft\.KeyVault\(|\bvault:[\w/-]|\binfisical:\/\/|\bdoppler:\/\/|\$\{\{\s*secrets\.|__[A-Z][A-Z0-9_]*_REF_[\w-]+__/i;
33
116
  export const builtinRules = [
34
- { id: "destructive.delete", title: "Destructive operation", severity: "high", category: "impact", explanation: "Review the target and backups before allowing a recursive delete or destructive data operation.", match: s => /\brm\s+[^\n]{0,1000}?(?:-[a-z]*r[a-z]*f|-[a-z]*f[a-z]*r|--recursive)|\b(?:drop\s+(?:table|database)|truncate\s+(?:table\s+)?\w+)|\bRemove-Item\b[^\n]{0,1000}?(?:-Recurse|-Force)|\bgit\s+(?:reset\s+--hard|clean\s+-[^\n]{0,1000}?f)/i.test(s) },
35
- { id: "destructive.production", title: "Production change", severity: "high", category: "impact", explanation: "This action targets a production environment. Confirm the scope and rollback plan before proceeding.", match: s => /\b(?:production|prod)\b/i.test(s) && /\b(?:deploy|delete|drop|truncate|migrate|apply|destroy|restart|rollback|scale)\b/i.test(s) },
36
- { id: "credentials.environment", title: "Environment variable access", severity: "high", category: "secrets", explanation: "The action reads exported environment variables that may contain credentials or private configuration.", match: s => /\b(?:printenv|env|export\s+-p|process\.env|os\.environ|System\.getenv)\b|\$\{?[A-Z][A-Z0-9_]*\}?/i.test(s) },
37
- { id: "credentials.access", title: "Sensitive credential reference", severity: "medium", category: "secrets", explanation: "This action or instruction references a credential location. Confirm the agent needs access.", match: s => secret.test(s) },
38
- { id: "source.private_files", title: "Private source or configuration access", severity: "high", category: "secrets", explanation: "This action accesses a private credential or configuration file. Confirm that the agent needs the contents.", match: s => /(?:\.env(?:\.[\w.-]+)?|\.ssh[\\/]|\.aws[\\/]credentials|id_(?:rsa|ed25519)|\.npmrc|\.netrc|kubeconfig|private.?key)/i.test(s) },
39
- { id: "mcp.write", title: "MCP write operation", severity: "high", category: "impact", explanation: "The MCP tool appears to modify data or send an external side effect. Require approval before allowing it.", match: s => /\bmcp(?:__|:)[^\s]*(?:create|update|delete|write|send|post|put|patch|execute|run|publish|deploy|remove)\b/i.test(s) },
40
- { id: "credentials.egress", title: "Possible credential exposure", severity: "critical", category: "exfil", explanation: "Credential references and outbound delivery appear together. Inspect the destination and data before running this.", match: s => secret.test(s) && egress.test(s) },
41
- { id: "execution.remote", title: "Remote code execution pattern", severity: "high", category: "exec", explanation: "Downloaded content is piped directly into a shell without review.", match: s => pipesIntoShell(s, downloads) },
42
- { id: "execution.obfuscated", title: "Encoded execution", severity: "high", category: "exec", explanation: "Encoded content is decoded for execution. Review the decoded payload separately; Beam never executes it.", match: s => pipesIntoShell(s, decodes) || /\b(?:powershell|pwsh)\b[^\n]{0,500}?\s-(?:enc|encodedcommand)\b/i.test(s) },
43
- { id: "recon.network_sweep", title: "Network sweep", severity: "medium", category: "recon", explanation: "A scanner targets a network range. Verify scope and authorization before the agent probes other systems (ATT&CK T1046).", match: s => /\b(?:nmap|masscan|rustscan)\b/i.test(s) && /(?:\d{1,3}\.){3}\d{1,3}\/\d{1,2}|(?:\d{1,3}\.){3}\d{1,3}-\d{1,3}/.test(s) },
44
- { id: "privilege.elevation", title: "Elevated privileges", severity: "medium", category: "privilege", explanation: "The action requests elevated privileges or broad write permissions.", match: s => /\bsudo\s|\bchmod\s+(?:-R\s+)?777\b/i.test(s) },
45
- { id: "network.metadata", title: "Cloud metadata access", severity: "high", category: "secrets", explanation: "Cloud metadata endpoints can expose temporary instance credentials.", match: s => /169\.254\.169\.254|metadata\.google\.internal/i.test(s) },
46
- { id: "persistence.config", title: "Security-sensitive configuration", severity: "high", category: "persistence", explanation: "A persistence or agent configuration target is referenced. Check the intended change and trust boundary.", match: s => /authorized_keys|\bcrontab\b|LaunchAgents[\\/]|ANTHROPIC_BASE_URL/i.test(s) },
47
- { id: "network.reverse-shell", title: "Reverse shell pattern", severity: "critical", category: "exec", explanation: "This pattern can connect a command shell to another machine.", match: s => /\/dev\/tcp\/|\bnc\b[^\n]{0,300}?\s-e\s|socket[\s\S]{0,200}?subprocess/i.test(s) },
48
- { id: "instructions.override", title: "Instruction override attempt", severity: "high", category: "integrity", explanation: "Instructions attempt to override existing safeguards or conceal activity from the user.", match: s => /ignore\s+(?:all\s+)?(?:previous|prior|system|safety)\s+(?:instructions|rules|prompts)|(?:do not|don't|never)\s+(?:tell|inform|notify)\s+(?:the\s+)?user|disable\s+(?:security|safety|logging|audit)/i.test(s) },
49
- { id: "source_control.history_rewrite", title: "Git history rewrite", severity: "medium", category: "source_control", explanation: "Force-pushing or rewriting shared history can silently discard other people's commits. Confirm the branch isn't shared before proceeding.", match: s => /\bgit\s+push\s+[^\n]{0,1000}?(?:--force(?:-with-lease)?|-f\b)|\bgit\s+filter-(?:branch|repo)\b/i.test(s) },
50
- { id: "integrity.tls_bypass", title: "Certificate or signature verification disabled", severity: "medium", category: "integrity", explanation: "Disabling TLS/certificate verification removes protection against a tampered or impersonated destination.", match: s => /\bcurl\b[^\n]{0,1000}?(?:-k\b|--insecure)|\bwget\b[^\n]{0,1000}?--no-check-certificate|NODE_TLS_REJECT_UNAUTHORIZED\s*=\s*['"]?0|\bgit\b[^\n]{0,1000}?-c\s+http\.sslVerify=false/i.test(s) },
117
+ { id: "destructive.delete", title: "Destructive operation", severity: "high", category: "impact", explanation: "Recursive deletion or a destructive data operation. Scoped temporary test cleanup is MEDIUM; broad or uncertain targets remain HIGH. Review the target before allowing it.", match: anyMatch(functionalMatch(rmRecursiveForce, recursiveDeleteSpans), otherDestructiveMatcher), severityFor: s => !otherDestructiveOperation(s) && isScopedTemporaryCleanup(s) ? "medium" : "high" },
118
+ { id: "destructive.disk_wipe", title: "Disk or partition wipe", severity: "critical", category: "impact", explanation: "This targets an entire disk, partition or filesystem rather than individual files, and is unrecoverable. Confirm this is an authorized, intentional wipe.", match: patternMatch(DISK_WIPE) },
119
+ { id: "destructive.fork_bomb", title: "Fork bomb", severity: "critical", category: "impact", explanation: "This pattern spawns processes exponentially and can make the machine unresponsive.", match: patternMatch(FORK_BOMB) },
120
+ { id: "destructive.audit_trail", title: "Audit trail or recovery point erased", severity: "critical", category: "integrity", explanation: "This clears shadow copies, event logs or shell history. It is also the standard precursor to covering up a destructive or malicious action; confirm the reason before allowing it.", match: patternMatch(/\bvssadmin\b[^\n]{0,100}?delete\s+shadows|\bwevtutil\b[^\n]{0,50}?\bcl\b|\bClear-EventLog\b|\bhistory\s+-c\b|\bunset\s+HISTFILE\b|\bHISTSIZE\s*=\s*0\b|\bbcdedit\b[^\n]{0,50}?\/deletevalue/i) },
121
+ { id: "destructive.orchestration", title: "Destroys infrastructure or a deployed workload", severity: "high", category: "impact", explanation: "This tears down a namespace, persistent volume, release, or an entire infrastructure stack. Confirm the environment and that nothing else depends on it.", match: patternMatch(/\bkubectl\s+delete\s+(?:namespace|pvc|persistentvolumeclaim)\b|\bhelm\s+uninstall\b|\bterraform\s+(?:destroy|apply\s+[^\n]{0,100}?-destroy)\b|\bdocker\s+system\s+prune\s+-a[^\n]{0,50}?--volumes|\bdocker\s+rm\s+-f\s+\$\(\s*docker\s+ps\s+-aq\s*\)/i) },
122
+ { id: "destructive.cloud_resource", title: "Deletes a cloud resource", severity: "high", category: "impact", explanation: "This permanently removes a cloud resource (instance, database, bucket, or repository). Confirm this isn't a production or shared resource before allowing it.", match: patternMatch(/\baws\s+(?:ec2\s+terminate-instances|rds\s+delete-db-instance|s3\s+rb\b[^\n]{0,100}?--force)\b|\bgcloud\s+(?:compute\s+instances|sql\s+instances)\s+delete\b|\baz\s+(?:vm|group)\s+delete\b|\bgh\s+repo\s+delete\b|\bvercel\s+remove\b[^\n]{0,50}?--yes|\bnetlify\s+sites:delete\b/i) },
123
+ { id: "destructive.account", title: "Deletes a system account", severity: "high", category: "impact", explanation: "This removes a user or group account, which can include its home directory and files. Confirm the account is no longer needed.", match: patternMatch(/\buserdel\s+-r\b|\bgroupdel\b|\bRemove-LocalUser\b|\bnet\s+user\s+\S+\s+\/delete\b|\bdscl\s+\.\s+-delete\s+\/Users\//i) },
124
+ { id: "integrity.protection_disabled", title: "OS security control disabled", severity: "critical", category: "integrity", explanation: "This turns off a platform security control (System Integrity Protection, Gatekeeper, execution policy, or System Restore), which weakens the machine's security posture beyond this one action.", match: patternMatch(/\bcsrutil\s+disable\b|\bspctl\s+--master-disable\b|\bsecurity\s+delete-keychain\b|\bSet-ExecutionPolicy\s+Unrestricted\b|\bDisable-WindowsOptionalFeature\b|\bDisable-ComputerRestore\b/i) },
125
+ { id: "network.firewall_disabled", title: "Firewall rules flushed or disabled", severity: "high", category: "integrity", explanation: "This removes or disables firewall protection on the host. Confirm the host doesn't need it, or that replacement rules are applied immediately.", match: patternMatch(/\biptables\s+-F\b|\bufw\s+(?:--force\s+reset|disable)\b|\bnetsh\s+advfirewall\s+set\s+allprofiles\s+state\s+off\b/i) },
126
+ { id: "destructive.production", title: "Production change", severity: "high", category: "impact", explanation: "This action targets a production environment. Confirm the scope and rollback plan before proceeding.", match: allMatch(patternMatch(/\b(?:production|prod|prd)\b/i), patternMatch(/\b(?:deploy|delete|drop|truncate|migrate|apply|destroy|restart|rollback|scale)\b/i)) },
127
+ // Dumping the *whole* environment (every var, name and value) is the risky shape: that's what
128
+ // can hand over credentials the agent was never told about. Referencing one named variable
129
+ // ($PORT, $NODE_ENV, ${DATABASE_URL}) is how every normal dev workflow reads its own config and
130
+ // used to trip this rule on every touch -- real alert fatigue, and the reason this rule got
131
+ // called out as noisy. That case now only shows up (at "info", logged but not an approval gate)
132
+ // in credentials.environment_ref below, and only for the few var-name shapes anyone would
133
+ // actually call a credential; everyday vars like $PORT or $NODE_ENV don't get flagged anywhere.
134
+ { id: "credentials.environment", title: "Environment variable access", severity: "high", category: "secrets", explanation: "The action reads every exported environment variable at once (not one named variable), which can expose credentials the agent was never told about.", match: patternMatch(/\b(?:printenv|env|export\s+-p|process\.env|os\.environ|System\.getenv|declare\s+-x|Get-ChildItem\s+env:)\b|\/proc\/self\/environ\b|(?:^|[;&|]\s*)set(?:\s*$|\s+-o\b)/i) },
135
+ { id: "credentials.environment_ref", title: "Named credential variable referenced", severity: "info", category: "secrets", explanation: "A single environment variable whose name looks like a credential (KEY/SECRET/TOKEN/PASSWORD/CREDENTIAL) is referenced by name. Logged for visibility; this alone isn't a reason to block the ordinary case of an app reading its own configured secret.", match: patternMatch(/\$\{?[A-Z][A-Z0-9]*(?:_[A-Z0-9]+)*_(?:KEY|SECRET|TOKEN|PASSWORD|CREDENTIAL)S?\}?\b/) },
136
+ { id: "credentials.access", title: "Sensitive credential reference", severity: "medium", category: "secrets", explanation: "This action or instruction references a credential location. Confirm the agent needs access.", match: patternMatch(secret) },
137
+ { id: "source.private_files", title: "Private source or configuration access", severity: "high", category: "secrets", explanation: "This action accesses a private credential or configuration file. Confirm that the agent needs the contents.", match: patternMatch(/(?:\.env(?:\.[\w.-]+)?|\.ssh[\\/]|\.aws[\\/]credentials|id_(?:rsa|ed25519)|\.npmrc|\.netrc|kubeconfig|private.?key|\.pgpass\b|\.docker[\\/]config\.json|\.gnupg[\\/]|credentials\.json)/i) },
138
+ { id: "mcp.write", title: "MCP write operation", severity: "high", category: "impact", explanation: "The MCP tool appears to modify data or send an external side effect. Require approval before allowing it.", match: patternMatch(/\bmcp(?:__|:)[^\s]*(?:create|update|delete|write|send|post|put|patch|execute|run|publish|deploy|remove|save|insert|add|grant|revoke|assign)\b/i) },
139
+ { id: "credentials.egress", title: "Possible credential exposure", severity: "critical", category: "exfil", explanation: "A transfer command carries a sensitive payload, or sensitive output feeds an outbound command. This is a possible exposure, not proof of delivery; check the destination and authorization.", match: functionalMatch(possibleCredentialExposure, credentialExposureSpans) },
140
+ { id: "secrets.unresolved_reference_launch", title: "Vault reference used directly instead of resolved", severity: "medium", category: "secrets", explanation: "This command includes a secret-manager reference (op://, Azure Key Vault, Vault, Infisical, Doppler, a GitHub Actions secrets expression, or a broker placeholder) typed in literally rather than resolved by its own CLI or platform. The agent cannot resolve it into the real value -- have a human or CI process start the real service instead, with its existing resolver already wired up.", match: patternMatch(UNRESOLVED_REFERENCE) },
141
+ { id: "execution.remote", title: "Remote code execution pattern", severity: "high", category: "exec", explanation: "Downloaded content is fetched and run without review: piped into a shell or interpreter, fetched and executed in one step, or downloaded and run as separate chained commands.", match: anyMatch(anyMatch(anyMatch(pipelineMatcher(downloads), patternMatch(DOWNLOAD_THEN_EXEC)), patternMatch(POWERSHELL_DOWNLOAD_EXEC)), patternMatch(PYTHON_FETCH_EXEC)) },
142
+ { id: "execution.obfuscated", title: "Encoded execution", severity: "high", category: "exec", explanation: "Encoded content is decoded for execution. Review the decoded payload separately; Beam never executes it.", match: anyMatch(pipelineMatcher(decodes), patternMatch(/\b(?:powershell|pwsh)\b[^\n]{0,500}?\s-(?:enc|encodedcommand)\b/i)) },
143
+ { id: "recon.network_sweep", title: "Network sweep", severity: "medium", category: "recon", explanation: "A scanner targets a network range. Verify scope and authorization before the agent probes other systems (ATT&CK T1046).", match: allMatch(patternMatch(/\b(?:nmap|masscan|rustscan)\b/i), patternMatch(/(?:\d{1,3}\.){3}\d{1,3}\/\d{1,2}|(?:\d{1,3}\.){3}\d{1,3}-\d{1,3}/)) },
144
+ { id: "privilege.elevation", title: "Elevated privileges", severity: "medium", category: "privilege", explanation: "The action requests elevated privileges or broad write permissions.", match: patternMatch(/\bsudo\s|\bdoas\s|(?:^|[\s;&|`(])su\s+(?:-\s*\w*|root)\b|\bpkexec\b|\brunas\s+\/user:|\bchmod\s+(?:-R\s+)?(?:777\b|[ugoa]*\+s\b|[2467][0-7]{3}\b)/i) },
145
+ { id: "network.metadata", title: "Cloud metadata access", severity: "high", category: "secrets", explanation: "Cloud metadata endpoints can expose temporary instance credentials.", match: patternMatch(/169\.254\.169\.254|metadata\.google\.internal|100\.100\.100\.200/i) },
146
+ { id: "persistence.config", title: "Security-sensitive configuration", severity: "high", category: "persistence", explanation: "A persistence or agent configuration target is referenced. Check the intended change and trust boundary.", match: patternMatch(/authorized_keys|\bcrontab\b|LaunchAgents[\\/]|ANTHROPIC_BASE_URL/i) },
147
+ { id: "network.reverse-shell", title: "Reverse shell pattern", severity: "critical", category: "exec", explanation: "This pattern can connect a command shell to another machine.", match: patternMatch(/\/dev\/tcp\/|\bnc\b[^\n]{0,300}?\s-e\s|socket[\s\S]{0,200}?subprocess|\bNew-Object\s+(?:System\.)?Net\.Sockets\.TCPClient\b|\bsocat\b[^\n]{0,300}?\bexec[:=]|\bsocket\([^\n]{0,150}?getprotobyname\(["']tcp["']\)[\s\S]{0,200}?\bconnect\(/i) },
148
+ { id: "instructions.override", title: "Instruction override attempt", severity: "high", category: "integrity", explanation: "Instructions attempt to override existing safeguards or conceal activity from the user. Checked against the same folded view used for prompt-injection monitoring (Unicode/width normalization and base64 decoding), not a literal-text match, so stylized or encoded phrasing is caught too.", match: functionalMatch(promptAttack.override) },
149
+ { id: "source_control.history_rewrite", title: "Git history rewrite", severity: "medium", category: "source_control", explanation: "Force-pushing or rewriting shared history can silently discard other people's commits. Confirm the branch isn't shared before proceeding.", match: patternMatch(/\bgit\s+push\s+[^\n]{0,1000}?(?:--force(?:-with-lease)?|-f\b)|\bgit\s+filter-(?:branch|repo)\b/i) },
150
+ { id: "integrity.tls_bypass", title: "Certificate or signature verification disabled", severity: "medium", category: "integrity", explanation: "Disabling TLS/certificate verification removes protection against a tampered or impersonated destination.", match: patternMatch(/\bcurl\b[^\n]{0,1000}?(?:-k\b|--insecure)|\bwget\b[^\n]{0,1000}?--no-check-certificate|NODE_TLS_REJECT_UNAUTHORIZED\s*=\s*['"]?0|\bgit\b[^\n]{0,1000}?-c\s+http\.sslVerify=false|\bverify\s*=\s*False\b|\brejectUnauthorized\s*:\s*false\b/i) },
51
151
  ];
52
152
  /** Built-in rules by id, for callers (like `beam monitor`) that reuse a subset of the catalog. */
53
153
  export function builtinRulesById(ids) {
@@ -1 +1 @@
1
- {"version":3,"file":"rule-catalog.js","sourceRoot":"","sources":["../src/rule-catalog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rule-catalog.js","sourceRoot":"","sources":["../src/rule-catalog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /** Positions use UTF-16 offsets in the original inspected input. Never ship the input itself here. */
2
+ export type MatchSpan = {
3
+ start: number;
4
+ end: number;
5
+ label?: string;
6
+ };
7
+ export type Matcher = ((text: string) => boolean) & {
8
+ spans?: (text: string) => MatchSpan[];
9
+ };
10
+ export declare function patternMatch(pattern: RegExp): Matcher;
11
+ export declare function anyMatch(...rules: Matcher[]): Matcher;
12
+ export declare function allMatch(...rules: Matcher[]): Matcher;
13
+ export declare function functionalMatch(predicate: (text: string) => boolean, spans?: (text: string) => MatchSpan[]): Matcher;
@@ -0,0 +1,42 @@
1
+ const LIMIT = 8;
2
+ export function patternMatch(pattern) {
3
+ const match = ((text) => new RegExp(pattern.source, pattern.flags.replace(/[gy]/g, "")).test(text));
4
+ match.spans = text => {
5
+ const regex = new RegExp(pattern.source, pattern.flags.replace(/[gy]/g, "") + "g");
6
+ const spans = [];
7
+ for (const found of text.matchAll(regex)) {
8
+ if (found[0].length)
9
+ spans.push({ start: found.index, end: found.index + found[0].length });
10
+ if (spans.length >= LIMIT)
11
+ break;
12
+ }
13
+ return spans;
14
+ };
15
+ return match;
16
+ }
17
+ export function anyMatch(...rules) {
18
+ const match = ((text) => rules.some(rule => rule(text)));
19
+ match.spans = text => {
20
+ const matched = rules.filter(rule => rule(text));
21
+ const quota = Math.max(1, Math.floor(LIMIT / Math.max(1, matched.length)));
22
+ return matched.flatMap(rule => (rule.spans?.(text) ?? []).slice(0, quota)).slice(0, LIMIT);
23
+ };
24
+ return match;
25
+ }
26
+ export function allMatch(...rules) {
27
+ const match = ((text) => rules.every(rule => rule(text)));
28
+ match.spans = text => {
29
+ if (!match(text))
30
+ return [];
31
+ const quota = Math.max(1, Math.floor(LIMIT / rules.length));
32
+ return rules.flatMap(rule => (rule.spans?.(text) ?? []).slice(0, quota)).slice(0, LIMIT);
33
+ };
34
+ return match;
35
+ }
36
+ export function functionalMatch(predicate, spans) {
37
+ const match = ((text) => predicate(text));
38
+ if (spans)
39
+ match.spans = text => predicate(text) ? spans(text).slice(0, LIMIT) : [];
40
+ return match;
41
+ }
42
+ //# sourceMappingURL=rule-matches.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rule-matches.js","sourceRoot":"","sources":["../src/rule-matches.ts"],"names":[],"mappings":"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"}
package/dist/serve.js CHANGED
@@ -1,3 +1,5 @@
1
+ import { drainHookSpool } from "./hook-spool.js";
2
+ import { normalize as normalizeHookEvent } from "./core.js";
1
3
  import { chmod, mkdir, readFile, writeFile } from "node:fs/promises";
2
4
  import { homedir } from "node:os";
3
5
  import { join } from "node:path";
@@ -11,6 +13,7 @@ import { syncPolicy } from "./forward.js";
11
13
  import { installAllDetectedHooks } from "./install.js";
12
14
  import { startOsMonitor } from "./os-monitor.js";
13
15
  import { checkSkillsIfDue } from "./skill-watch.js";
16
+ import { drainSkillInventoryOutbox } from "./skill-sync.js";
14
17
  import { runSkillActions } from "./skill-remote.js";
15
18
  import { runRemoteUpdate, supervised } from "./remote-update.js";
16
19
  import { checkForTampering, recordExpectedHooks } from "./tamper.js";
@@ -80,6 +83,26 @@ export async function startServer(options = {}) {
80
83
  if (token.length < 32)
81
84
  throw new Error("BEAM_TOKEN must contain at least 32 characters.");
82
85
  const app = await createCollector({ directory, token, origins: options.origins ?? process.env.BEAM_ALLOWED_ORIGINS?.split(",").map(s => s.trim()), rulesHome: options.rulesHome });
86
+ let spoolBusy = false;
87
+ const drainSpool = async () => {
88
+ if (spoolBusy)
89
+ return;
90
+ spoolBusy = true;
91
+ try {
92
+ await drainHookSpool(directory, async (records) => {
93
+ const normalized = records.map(normalizeHookEvent);
94
+ const result = await app.store.addEvents(normalized);
95
+ const retained = new Set(app.store.events.map(event => event.id));
96
+ await app.forwardQueue.push([...normalized.filter(event => retained.has(event.id)), ...result.relabeled]);
97
+ });
98
+ }
99
+ finally {
100
+ spoolBusy = false;
101
+ }
102
+ };
103
+ await drainSpool().catch(() => { });
104
+ const spoolTimer = setInterval(() => { void drainSpool().catch(() => { }); }, 5000);
105
+ spoolTimer.unref?.();
83
106
  const port = options.port ?? Number(process.env.BEAM_PORT || 4319);
84
107
  const hostname = options.hostname ?? "127.0.0.1";
85
108
  const server = createServer((req, res) => {
@@ -132,7 +155,7 @@ export async function startServer(options = {}) {
132
155
  if (!events.length)
133
156
  return;
134
157
  await app.store.addEvents(events);
135
- app.forwardQueue.push(events);
158
+ await app.forwardQueue.push(events);
136
159
  for (const event of events)
137
160
  console.error(`\n⚠ ${event.summary}`);
138
161
  }).catch(() => { });
@@ -146,7 +169,7 @@ export async function startServer(options = {}) {
146
169
  await app.store.addEvents(events);
147
170
  // Same batched forward as hook-captured events (see server.ts's /ingest handler) --
148
171
  // otherwise OS-monitor rows would only ever show up in the local studio view.
149
- app.forwardQueue.push(events);
172
+ await app.forwardQueue.push(events);
150
173
  });
151
174
  // Once a day (and at startup, if a day has passed since the last skill scan), looks for skills that
152
175
  // were added or changed and tells the workspace -- no manual `beam skills sync` needed. Skills
@@ -155,6 +178,24 @@ export async function startServer(options = {}) {
155
178
  // the moment it was due still catches up soon after waking. A report is sent only if names or
156
179
  // scores changed (skill-sync.ts); see skill-watch.ts for what gets scanned.
157
180
  let skillTimer;
181
+ let skillOutboxBusy = false;
182
+ let lastSkillOutboxError = "";
183
+ const drainSkills = () => {
184
+ if (skillOutboxBusy)
185
+ return;
186
+ skillOutboxBusy = true;
187
+ void drainSkillInventoryOutbox().then(result => {
188
+ if (result.status === "failed" && result.reason !== lastSkillOutboxError) {
189
+ lastSkillOutboxError = result.reason ?? "unknown error";
190
+ console.error(`Beam skill inventory upload is queued for retry: ${lastSkillOutboxError}`);
191
+ }
192
+ else if (result.status === "sent")
193
+ lastSkillOutboxError = "";
194
+ }).finally(() => { skillOutboxBusy = false; });
195
+ };
196
+ const skillOutboxTimer = setInterval(drainSkills, 5_000);
197
+ skillOutboxTimer.unref?.();
198
+ drainSkills();
158
199
  if (options.skillIndex ?? options.osMonitor !== false) {
159
200
  const run = () => {
160
201
  void checkSkillsIfDue().then(result => {
@@ -171,9 +212,18 @@ export async function startServer(options = {}) {
171
212
  return {
172
213
  url: `http://${hostname}:${boundPort}`, token, directory, customRules, agentInstalls,
173
214
  policySync: Boolean(identity),
174
- close: () => { if (policyTimer)
175
- clearInterval(policyTimer); clearInterval(tamperTimer); if (skillTimer)
176
- clearInterval(skillTimer); osMonitor.stop(); app.forwardQueue.flush(); server.close(); },
215
+ close: () => {
216
+ if (policyTimer)
217
+ clearInterval(policyTimer);
218
+ clearInterval(tamperTimer);
219
+ clearInterval(spoolTimer);
220
+ if (skillTimer)
221
+ clearInterval(skillTimer);
222
+ clearInterval(skillOutboxTimer);
223
+ osMonitor.stop();
224
+ void app.forwardQueue.close();
225
+ server.close();
226
+ },
177
227
  };
178
228
  }
179
229
  //# sourceMappingURL=serve.js.map
package/dist/serve.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"serve.js","sourceRoot":"","sources":["../src/serve.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"serve.js","sourceRoot":"","sources":["../src/serve.ts"],"names":[],"mappings":"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"}
package/dist/server.js CHANGED
@@ -8,7 +8,7 @@ import { ForwardQueue, forwardReview, forwardScan } from "./forward.js";
8
8
  export async function createCollector(options) {
9
9
  const store = new Store(options.directory);
10
10
  await store.init();
11
- const forwardQueue = new ForwardQueue();
11
+ const forwardQueue = new ForwardQueue(options.directory);
12
12
  const origins = new Set(options.origins ?? ["http://localhost:3200", "http://127.0.0.1:3200"]);
13
13
  const secret = Buffer.from(`Bearer ${options.token}`);
14
14
  return { store, forwardQueue, async fetch(req) {
@@ -79,11 +79,12 @@ export async function createCollector(options) {
79
79
  const supported = records.filter(r => !r.record_type || ["event", "finding"].includes(String(r.record_type)));
80
80
  const normalized = supported.map(normalize);
81
81
  const result = await store.addEvents(normalized);
82
- // Forward what the store actually kept, not the raw input batch -- addEvents() already
83
- // drops cross-agent duplicates (see store.ts's findCrossAgentDuplicate) and, when needed,
84
- // relabels an already-forwarded duplicate's agent; forwarding the unfiltered batch here
85
- // would undo that and send every duplicate straight to the workspace dashboard anyway.
86
- forwardQueue.push([...result.events, ...result.relabeled]);
82
+ // Forward retained IDs and corrected agent labels. Cross-agent echoes
83
+ // dropped by addEvents() must not reappear in the workspace timeline.
84
+ // Retry enqueueing exact-ID duplicates too: a previous outbox disk write may
85
+ // have failed after local persistence. Cross-agent echoes still stay excluded.
86
+ const retained = new Set(store.events.map(event => event.id));
87
+ await forwardQueue.push([...normalized.filter(event => retained.has(event.id)), ...result.relabeled]);
87
88
  return json(url.pathname === "/v1/logs" ? {} : { accepted: result.accepted, duplicates: result.duplicates, skipped: records.length - supported.length });
88
89
  }
89
90
  const data = JSON.parse(body);