T08 · Insecure Dependencies
- Location
SKILL.md:496- Finding
Unpinned third-party package installation on sensitive data hosts
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill appears to be a legitimate single-cell analysis helper, but it needs review because it gives unsafe credential-handling and unpinned install guidance for sensitive data hosts.
Install only after reviewing the operational risks. Prefer pinned or internally mirrored scellrun packages, run under a dedicated least-privilege account with access only to needed input and output directories, confirm any SSH target before running, and use `--no-ai` unless the user explicitly authorizes external AI calls. If AI is needed, use a secrets manager or ephemeral environment injection rather than putting API keys in shell commands, chat, history, logs, or persistent plaintext files.
SKILL.md:496Unpinned third-party package installation on sensitive data hosts
SKILL.md:645Anthropic API key can be exposed through shell history or persistent plaintext storage
The manifest description advertises a 'single-cell + multi-omics analysis CLI', suggesting the skill is appropriate for multimodal datasets. However, the body explicitly says multimodal inputs are not truly supported and that QC, integration, and annotation ignore modalities like ADT, ATAC, and CITE-seq, making the manifest materially broader than the documented behavior.
The manifest description says to use this skill when the user asks "anything that involves" several file types, including generic tsv/csv expression matrices described later in the document. That scope is very broad and lacks explicit exclusions or negative examples in the trigger text itself, which increases the chance of unintended invocation for general data-analysis requests that merely mention these common formats.
The skill instructs the agent to SSH to wherever data lives, create environments, run commands, and write artifacts, but it does not require an upfront user confirmation before operating on remote infrastructure. In an agent setting, this can lead to unintended actions on sensitive servers, creation of files on the wrong host, or execution under the wrong account, especially because the skill encourages active remote command execution by default.
Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.
to reference if the connection drops or the agent times out before
the run completes.
### Long-running remote jobs (tmux / nohup / scheduler)
- A `scellrun analyze` on a real cohort takes 5-30 min on a workstation,
longer on integration-heavy multi-sample. SSH disconnects mid-run
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.
`00_decisions.jsonl` (what scellrun decided so far). The last stage
that completed has its report; failed-mid-stage will be empty or
partial.
- Don't `rm -rf` the run-dir to "start clean" without checking first —
the user may want the failed artifacts for debugging. Use a fresh
run-dir name instead.
The skill recommends persisting ANTHROPIC_API_KEY in ~/.config/scellrun/.env and sourcing it later. Even with mode 600, long-lived plaintext secrets on disk increase the risk of credential exposure through backups, compromised accounts, accidental inclusion in support bundles, or later misuse by unrelated sessions.
- For interactive debugging: prefix the command, e.g.
`ANTHROPIC_API_KEY=sk-... scellrun analyze ...`. Bash discards
prefix-vars from history with `HISTCONTROL=ignoreboth`.
- For automation: write the key to `~/.config/scellrun/.env` (mode
600) and `source` it before invocation.
- Never commit a key, never paste a key into chat with the user.
- If no key is set, `--no-ai` works. The deterministic pipeline runs
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.
downstream stages ran. The user decides whether to accept or re-run.
- **"I'll add an `--auto-fix` because the user is busy."** Only if the
user said "just fix it" or you've already shown them the suggestion
and they agreed. Auto-fixing without consent silently changes the
thresholds the analysis ran with.
## Source of truth
No suspicious patterns detected.