T08 · Insecure Dependencies
- Location
README.md:19- Finding
Unpinned Installer and Mutable Repository Installation
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This is a documented trading-record integration, but it needs review because it can send detailed trading analysis to an external service, persist API keys locally, and follow remotely fetched workflow packages.
Install only if you are comfortable sending trading decisions and related metadata to Agent Trading Atlas. Use a dedicated low-scope API key where possible, store it in a real secret manager or tightly permissioned file, avoid project .env and shell history exposure, pin the installer/source to a reviewed version, and do not enable autonomous operation or remotely fetched workflow packages unless you review the package contents and execution permissions first.
README.md:19Unpinned Installer and Mutable Repository Installation
references/workflow-guide.md:72Remote Workflow Packages Can Supply Local Instructions and Generated Scripts Without Integrity Verification
references/getting-started.md:179API Key May Be Persisted in Plaintext Shell or Project Files
The documentation recommends storing a long-lived API key in agent-discoverable locations such as a plaintext home-directory config, shell startup files, or project .env files. In an agent ecosystem, making secrets broadly readable by tools or exposing them through developer workflows increases the chance of unintended credential access, reuse, or leakage via backups, prompts, logs, or repository mistakes.
|----------|--------|----------|-------|
| 1 (recommended) | **ATA config file** | `~/.ata/ata.json` | Dedicated, agent-discoverable, works with any tool |
| 2 | **Shell environment** | `~/.zshrc` or `~/.bashrc` | Works everywhere via `export ATA_API_KEY=...` |
| 3 | **Project .env file** | `.env` in project root | Per-project isolation (ensure `.env` is in `.gitignore`) |
### Recommended: `~/.ata/ata.json`
Appending an API key directly into a project .env file creates a plaintext secret in the workspace, where it may be read by tools, accidentally committed, copied into artifacts, or exposed through debugging and prompt-context collection. In a skill intended for agents, project-local plaintext secret storage is more dangerous because multiple tools may automatically ingest repository files.
source ~/.zshrc
### Alternative: Project .env file
```bash
echo 'ATA_API_KEY=ata_sk_live_...' >> .env
The note to keep .env in .gitignore helps but does not eliminate the core issue that the secret remains in plaintext within the project tree. Secrets in workspace files are still vulnerable to local disclosure, accidental sharing outside git, inclusion in archives, or exposure to other agent/tooling processes.
echo 'ATA_API_KEY=ata_sk_live_...' >> .env
# Ensure .env is in .gitignore
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
echo 'ATA_API_KEY=ata_sk_live_...' >> .env
# Ensure .env is in .gitignore
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.
The skill description and repeated guidance encourage use whenever an agent analyzes stocks, makes trading decisions, reviews market performance, or inspects similar setups, which is broad enough to trigger in many routine finance tasks. Because the skill connects to an external service for querying and submitting decision records, overbroad invocation increases the chance of unnecessary external data sharing and unintended reliance on third-party workflow guidance in contexts where ATA is not actually needed.
The top-level description emphasizes analysis support and 'shared experience' but does not clearly foreground that trading decisions, metadata, and later outcomes may be sent to and tracked by an external service. In a finance context, this omission is risky because users may expose proprietary strategies, identifiers, timing information, or regulated business data without realizing the skill performs external submission and ongoing tracking.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
export ATA_BASE="https://api.agenttradingatlas.com/api/v1"
curl -sS "$ATA_BASE/auth/quick-setup" \
-H "Content-Type: application/json" \
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
export ATA_BASE="https://api.agenttradingatlas.com/api/v1"
curl -sS "$ATA_BASE/auth/quick-setup" \
-H "Content-Type: application/json" \
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
export ATA_BASE="https://api.agenttradingatlas.com/api/v1"
curl -sS "$ATA_BASE/auth/quick-setup" \
-H "Content-Type: application/json" \
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
export ATA_BASE="https://api.agenttradingatlas.com/api/v1"
curl -sS "$ATA_BASE/auth/quick-setup" \
-H "Content-Type: application/json" \
-d '{
"email": "agent@example.com",
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
DEVICE_CODE=$(printf '%s' "$DEVICE_JSON" | jq -r '.device_code')
interval seconds until authorizedcurl -sS "$ATA_BASE/auth/github/device/poll"
-H "Content-Type: application/json"
-d "{"device_code": "$DEVICE_CODE"}"
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
curl -sS "$ATA_BASE/auth/api-keys" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $SESSION_TOKEN" \
-d '{
The recommended persistent storage of a reusable API key in ~/.ata/ata.json creates a durable credential artifact specifically designed for broad agent discoverability. In this skill's context, that increases the blast radius: any local process, plugin, or compromised agent running as the same user can potentially harvest the key and impersonate the account over time.
~/.ata/ata.jsonmkdir -p ~/.ata
cat > ~/.ata/ata.json << 'EOF'
{
"api_key": "ata_sk_live_...",
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
"agent_id": "my-rsi-scanner-v2" } EOF chmod 600 ~/.ata/ata.json
Any agent or tool can read `~/.ata/ata.json` to find the key without depending on shell environment or a specific IDE. The `agent_id` field is optional but convenient for agents that always use the same identity.
The phrase "Use this for autonomous agent operation, quota management, and owner-side review context" is a very broad invocation description in a markdown file. It does not define specific triggers, scope boundaries, or exclusion conditions, so it could overlap with many routine requests about operations or quotas.
The section 'Use this when you want the agent to operate without manual prompting' plus the recommended cadence and six-step loop materially encourages autonomous recurring behavior without embedding stronger scope guards, approval requirements, or environment constraints. In a trading-agent skill, ambiguous autonomy guidance is more dangerous because it can lead to repeated market-facing actions, quota consumption, or unintended submissions if an integrating agent treats documentation as operational instruction.
The file instructs agents to submit structured trading decisions and associated metadata to a remote API, including agent identifiers, timestamps, tool usage, reasoning, market context, and optional review traces, but it does not include a clear user-facing warning or consent step about external data transmission. In an agent setting, this can cause unintentional exfiltration of proprietary strategies, sensitive operational metadata, or user-confidential analysis to a third-party service.
The documentation shows authenticated API usage with a bearer token and later encourages fetching full raw records, but it does not mention basic credential-handling hygiene or the sensitivity of retrieved data. In a shared trading-experience system, raw records may contain proprietary reasoning, timestamps, aliases, or other sensitive historical data, so omission of privacy guidance can lead to accidental exposure through logs, prompts, transcripts, or insecure storage.
No suspicious patterns detected.