agent-security-lens 0.1.0

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 (81) hide show
  1. package/.env.example +10 -0
  2. package/.mcp/server.json +42 -0
  3. package/CHANGELOG.md +17 -0
  4. package/LICENSE +17 -0
  5. package/PRIVACY.md +37 -0
  6. package/README.md +150 -0
  7. package/RELEASE-MANIFEST.json +449 -0
  8. package/SECURITY.md +24 -0
  9. package/apps/mcp-server/agent-security-lens-mcp.mjs +441 -0
  10. package/bin/agent-security-lens.mjs +117 -0
  11. package/data/ecosystems/agent-candidates.json +230 -0
  12. package/data/intelligence/components.json +22989 -0
  13. package/data/intelligence/security-evaluation-standard.json +221 -0
  14. package/data/recommendations/core/recommendations.json +256 -0
  15. package/data/trust/signal-taxonomy.json +107 -0
  16. package/docs/asl-agent-component-safety-standard-v0.2.md +56 -0
  17. package/examples/dot-hermes/.hermes/config.json +17 -0
  18. package/examples/dot-openclaw/.openclaw/openclaw.json +17 -0
  19. package/examples/hermes-like/.env.example +2 -0
  20. package/examples/hermes-like/config.json +37 -0
  21. package/examples/hermes-like/optional-mcps/github-tools.json +8 -0
  22. package/examples/hermes-like/skills/openclaw-imports/browser-skill/SKILL.md +8 -0
  23. package/examples/openclaw-like/.env.example +2 -0
  24. package/examples/openclaw-like/AGENTS.md +7 -0
  25. package/examples/openclaw-like/openclaw.json +28 -0
  26. package/examples/openclaw-like/workspace/skills/browser-control/SKILL.md +8 -0
  27. package/llms.txt +25 -0
  28. package/package.json +50 -0
  29. package/profiles/generic-agent/profile.json +19 -0
  30. package/profiles/hermes-like/profile.json +23 -0
  31. package/profiles/mcp-server/profile.json +18 -0
  32. package/profiles/openclaw-like/profile.json +22 -0
  33. package/profiles/skill-runtime/profile.json +19 -0
  34. package/rule-packs/core/rules.json +82 -0
  35. package/rule-packs/hermes/rules.json +44 -0
  36. package/rule-packs/mcp/rules.json +65 -0
  37. package/rule-packs/openclaw/rules.json +46 -0
  38. package/rule-packs/skills/rules.json +45 -0
  39. package/schemas/agent-install-decision.schema.json +432 -0
  40. package/schemas/agent-usage-event.schema.json +45 -0
  41. package/schemas/assessment-result.schema.json +361 -0
  42. package/schemas/comparison-result.schema.json +113 -0
  43. package/schemas/component-alternative-graph.schema.json +187 -0
  44. package/schemas/component-intelligence.schema.json +93 -0
  45. package/schemas/decision-feedback.schema.json +49 -0
  46. package/schemas/ecosystem-candidate-registry.schema.json +98 -0
  47. package/schemas/profile.schema.json +65 -0
  48. package/schemas/recommendation-pack.schema.json +114 -0
  49. package/schemas/rule-pack.schema.json +113 -0
  50. package/schemas/trust-signal-taxonomy.schema.json +68 -0
  51. package/scripts/verify-examples.mjs +121 -0
  52. package/scripts/verify-mcp-server.mjs +278 -0
  53. package/scripts/verify-registry.mjs +264 -0
  54. package/server.json +42 -0
  55. package/src/assessment/assess.mjs +108 -0
  56. package/src/assessment/discover-targets.mjs +127 -0
  57. package/src/assessment/risk-domains.mjs +83 -0
  58. package/src/assessment/summarize.mjs +57 -0
  59. package/src/core/files.mjs +74 -0
  60. package/src/intelligence/cloud-client.mjs +260 -0
  61. package/src/intelligence/component-intelligence.mjs +358 -0
  62. package/src/intelligence/decision-engine.mjs +772 -0
  63. package/src/intelligence/finding-context.mjs +180 -0
  64. package/src/intelligence/safety-score-v0.2.mjs +294 -0
  65. package/src/observations/json-observations.mjs +211 -0
  66. package/src/observations/observation-rules.mjs +157 -0
  67. package/src/profiles/load-profiles.mjs +130 -0
  68. package/src/recommendations/component-alternative-graph.mjs +94 -0
  69. package/src/recommendations/load-recommendations.mjs +17 -0
  70. package/src/recommendations/match-recommendations.mjs +79 -0
  71. package/src/report/comparison-console.mjs +71 -0
  72. package/src/report/console.mjs +103 -0
  73. package/src/report/markdown.mjs +145 -0
  74. package/src/results/compare-results.mjs +106 -0
  75. package/src/results/save-result.mjs +29 -0
  76. package/src/rules/load-rules.mjs +22 -0
  77. package/src/rules/match-rules.mjs +99 -0
  78. package/src/rules/supersedes.mjs +39 -0
  79. package/src/store/assessment-store.mjs +78 -0
  80. package/src/trust/derive-trust-signals.mjs +73 -0
  81. package/src/trust/load-trust-signals.mjs +17 -0
