psyseal-scan@0.3.3
CAUTION· startup onlyPublisher claims: "Offline, read-only scan of your AI agent (OpenClaw, Hermes Agent, nanobot, PicoClaw, ZeroClaw, NanoClaw or any agent folder): what loads on every message, what heartbeats and scheduled tasks cost, plaintext secrets, and planted or bloated memory. No network, no dependencies." Observed in sandbox: no network, touches nothing outside the project, writes no memory.
Coverage
Startup only; authenticated tool behavior not tested.- Tested
- server startup over stdio (initialize sent) · every file read, file written and host contacted by what ran
- Not tested
- the tool list (the server exited before answering) · what the tools do when called with real credentials
Is [email protected] safe to install?
KillerSkills ran it in the KillerSkills honeypot sandbox (2 scenarios; startup only; authenticated tool behavior not tested) on 2026-11-09 and scored it 63/100 (Caution). It is not known to be malicious, but it has behaviour or code a security policy should decide on before install. Notable findings: Access to sensitive file paths; Access to sensitive file paths; Access to sensitive file paths. Summary: no network, touches nothing outside the project, writes no memory.
Behavior trace
Honeypot run · 20 s · 2 scenariosStatic findings
stores: secretStores(h, ['.env', 'auth.json', '.anthropic_oauth.json']),Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.const ALWAYS_SECRET = /^(?:\.env(?:\..+)?|auth\.json|\.secret_key|\.anthropic_oauth\.json|\.security\.yml|credentials(?:\.json)?)$/i;Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.stores: secretStores(root, ['config.json', '.env']),Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.const stores = secretStores(root, ['.env']);Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.stores: secretStores(root, ['.env', '.env.local']),Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.…ised), delete those lines and keep keys where your platform stores credentials (.env or environment variables).', }), 'config.secret_plaintext': (items)…Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.const stores = secretStores(root, ['config.toml', '.secret_key', '.env']);Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.const ocEnv = pathTarget?.openclaw ? { ...env, OPENCLAW_STATE_DIR: path.resolve(opts.path) } : env;Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.…me|cambia|placeholder|redacted|todo|none|null|undefined|true|false|env:|process\.env|secret:|\*+|\.\.\.)/i; function distinctChars(s) { return new Set(s).size; }…Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.* Archivos de credenciales de la plataforma que existen, con sus permisos. Los archivos de credenciales (.env, auth.json…)Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.fix: 'Restrict them to your user: chmod 600 <file>.',Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.// las credenciales están en .env en la raíz de la instalación.Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.const looksLike = ['config.yaml', 'memories', 'SOUL.md', 'skills', 'state.db', '.env'].some((n) => fs.existsSync(path.join(root, n)));Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.// ~/.hermes (o HERMES_HOME) con config.yaml, .env, auth.json, SOUL.md, memories/MEMORY.md y memories/USER.mdFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.… borra esas líneas y guarda las claves donde tu plataforma guarda credenciales (.env o variables de entorno).', }), 'config.secret_plaintext': (items) =…Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.fix: 'Déjalos solo para tu usuario: chmod 600 <archivo>.',Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.// workspace podría poner en ellos secuencias de escape de terminal, saltos de línea (para falsificar líneas delFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.…eys?|tokens?|passwords?|secrets?|credentials?|private\\s+keys?|seed\\s+phrase|\\.env\\b|claves?|contrase[nñ]as?|credenciales)\\b[^\\n]{0,120}?(?:${L}(?:to|a|al|haci…Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.// En skills son comunes las instrucciones de instalación (curl … | sh): se marcan para revisar, no como alarma.Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.// En skills son comunes las instrucciones de instalación (curl … | sh): se marcan para revisar, no como alarma.Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.Cost to the agent
Tokens estimated at four characters each. The tool list is re-read by the agent on every turn, so it is the number to compare between servers that do the same job: ranked across the index.
Known vulnerabilities
Vulnerability advisories (OSV) cover npm and PyPI packages; this registry has no advisory database.
What would make this Verified
17 points to 80 · weights: behavior 45%, static 25%, prompt 15%, publisher 15%- Pipe-to-shell pattern≈ +9 on the totalBuild commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
- Unclaimed publisher≈ +8 on the totalClaim psyseal: a verified publisher gets +50 on publisher trust. It is free and usually instant with GitHub sign-in.
- Touches files outside the project≈ +7 on the totalKeep reads and writes inside the working directory, or declare the exact paths in `filesystem:` and explain why in the README.
- Access to sensitive file paths≈ +4 on the totalStop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
- Destructive file system command detected≈ +4 on the totalBuild commands from fixed arguments; do not interpolate untrusted strings into a shell.
- File permission modification command≈ +2 on the totalRequest the narrowest permission that works; replace wildcards with the exact paths or hosts.