Security Scan Results — February 2026
Medium/Low Findings
| Severity | File | Description |
|---|
| MEDIUM | .gitignore | Missing common sensitive file patterns (.env, *.pem, *.key, .DS_Store, *.p12, *.pfx). While no sensitive files are currently tracked, this leaves the repo vulnerable to accidental commits of secrets. |
| MEDIUM | cli/install.sh:24-26 | Uses echo -e for colored output logging functions (log_info, log_warn, log_error). echo -e is not portable to macOS bash 3.2 — should use printf instead per project conventions. |
| LOW | test/run.sh:18 | Uses set -uo pipefail with the -u (nounset) flag, which is explicitly banned per CLAUDE.md conventions (NO set -u — use ${VAR:-} instead). |
| LOW | test/run.sh:313 | Uses source <(curl ...) pattern inside a bash subshell. This is incompatible with macOS bash 3.x per project conventions — should use eval "$(curl ...)" instead. |
Remediation
.gitignore — Add standard sensitive file patterns:
.env.env.**.pem*.key*.p12*.pfx.DS_Store
cli/install.sh:24-26 — Replace echo -e with printf:
log_info() { printf"${GREEN}[spawn]${NC} %s\n""$1"; }
log_warn() { printf"${YELLOW}[spawn]${NC} %s\n""$1"; }
log_error() { printf"${RED}[spawn]${NC} %s\n""$1"; }test/run.sh:18 — Remove -u from set flags:
test/run.sh:313 — Replace source <() with eval "$():
eval"$(curl -fsSL https://raw.githubusercontent.com/OpenRouterTeam/spawn/main/sprite/lib/common.sh)"
Notes
Found by
Automated security scan (spawn security team)
Security Scan Results — February 2026
Medium/Low Findings
.gitignore.env,*.pem,*.key,.DS_Store,*.p12,*.pfx). While no sensitive files are currently tracked, this leaves the repo vulnerable to accidental commits of secrets.cli/install.sh:24-26echo -efor colored output logging functions (log_info,log_warn,log_error).echo -eis not portable to macOS bash 3.2 — should useprintfinstead per project conventions.test/run.sh:18set -uo pipefailwith the-u(nounset) flag, which is explicitly banned per CLAUDE.md conventions (NO set -u — use ${VAR:-} instead).test/run.sh:313source <(curl ...)pattern inside a bash subshell. This is incompatible with macOS bash 3.x per project conventions — should useeval "$(curl ...)"instead.Remediation
.gitignore— Add standard sensitive file patterns:cli/install.sh:24-26— Replaceecho -ewithprintf:test/run.sh:18— Remove-ufrom set flags:set -eo pipefailtest/run.sh:313— Replacesource <()witheval "$():Notes
.shfiles passbash -nsyntax checkbun testtests passFound by
Automated security scan (spawn security team)