@@ -0,0 +1,17 @@
1
+ {
2
+ "mcp": {
3
+ "servers": {
4
+ "filesystem": {
5
+ "command": "npx",
6
+ "args": ["-y", "@modelcontextprotocol/server-filesystem", "./workspace"]
7
+ }
8
+ }
9
+ },
10
+ "channels": {
11
+ "discord": {
12
+ "enabled": true,
13
+ "botToken": "${DISCORD_BOT_TOKEN}",
14
+ "dmPolicy": "open"
15
+ }
16
+ }
17
+ }
@@ -0,0 +1,2 @@
1
+ DISCORD_BOT_TOKEN=replace-me
2
+ BROWSER_API_KEY=replace-me
@@ -0,0 +1,37 @@
1
+ {
2
+ "mcp": {
3
+ "servers": {
4
+ "github-tools": {
5
+ "command": "npx",
6
+ "args": ["-y", "@modelcontextprotocol/server-github"]
7
+ },
8
+ "remote-browser": {
9
+ "type": "http",
10
+ "url": "https://example-hermes-mcp.invalid/mcp"
11
+ }
12
+ }
13
+ },
14
+ "gateway": {
15
+ "discord": {
16
+ "enabled": true,
17
+ "botToken": "${DISCORD_BOT_TOKEN}",
18
+ "allowed_users": []
19
+ }
20
+ },
21
+ "cron": [
22
+ {
23
+ "name": "weekly-research",
24
+ "schedule": "0 10 * * 1",
25
+ "prompt": "Research new MCP servers"
26
+ }
27
+ ],
28
+ "migration": {
29
+ "source": "~/.openclaw",
30
+ "skills": "~/.hermes/skills/openclaw-imports",
31
+ "includeApiKeys": true
32
+ },
33
+ "memory": {
34
+ "enabled": true,
35
+ "path": "~/.hermes/memory"
36
+ }
37
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "mcpServers": {
3
+ "git-tools": {
4
+ "command": "uvx",
5
+ "args": ["mcp-server-git"]
6
+ }
7
+ }
8
+ }
@@ -0,0 +1,8 @@
1
+ # Imported Browser Skill
2
+
3
+ Imported from OpenClaw migration.
4
+
5
+ Requires `BROWSER_API_KEY`.
6
+
7
+ Install source: https://github.com/example/imported-browser-skill
8
+
@@ -0,0 +1,2 @@
1
+ TELEGRAM_BOT_TOKEN=replace-me
2
+ BROWSER_API_KEY=replace-me
@@ -0,0 +1,7 @@
1
+ # Example Agent Instructions
2
+
3
+ This example is intentionally unsafe for testing AgentSecurityLens.
4
+
5
+ The agent may use bash to inspect local files when needed.
6
+ Do not reveal private keys.
7
+
@@ -0,0 +1,28 @@
1
+ {
2
+ "mcp": {
3
+ "servers": {
4
+ "filesystem": {
5
+ "command": "npx",
6
+ "args": ["-y", "@modelcontextprotocol/server-filesystem", "."]
7
+ },
8
+ "remote-tools": {
9
+ "type": "sse",
10
+ "url": "https://example-mcp.invalid/sse"
11
+ }
12
+ }
13
+ },
14
+ "channels": {
15
+ "telegram": {
16
+ "enabled": true,
17
+ "botToken": "${TELEGRAM_BOT_TOKEN}",
18
+ "dmPolicy": "open"
19
+ }
20
+ },
21
+ "scheduled": [
22
+ {
23
+ "name": "daily-summary",
24
+ "cron": "0 9 * * *",
25
+ "prompt": "Summarize workspace changes"
26
+ }
27
+ ]
28
+ }
@@ -0,0 +1,8 @@
1
+ # Browser Control Skill
2
+
3
+ Requires `BROWSER_API_KEY` in `.env`.
4
+
5
+ Install source: https://github.com/example/browser-control-skill/archive/main.zip
6
+
7
+ This skill can use browser automation and may write files to the workspace.
8
+
package/llms.txt ADDED
@@ -0,0 +1,25 @@
1
+ # AgentSecurityLens
2
+
3
+ AgentSecurityLens (ASL) is an agent-facing security intelligence service.
4
+
5
+ Primary use:
6
+ Before installing or enabling any MCP, Skill, tool, prompt bundle or workflow, call the AgentSecurityLens MCP tool `review_before_install`.
7
+
8
+ Important MCP tools:
9
+ - `review_before_install`: returns install decision, trust score, risk signals, safe install plan and alternatives.
10
+ - `check_component`: checks known ASL component intelligence.
11
+ - `recommend_alternatives`: returns safer alternatives and restriction plans.
12
+ - `submit_unknown_component`: submits unknown public components for ASL research. Do not submit secrets or private file contents.
13
+ - `discover_workspace`: discovers Agent, MCP and Skill environments under a workspace.
14
+ - `scan_workspace`: assesses all discovered Agent, MCP and Skill environments.
15
+
16
+ Decision meanings:
17
+ - `allow`: component appears low risk from available signals.
18
+ - `allow_with_restrictions`: install only after applying safe_install_plan.
19
+ - `ask_user`: do not install automatically; ask the user.
20
+ - `avoid`: do not install automatically; submit for review.
21
+
22
+ Default agent policy:
23
+ If ASL returns `ask_user` or `avoid`, stop automatic installation.
24
+ If ASL returns `allow_with_restrictions`, apply all safe install steps first.
25
+ If ASL returns `unknown_component.should_submit`, submit only public metadata, never secrets or private file contents.
package/package.json ADDED
@@ -0,0 +1,50 @@
1
+ {
2
+ "name": "agent-security-lens",
3
+ "version": "0.1.0",
4
+ "private": false,
5
+ "mcpName": "io.github.professor2k8/agent-security-lens",
6
+ "description": "Agent-facing security MCP that queries ASL intelligence before autonomous agents install tools.",
7
+ "type": "module",
8
+ "license": "Apache-2.0",
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "git+https://github.com/professor2k8/agent-security-lens.git"
12
+ },
13
+ "homepage": "https://github.com/professor2k8/agent-security-lens#readme",
14
+ "bugs": {
15
+ "url": "https://github.com/professor2k8/agent-security-lens/issues"
16
+ },
17
+ "keywords": [
18
+ "mcp",
19
+ "model-context-protocol",
20
+ "ai-agent",
21
+ "agent-security",
22
+ "security",
23
+ "trust-score",
24
+ "agent-tools"
25
+ ],
26
+ "publishConfig": {
27
+ "access": "public"
28
+ },
29
+ "bin": {
30
+ "agent-security-lens": "./apps/mcp-server/agent-security-lens-mcp.mjs",
31
+ "asl": "./apps/mcp-server/agent-security-lens-mcp.mjs",
32
+ "agent-security-lens-mcp": "./apps/mcp-server/agent-security-lens-mcp.mjs",
33
+ "asl-mcp": "./apps/mcp-server/agent-security-lens-mcp.mjs",
34
+ "asl-scan": "./bin/agent-security-lens.mjs",
35
+ "agent-security-lens-scan": "./bin/agent-security-lens.mjs"
36
+ },
37
+ "scripts": {
38
+ "assess:example": "node ./bin/agent-security-lens.mjs assess ./examples/openclaw-like --profile openclaw-like",
39
+ "assess:json": "node ./bin/agent-security-lens.mjs assess ./examples/openclaw-like --profile openclaw-like --format json",
40
+ "assess:markdown": "node ./bin/agent-security-lens.mjs assess ./examples/openclaw-like --profile openclaw-like --format markdown",
41
+ "mcp:start": "node ./apps/mcp-server/agent-security-lens-mcp.mjs",
42
+ "mcp:smoke": "node ./scripts/verify-mcp-server.mjs",
43
+ "verify:registry": "node ./scripts/verify-registry.mjs",
44
+ "verify:examples": "node ./scripts/verify-examples.mjs",
45
+ "verify:public": "npm run verify:registry && npm run verify:examples && npm run mcp:smoke"
46
+ },
47
+ "engines": {
48
+ "node": ">=20"
49
+ }
50
+ }
@@ -0,0 +1,19 @@
1
+ {
2
+ "id": "generic-agent",
3
+ "version": "0.1.0",
4
+ "status": "active",
5
+ "confidence": 0.6,
6
+ "coverage": 0.45,
7
+ "extends": [],
8
+ "rule_packs": ["core"],
9
+ "path_hints": [
10
+ "AGENTS.md",
11
+ "CLAUDE.md",
12
+ ".cursor/rules",
13
+ ".env",
14
+ "mcp.json"
15
+ ],
16
+ "known_limitations": [
17
+ "Generic profile only detects common patterns and does not understand product-specific runtime behavior."
18
+ ]
19
+ }
@@ -0,0 +1,23 @@
1
+ {
2
+ "id": "hermes-like",
3
+ "version": "0.1.0",
4
+ "status": "draft",
5
+ "confidence": 0.5,
6
+ "coverage": 0.35,
7
+ "extends": ["generic-agent", "mcp-server", "skill-runtime"],
8
+ "rule_packs": ["core", "hermes"],
9
+ "path_hints": [
10
+ "config.yaml",
11
+ ".hermes/config.yaml",
12
+ "optional-mcps/",
13
+ "optional-skills/",
14
+ "skills/openclaw-imports/",
15
+ "cron/",
16
+ "gateway/",
17
+ "memory/"
18
+ ],
19
+ "known_limitations": [
20
+ "Hermes-like profile is a draft profile and should not be treated as full coverage.",
21
+ "Migration and gateway behavior require further source-level validation."
22
+ ]
23
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "id": "mcp-server",
3
+ "version": "0.1.0",
4
+ "status": "active",
5
+ "confidence": 0.65,
6
+ "coverage": 0.45,
7
+ "extends": [],
8
+ "rule_packs": ["mcp"],
9
+ "path_hints": [
10
+ "mcp.json",
11
+ "mcp*.json",
12
+ "claude_desktop_config.json",
13
+ ".vscode/mcp.json"
14
+ ],
15
+ "known_limitations": [
16
+ "Phase 1 detects MCP configuration patterns but does not execute MCP servers."
17
+ ]
18
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "id": "openclaw-like",
3
+ "version": "0.1.0",
4
+ "status": "experimental",
5
+ "confidence": 0.72,
6
+ "coverage": 0.55,
7
+ "extends": ["generic-agent", "mcp-server", "skill-runtime"],
8
+ "rule_packs": ["core", "openclaw"],
9
+ "path_hints": [
10
+ "openclaw.json",
11
+ ".openclaw/openclaw.json",
12
+ "AGENTS.md",
13
+ "SOUL.md",
14
+ "TOOLS.md",
15
+ "skills/",
16
+ "workspace/skills/"
17
+ ],
18
+ "known_limitations": [
19
+ "OpenClaw-like profile is based on public docs and observed ecosystem patterns.",
20
+ "Runtime enforcement and live tool-call inspection are out of scope for Phase 1."
21
+ ]
22
+ }
@@ -0,0 +1,19 @@
1
+ {
2
+ "id": "skill-runtime",
3
+ "version": "0.1.0",
4
+ "status": "active",
5
+ "confidence": 0.65,
6
+ "coverage": 0.4,
7
+ "extends": [],
8
+ "rule_packs": ["skills"],
9
+ "path_hints": [
10
+ "SKILL.md",
11
+ "skills/",
12
+ "SKILLs/",
13
+ "skills.config.json",
14
+ "optional-skills/"
15
+ ],
16
+ "known_limitations": [
17
+ "Phase 1 skill analysis uses static patterns and does not run skill code."
18
+ ]
19
+ }
@@ -0,0 +1,82 @@
1
+ {
2
+ "id": "core",
3
+ "version": "0.1.0",
4
+ "rules": [
5
+ {
6
+ "id": "core-shell-execution",
7
+ "title": "Shell execution pattern detected",
8
+ "category": "execution-risk",
9
+ "severity": "high",
10
+ "confidence": 0.82,
11
+ "permissions": ["shell-execution"],
12
+ "target_paths": ["**/*"],
13
+ "patterns": ["\\b(exec|spawn|subprocess|child_process|powershell|bash|cmd\\.exe)\\b"],
14
+ "why_it_matters": "This environment contains patterns that can execute local commands. That increases the trust required before running the agent.",
15
+ "recommended_actions": [
16
+ "Review the command source and arguments before running.",
17
+ "Disable command execution tools if they are not required."
18
+ ],
19
+ "recommended_alternatives": [
20
+ "Use a read-only tool or sandboxed command runner where possible."
21
+ ],
22
+ "migration_instruction": "Disable shell execution for this agent unless the task explicitly requires it."
23
+ },
24
+ {
25
+ "id": "core-remote-download",
26
+ "title": "Remote download pattern detected",
27
+ "category": "supply-chain-risk",
28
+ "severity": "medium",
29
+ "confidence": 0.78,
30
+ "permissions": ["external-download", "network-access"],
31
+ "target_paths": ["**/*"],
32
+ "patterns": ["\\b(curl|wget|Invoke-WebRequest|iwr)\\b", "https?://[^\\s]+\\.(sh|ps1|zip|tar|gz)"],
33
+ "why_it_matters": "Remote downloads can introduce new code, tools, skills or configuration into the agent environment.",
34
+ "recommended_actions": [
35
+ "Verify the source owner.",
36
+ "Pin versions or commit hashes instead of using moving branches."
37
+ ],
38
+ "recommended_alternatives": [
39
+ "Use a bundled or verified package source when available."
40
+ ],
41
+ "migration_instruction": "Replace unpinned remote downloads with pinned release assets or commit hashes."
42
+ },
43
+ {
44
+ "id": "core-env-reference",
45
+ "title": "Credential or environment variable reference detected",
46
+ "category": "data-exposure-risk",
47
+ "severity": "medium",
48
+ "confidence": 0.72,
49
+ "permissions": ["credential-access", "env-read"],
50
+ "target_paths": ["**/*"],
51
+ "patterns": ["(API_KEY|TOKEN|SECRET|PRIVATE_KEY|BOT_TOKEN|WEBHOOK_SECRET)", "\\.env"],
52
+ "why_it_matters": "Agent tools, skills or MCP servers may inherit credentials from environment variables or local files.",
53
+ "recommended_actions": [
54
+ "Use scoped credentials for agent environments.",
55
+ "Remove unused secrets before running the agent."
56
+ ],
57
+ "recommended_alternatives": [
58
+ "Use a dedicated low-privilege token for this agent."
59
+ ],
60
+ "migration_instruction": "Move high-privilege secrets out of the scanned agent environment and use scoped replacement tokens."
61
+ },
62
+ {
63
+ "id": "core-instruction-override",
64
+ "title": "Instruction override pattern detected",
65
+ "category": "data-exposure-risk",
66
+ "severity": "medium",
67
+ "confidence": 0.64,
68
+ "permissions": ["instruction-control"],
69
+ "target_paths": ["**/*.md", "AGENTS.md", "SOUL.md", "TOOLS.md"],
70
+ "patterns": ["ignore (previous|all) instructions", "override (safety|system|developer)"],
71
+ "why_it_matters": "Instruction override patterns can change how an agent follows rules and handles sensitive context.",
72
+ "recommended_actions": [
73
+ "Review the surrounding prompt text.",
74
+ "Remove hidden or unnecessary override instructions."
75
+ ],
76
+ "recommended_alternatives": [
77
+ "Use explicit, narrow tool permissions instead of broad instruction overrides."
78
+ ],
79
+ "migration_instruction": "Replace broad override instructions with specific, reviewable tool policies."
80
+ }
81
+ ]
82
+ }
@@ -0,0 +1,44 @@
1
+ {
2
+ "id": "hermes",
3
+ "version": "0.1.0",
4
+ "rules": [
5
+ {
6
+ "id": "hermes-openclaw-migration",
7
+ "title": "Hermes OpenClaw migration artifact detected",
8
+ "category": "supply-chain-risk",
9
+ "severity": "medium",
10
+ "confidence": 0.76,
11
+ "permissions": ["skill-installation", "credential-access", "persistent-memory"],
12
+ "target_paths": ["**/*"],
13
+ "patterns": ["openclaw-imports|migrate-from-openclaw|\\.openclaw"],
14
+ "why_it_matters": "OpenClaw migration can import skills, settings, memories or credentials into a Hermes environment.",
15
+ "recommended_actions": [
16
+ "Review imported skills and credentials.",
17
+ "Remove migrated artifacts that are no longer needed."
18
+ ],
19
+ "recommended_alternatives": [
20
+ "Import only selected skills instead of full environment migration."
21
+ ],
22
+ "migration_instruction": "Review ~/.hermes/skills/openclaw-imports and remove unused imported skills."
23
+ },
24
+ {
25
+ "id": "hermes-gateway-trigger",
26
+ "title": "Hermes gateway or remote trigger detected",
27
+ "category": "remote-access-risk",
28
+ "severity": "medium",
29
+ "confidence": 0.72,
30
+ "permissions": ["remote-trigger", "network-access"],
31
+ "target_paths": ["**/*.json", "**/*.yaml", "**/*.yml"],
32
+ "patterns": ["gateway|telegram|discord|slack|whatsapp|signal|webhook|allowed_users"],
33
+ "why_it_matters": "Gateway configuration can allow remote systems or users to trigger agent behavior.",
34
+ "recommended_actions": [
35
+ "Restrict allowed users.",
36
+ "Disable unused gateways."
37
+ ],
38
+ "recommended_alternatives": [
39
+ "Use local CLI-only mode for sensitive workspaces."
40
+ ],
41
+ "migration_instruction": "Disable remote gateways until allowed users and token storage are reviewed."
42
+ }
43
+ ]
44
+ }
@@ -0,0 +1,65 @@
1
+ {
2
+ "id": "mcp",
3
+ "version": "0.1.0",
4
+ "rules": [
5
+ {
6
+ "id": "mcp-stdio-process-server",
7
+ "title": "MCP stdio process server detected",
8
+ "category": "execution-risk",
9
+ "severity": "high",
10
+ "confidence": 0.86,
11
+ "permissions": ["subprocess-spawn", "mcp-tool-access"],
12
+ "target_paths": ["**/mcp*.json", "**/*.toml", "**/*.yaml", "**/*.yml", "**/*.json"],
13
+ "patterns": ["\"command\"\\s*:", "\\b(npx|uvx|python|node|docker)\\b", "@modelcontextprotocol/server-"],
14
+ "why_it_matters": "A stdio MCP server starts a local process. The agent may delegate tool calls to that process.",
15
+ "recommended_actions": [
16
+ "Verify the MCP package source and command arguments.",
17
+ "Pin the MCP package version."
18
+ ],
19
+ "recommended_alternatives": [
20
+ "Use a local verified MCP server with a pinned version.",
21
+ "Disable this MCP server if it is not required."
22
+ ],
23
+ "migration_instruction": "Replace moving MCP commands such as npx latest with a pinned package version."
24
+ },
25
+ {
26
+ "id": "mcp-remote-endpoint",
27
+ "title": "Remote MCP endpoint detected",
28
+ "category": "remote-access-risk",
29
+ "severity": "medium",
30
+ "confidence": 0.8,
31
+ "permissions": ["network-access", "external-endpoint", "mcp-tool-access"],
32
+ "target_paths": ["**/mcp*.json", "**/*.toml", "**/*.yaml", "**/*.yml", "**/*.json"],
33
+ "patterns": ["\"type\"\\s*:\\s*\"(sse|http|streamable-http)\"", "https?://[^\\s\"']+"],
34
+ "why_it_matters": "Remote MCP endpoints can receive tool calls or provide tools from outside the local environment.",
35
+ "recommended_actions": [
36
+ "Verify the remote MCP owner and transport security.",
37
+ "Restrict exposed tools if the client supports filtering."
38
+ ],
39
+ "recommended_alternatives": [
40
+ "Prefer a local stdio MCP server from a verified source for sensitive tasks."
41
+ ],
42
+ "migration_instruction": "Disable remote MCP endpoints for sensitive workspaces or replace them with local pinned MCP servers."
43
+ },
44
+ {
45
+ "id": "mcp-filesystem-write",
46
+ "title": "Filesystem write MCP capability detected",
47
+ "category": "data-exposure-risk",
48
+ "severity": "high",
49
+ "confidence": 0.84,
50
+ "permissions": ["filesystem-write", "mcp-tool-access"],
51
+ "target_paths": ["**/*"],
52
+ "patterns": ["write_file|edit_file|move_file|create_directory|delete_file|filesystem"],
53
+ "match_scope": "file",
54
+ "why_it_matters": "Filesystem write tools can modify local files through agent tool calls.",
55
+ "recommended_actions": [
56
+ "Limit filesystem tools to a dedicated workspace.",
57
+ "Disable write-capable tools unless required."
58
+ ],
59
+ "recommended_alternatives": [
60
+ "Use read-only filesystem tooling for inspection tasks."
61
+ ],
62
+ "migration_instruction": "Replace write-capable filesystem tools with read-only tools when the task only needs inspection."
63
+ }
64
+ ]
65
+ }
@@ -0,0 +1,46 @@
1
+ {
2
+ "id": "openclaw",
3
+ "version": "0.1.0",
4
+ "rules": [
5
+ {
6
+ "id": "openclaw-remote-channel-policy",
7
+ "title": "OpenClaw remote channel policy detected",
8
+ "category": "remote-access-risk",
9
+ "severity": "medium",
10
+ "confidence": 0.76,
11
+ "permissions": ["remote-trigger", "credential-access"],
12
+ "target_paths": ["**/openclaw.json", "**/*.yaml", "**/*.yml", "**/*.json"],
13
+ "patterns": ["dmPolicy|allowFrom|groupPolicy|webhook|telegram|discord|slack|feishu|wechat|qq"],
14
+ "match_scope": "file",
15
+ "why_it_matters": "Remote channels can trigger agent sessions. Channel policies and allowlists determine who can reach the agent.",
16
+ "recommended_actions": [
17
+ "Restrict allowed users or groups.",
18
+ "Rotate bot tokens if they were exposed in local files."
19
+ ],
20
+ "recommended_alternatives": [
21
+ "Use local-only mode for sensitive workspaces."
22
+ ],
23
+ "migration_instruction": "Set explicit allowFrom values and disable group triggers unless they are required."
24
+ },
25
+ {
26
+ "id": "openclaw-scheduled-task",
27
+ "title": "OpenClaw scheduled or background execution detected",
28
+ "category": "persistence-automation-risk",
29
+ "severity": "medium",
30
+ "confidence": 0.72,
31
+ "permissions": ["scheduled-execution"],
32
+ "target_paths": ["**/*"],
33
+ "patterns": ["cron|scheduled|schedule|background session|auto.?run"],
34
+ "match_scope": "file",
35
+ "why_it_matters": "Scheduled agent tasks can start later, when the user is not actively reviewing each action.",
36
+ "recommended_actions": [
37
+ "Review scheduled task prompts and allowed tools.",
38
+ "Disable unused scheduled tasks."
39
+ ],
40
+ "recommended_alternatives": [
41
+ "Use manual run mode for sensitive workflows."
42
+ ],
43
+ "migration_instruction": "Disable scheduled execution for this agent until the task prompt and tool permissions are reviewed."
44
+ }
45
+ ]
46
+ }
@@ -0,0 +1,45 @@
1
+ {
2
+ "id": "skills",
3
+ "version": "0.1.0",
4
+ "rules": [
5
+ {
6
+ "id": "skill-env-requirement",
7
+ "title": "Skill references environment credentials",
8
+ "category": "data-exposure-risk",
9
+ "severity": "medium",
10
+ "confidence": 0.78,
11
+ "permissions": ["credential-access", "env-read"],
12
+ "target_paths": ["**/SKILL.md", "**/skills.config.json", "**/SKILLs/**"],
13
+ "patterns": ["API_KEY|TOKEN|SECRET|\\.env"],
14
+ "supersedes": ["core-env-reference"],
15
+ "why_it_matters": "Skills that require credentials can inherit sensitive access from the local environment.",
16
+ "recommended_actions": [
17
+ "Review required credentials before enabling the skill.",
18
+ "Use scoped credentials with minimum permissions."
19
+ ],
20
+ "recommended_alternatives": [
21
+ "Use a read-only or unauthenticated skill variant if available."
22
+ ],
23
+ "migration_instruction": "Create a dedicated low-privilege token for this skill instead of reusing personal credentials."
24
+ },
25
+ {
26
+ "id": "skill-remote-install-source",
27
+ "title": "Skill remote install source detected",
28
+ "category": "supply-chain-risk",
29
+ "severity": "medium",
30
+ "confidence": 0.75,
31
+ "permissions": ["skill-installation", "external-download"],
32
+ "target_paths": ["**/SKILL.md", "**/skills.config.json", "**/*.json"],
33
+ "patterns": ["github\\.com|https?://|git clone|zip"],
34
+ "why_it_matters": "Remote skill sources can add new instructions, dependencies or scripts to the agent environment.",
35
+ "recommended_actions": [
36
+ "Verify the skill source.",
37
+ "Pin the source to a commit or release."
38
+ ],
39
+ "recommended_alternatives": [
40
+ "Use bundled or community-vetted skills where available."
41
+ ],
42
+ "migration_instruction": "Pin the skill source to a commit SHA and review SKILL.md before enabling it."
43
+ }
44
+ ]
45
+ }