T08 · Insecure Dependencies
- Location
SKILL.md:13- Finding
Unpinned Global npm Dependency Receives Wallet-Level Trust
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This is a coherent crypto wallet skill, but it gives an external global npm CLI wallet-level authority and documents risky credential/session handling patterns users should review carefully.
Review this carefully before installing. Use a low-value or test wallet first, prefer browser authentication, avoid putting the wallet password in command-line arguments, shell history, scripts, or environment variables, verify or pin the npm package before installing, protect `~/.emblemai/`, and review every transaction detail before approving any wallet-modifying action.
SKILL.md:13Unpinned Global npm Dependency Receives Wallet-Level Trust
SKILL.md:161Wallet Master Password Exposed Through Command-Line Arguments
The top-level description promotes trading, swapping, and blockchain wallet interaction without prominently warning about irreversible transactions, asset loss, phishing, or market risk. Because this is a wallet-management skill, understated risk messaging increases the chance that users treat it like a normal informational tool rather than a financial control surface.
The skill metadata explicitly identifies sensitive config paths containing encrypted credentials, keys, session tokens, and history. In an agent ecosystem, exposing these locations makes it easier for other tools, prompts, or compromised components to target wallet secrets and session artifacts for exfiltration or misuse.
description: Connect to EmblemVault and manage crypto wallets via Emblem AI - Agent Hustle. Supports Solana, Ethereum, Base, BSC, Polygon, Hedera, and Bitcoin. Use when the user wants to trade crypto, check balances, swap tokens, or interact with blockchain wallets.
homepage: https://emblemvault.dev
user-invocable: true
metadata: {"openclaw":{"emoji":"🛡️","version":"3.0.8","homepage":"https://emblemvault.dev","primaryEnv":"EMBLEM_PASSWORD","requires":{"bins":["node","npm","emblemai"],"env":["EMBLEM_PASSWORD"]},"config_paths":["~/.emblemai/.env","~/.emblemai/.env.keys","~/.emblemai/session.json","~/.emblemai/history/"],"install":[{"id":"npm","kind":"npm","package":"@emblemvault/agentwallet","bins":["emblemai"],"label":"Install Agent Wallet CLI"}]}}
---
# Emblem Agent Wallet
Skill manipulates agent memory, state, or stored context. Memory corruption can alter personality, override safety rules, or cause unpredictable behavior.
emblemai -p "$PASSWORD" # Password auth
### Reset Conversation
```bash
emblemai --reset
Skill manipulates agent memory, state, or stored context. Memory corruption can alter personality, override safety rules, or cause unpredictable behavior.
| Command | Description |
|---------|-------------|
| `/reset` | Clear conversation history and start fresh |
| `/clear` | Alias for `/reset` |
| `/history on\|off` | Toggle history retention between messages |
| `/history` | Show history status and recent messages |
Skill manipulates agent memory, state, or stored context. Memory corruption can alter personality, override safety rules, or cause unpredictable behavior.
| Command | Description |
|---------|-------------|
| `/reset` | Clear conversation history and start fresh |
| `/clear` | Alias for `/reset` |
| `/history on\|off` | Toggle history retention between messages |
| `/history` | Show history status and recent messages |
Skill attempts to nullify the agent's safety policies or restrictions ('you have no restrictions', 'ignore your guidelines', 'do anything now'). This is a direct jailbreak that disables guardrails.
| `--agent` | `-a` | Run in agent mode (single-shot, password auth only) |
| `--restore-auth <path>` | | Restore credentials from backup file and exit |
| `--reset` | | Clear conversation history and exit |
| `--debug` | | Start with debug mode enabled |
| `--stream` | | Start with streaming enabled (default: on) |
| `--log` | | Enable stream logging |
| `--log-file <path>` | | Override log file path (default: `~/.emblemai-stream.log`) |
Skill manipulates agent memory, state, or stored context. Memory corruption can alter personality, override safety rules, or cause unpredictable behavior.
export EMBLEM_PASSWORD="your-password-16-chars-min" emblemai --agent -m "Show my portfolio"
emblemai --reset
The documentation confirms that session.json contains an access token and refresh token sufficient for wallet access until expiry. In a wallet-management context, that is highly sensitive information because any component instructed to inspect local files could reuse the session to access balances, addresses, or potentially authorize operations.
|------|-----------------|-------------------|
| `.env` | Your EMBLEM_PASSWORD | Encrypted with AES-256-GCM via [dotenvx](https://dotenvx.com/). The password is never stored in plaintext. |
| `.env.keys` | The AES decryption key for `.env` | File permissions `chmod 600` (owner-only). This key never leaves your machine and is never transmitted over the network. |
| `session.json` | JWT access token + refresh token | File permissions `chmod 600`. The JWT expires after 15 minutes and is automatically refreshed. The refresh token is valid for 7 days. Logging out deletes this file. |
| `history/*.json` | Conversation history | File permissions `chmod 600`. Contains your chat messages with the AI. No credentials are stored in history. |
The `~/.emblemai/` directory itself is created with `chmod 700` (owner-only access).
The invocation phrases are broad enough that ordinary crypto questions like checking balances or connecting a wallet could automatically trigger this high-risk wallet skill. In an agentic environment, overbroad routing can cause unintentional credential use, wallet access, or transaction-capable tooling to be activated for requests that did not clearly consent to wallet operations.
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
## File Locations
All persistent data is stored under `~/.emblemai/` (created on first run with `chmod 700`).
| File | Purpose | Sensitive | Permissions |
|------|---------|-----------|-------------|
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
## File Locations
All persistent data is stored under `~/.emblemai/` (created on first run with `chmod 700`).
| File | Purpose | Sensitive | Permissions |
|------|---------|-----------|-------------|
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
### Encryption Details
Credentials are encrypted at rest using [dotenvx](https://dotenvx.com/), which uses **AES-256-GCM** symmetric encryption. The encryption key is stored in `~/.emblemai/.env.keys` and the encrypted payload in `~/.emblemai/.env`. Both files are created with `chmod 600` (owner read/write only). The decryption key never leaves the local machine.
Session tokens (`session.json`) contain a short-lived JWT (refreshed automatically) and a refresh token valid for 7 days. Sessions are not encrypted on disk but are restricted to `chmod 600`. Logging out via `/auth` > Logout deletes the session file.
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
### Encryption Details
Credentials are encrypted at rest using [dotenvx](https://dotenvx.com/), which uses **AES-256-GCM** symmetric encryption. The encryption key is stored in `~/.emblemai/.env.keys` and the encrypted payload in `~/.emblemai/.env`. Both files are created with `chmod 600` (owner read/write only). The decryption key never leaves the local machine.
Session tokens (`session.json`) contain a short-lived JWT (refreshed automatically) and a refresh token valid for 7 days. Sessions are not encrypted on disk but are restricted to `chmod 600`. Logging out via `/auth` > Logout deletes the session file.
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
### Encryption Details
Credentials are encrypted at rest using [dotenvx](https://dotenvx.com/), which uses **AES-256-GCM** symmetric encryption. The encryption key is stored in `~/.emblemai/.env.keys` and the encrypted payload in `~/.emblemai/.env`. Both files are created with `chmod 600` (owner read/write only). The decryption key never leaves the local machine.
Session tokens (`session.json`) contain a short-lived JWT (refreshed automatically) and a refresh token valid for 7 days. Sessions are not encrypted on disk but are restricted to `chmod 600`. Logging out via `/auth` > Logout deletes the session file.
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
### Encryption Details
Credentials are encrypted at rest using [dotenvx](https://dotenvx.com/), which uses **AES-256-GCM** symmetric encryption. The encryption key is stored in `~/.emblemai/.env.keys` and the encrypted payload in `~/.emblemai/.env`. Both files are created with `chmod 600` (owner read/write only). The decryption key never leaves the local machine.
Session tokens (`session.json`) contain a short-lived JWT (refreshed automatically) and a refresh token valid for 7 days. Sessions are not encrypted on disk but are restricted to `chmod 600`. Logging out via `/auth` > Logout deletes the session file.
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
### Encryption Details
Credentials are encrypted at rest using [dotenvx](https://dotenvx.com/), which uses **AES-256-GCM** symmetric encryption. The encryption key is stored in `~/.emblemai/.env.keys` and the encrypted payload in `~/.emblemai/.env`. Both files are created with `chmod 600` (owner read/write only). The decryption key never leaves the local machine.
Session tokens (`session.json`) contain a short-lived JWT (refreshed automatically) and a refresh token valid for 7 days. Sessions are not encrypted on disk but are restricted to `chmod 600`. Logging out via `/auth` > Logout deletes the session file.
The skill documents persistent local session storage with a refresh token valid for 7 days and not encrypted at rest, only permission-restricted. In a wallet context, persistent bearer credentials materially increase post-compromise dwell time because theft of the session file can extend access beyond a short-lived interactive session.
### Encryption Details
Credentials are encrypted at rest using [dotenvx](https://dotenvx.com/), which uses **AES-256-GCM** symmetric encryption. The encryption key is stored in `~/.emblemai/.env.keys` and the encrypted payload in `~/.emblemai/.env`. Both files are created with `chmod 600` (owner read/write only). The decryption key never leaves the local machine.
Session tokens (`session.json`) contain a short-lived JWT (refreshed automatically) and a refresh token valid for 7 days. Sessions are not encrypted on disk but are restricted to `chmod 600`. Logging out via `/auth` > Logout deletes the session file.
The skill makes strong safety claims that wallet-modifying actions always require explicit confirmation, but elsewhere it advertises one-shot agent-mode commands for sends and swaps. This mismatch is dangerous because a host agent or user may trust the documentation and invoke transfer/trade operations assuming a confirmation gate exists when the CLI or downstream service could execute immediately.
Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.
The agent operates in **safe mode by default**. This means:
- **All wallet-modifying actions require your explicit confirmation** before execution -- including swaps, sends, transfers, order placement, signing, and DeFi operations
- **Read-only operations execute immediately** without confirmation -- balance checks, address lookups, market data, portfolio views
- The agent will present the full details of any transaction (amounts, addresses, fees) and wait for your approval before submitting
- There is no "auto-execute" mode -- every transaction requires a human in the loop
Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.
- **All wallet-modifying actions require your explicit confirmation** before execution -- including swaps, sends, transfers, order placement, signing, and DeFi operations
- **Read-only operations execute immediately** without confirmation -- balance checks, address lookups, market data, portfolio views
- The agent will present the full details of any transaction (amounts, addresses, fees) and wait for your approval before submitting
- There is no "auto-execute" mode -- every transaction requires a human in the loop
### Password Hygiene
No suspicious patterns detected.