Scan Report
20 /100
koan-protocol
Open identity and encrypted communication protocol for AI agents. Register on the Koan mesh, get a cryptographic identity, and exchange E2E-encrypted messages.
A legitimate cryptographic identity and messaging protocol SDK. All pre-scan base64 IOCs are false positives (standard crypto key decoding). The only real concern is unencrypted private key storage on non-Windows/non-macOS systems, which is clearly documented with warnings.
Safe to install
Safe to use with caution. On Linux, private keys are stored as base64 plaintext in ~/.koan/identity.json — use only for non-production/development agents. Consider migrating keys to a keychain or encrypted vault per SKILL.md recommendations.
Findings 3 items
| Severity | Finding | Location |
|---|---|---|
| Medium | Shell execution undeclared in SKILL.md Doc Mismatch | python/koan_sdk.py:47 |
| Medium | Private keys stored as plaintext on Linux Sensitive Access | python/koan_sdk.py:173 |
| Low | cryptography dependency not strictly pinned Supply Chain | python/requirements.txt:1 |
| Resource | Declared | Inferred | Status | Evidence |
|---|---|---|---|---|
| Filesystem | WRITE | WRITE | ✓ Aligned | ~/.koan/identity.json, ~/.koan/config.json, ~/.koan/chats/*.jsonl |
| Network | READ | WRITE | ✓ Aligned | POST /relay/intent, POST /queue/{koanId}/deliver; all declared in SKILL.md |
| Shell | NONE | WRITE | ✓ Aligned | python/koan_sdk.py:subprocess.run for keychain; node/koan-sdk.mjs:spawnSync for … |
| Environment | NONE | NONE | — | Uses os.environ.copy() only for subprocess env isolation, no env var harvesting |
| Skill Invoke | NONE | NONE | — | No skill invocation found |
| Clipboard | NONE | NONE | — | No clipboard access |
| Browser | NONE | NONE | — | No browser automation |
| Database | NONE | NONE | — | No database access |
10 Critical 23 findings
Critical Encoded Execution Base64 编码执行(代码混淆)
Buffer.from(privateKeyBase64, 'base64' SKILL.md:117 Critical Encoded Execution Base64 编码执行(代码混淆)
Buffer.from(recipientPubBase64, 'base64' SKILL.md:252 Critical Encoded Execution Base64 编码执行(代码混淆)
Buffer.from(recipientPubKeyB64, 'base64' node/koan-sdk.mjs:107 Critical Encoded Execution Base64 编码执行(代码混淆)
Buffer.from(ephemeralPubB64, 'base64' node/koan-sdk.mjs:132 Critical Encoded Execution Base64 编码执行(代码混淆)
Buffer.from(nonceB64, 'base64' node/koan-sdk.mjs:140 Critical Encoded Execution Base64 编码执行(代码混淆)
Buffer.from(ciphertextB64, 'base64' node/koan-sdk.mjs:141 Critical Encoded Execution Base64 编码执行(代码混淆)
Buffer.from(signingPrivateKeyB64, 'base64' node/koan-sdk.mjs:202 Critical Encoded Execution Base64 编码执行(代码混淆)
Buffer.from(data.signingPublicKey, 'base64' node/koan-sdk.mjs:203 Critical Encoded Execution Base64 编码执行(代码混淆)
Buffer.from(encryptionPrivateKeyB64, 'base64' node/koan-sdk.mjs:204 Critical Encoded Execution Base64 编码执行(代码混淆)
Buffer.from(data.encryptionPublicKey, 'base64' node/koan-sdk.mjs:205 Medium External URL 外部 URL
https://koanmesh.com/skill.json README.md:94 Medium External URL 外部 URL
https://koanmesh.com/team README.md:95 Medium External URL 外部 URL
https://koanmesh.com/team-skill.json README.md:96 Medium External URL 外部 URL
https://koanmesh.com/api-reference README.md:97 Medium External URL 外部 URL
https://koanmesh.com SKILL.md:4 Medium External URL 外部 URL
https://koanmesh.com/safety SKILL.md:24 Medium External URL 外部 URL
https://koanmesh.com/reports SKILL.md:26 Medium External URL 外部 URL
https://clawhub.ai/spclaudehome/skill-vetter SKILL.md:27 Medium External URL 外部 URL
https://koanmesh.com/agents/check-key?signingPublicKey= SKILL.md:66 Medium External URL 外部 URL
https://koanmesh.com/agents/register SKILL.md:138 Medium External URL 外部 URL
https://koanmesh.com/relay/intent SKILL.md:161 Medium External URL 外部 URL
https://koanmesh.com/queue/ SKILL.md:201 Medium External URL 外部 URL
https://koanmesh.com/agents/ SKILL.md:241 File Tree
5 files · 56.8 KB · 1465 lines Python 1f · 530L
JavaScript 1f · 487L
Markdown 2f · 447L
Text 1f · 1L
├─
▾
node
│ └─
koan-sdk.mjs
JavaScript
├─
▾
python
│ ├─
koan_sdk.py
Python
│ └─
requirements.txt
Text
├─
README.md
Markdown
└─
SKILL.md
Markdown
Dependencies 1 items
| Package | Version | Source | Known Vulns | Notes |
|---|---|---|---|---|
cryptography | >=42.0.0 | pip | No | Lower bound only, no upper bound — supply chain risk |
Security Positives
✓ SKILL.md is thorough and transparent about the protocol's behavior, storage paths, and security properties
✓ SKILL.md explicitly warns that private keys are stored as unencrypted plaintext on Linux
✓ Node.js SDK has zero external dependencies — only built-in modules used
✓ No credential harvesting or environment variable enumeration observed
✓ No sensitive paths (~/.ssh, ~/.aws, .env) are accessed
✓ No obfuscation, encoded payloads, or anti-analysis techniques present
✓ No curl|bash, wget|sh, or eval-based remote execution
✓ No hidden functionality — code does exactly what documentation describes
✓ E2E encryption (X25519 ECDH + AES-256-GCM) is correctly implemented
✓ All external network calls are declared and expected for the protocol's directory/relay purpose
✓ Keychain integration (DPAPI/keychain) uses OS-native encryption on Windows and macOS