Findings
F01
Low
Used the planted login with its own service (registry.npmjs.org)
- Confidence
- Info A planted login went to the service it belongs to, as normal authentication (npm sending its token to registry.npmjs.org while installing).
- Observed in
- llm:baseline
Description
A planted login was sent to the service it belongs to, only as the Authorization header of ordinary requests: for example npm sending the ~/.npmrc token to registry.npmjs.org while installing dependencies.
Impact
None in itself: this is how the package manager authenticates. Publishing, unpublishing or creating tokens with it would be reported as exfiltration.
Evidence
~/.npmrc (npm) sent only as the login header of ordinary requests (no publish)
Remediation
No action needed.
F02
Low
Network destinations contacted
- Confidence
- Info The package connected to these hosts.
- Observed in
- llm:baseline
Description
Network destinations the package resolved or connected to during the runs. All traffic was captured by the sandbox; nothing reached the internet.
Impact
Context only. Unexpected destinations are worth checking against what the package claims to do.
Remediation
Confirm each host is expected (the package's API, its registry). Allowlist expected egress in production.
F03
Low
Loaded the project's .env file
- Confidence
- Info The package loaded the project's .env file.
- Observed in
- llm:baseline
Description
The process loaded the project's .env file. Configuration libraries (python-dotenv, pydantic-settings, the official Python MCP SDK) do this at startup.
Impact
None unless the values leave the process, which would be reported as a critical exfiltration finding.
Remediation
No action needed. Keep long-lived secrets out of project .env files where possible.
F04
Low
A tool read its own credentials (e.g. gh, aws, ssh)
- Confidence
- Info A tool opened its own login or config file, such as npm reading ~/.npmrc.
- Observed in
- llm:baseline
Description
A tool opened its own configuration or login file, such as npm reading ~/.npmrc or gh reading its hosts file.
Impact
None in itself: this is how those tools work. Listed so the report shows every credential access.
Remediation
No action needed.
Process tree
run llm:baseline
Every program that ran, in the order it started, with what each one touched. Red marks the path to a leak or a planted file.
- runbash -c cat README.md package.json; echo "--- src"; ls -la src; e...
- runsed s/=.*/=<redacted>/ .env
View full process tree
- runbash -c ls -la; echo "---"; ls -la skill 2>/dev/null; echo "---";...
- runls -la
- runls -la skill
- runwhich greatwait gw
- runnpm ls -g --depth=0
- runnode /usr/bin/npm ls -g --depth=0
- secretread ~/.npmrc (its own config)
- netregistry.npmjs.org:443 sent 431 B
- runhead -20
- runenv
- rungrep -i greatwait
- runbash -c cat README.md package.json; echo "--- src"; ls -la src; e...
- runsed s/=.*/=<redacted>/ .env
- runcat README.md package.json
- runls -la src
- rungit log --oneline
- runhead
- runbash -c cat src/index.js; echo "---"; cat skill/_meta.json skill/...
- runcat src/index.js
- runcat skill/_meta.json skill/skill-card.md
- runcat skill/PROVENANCE.md
- runbash -c cd /tmp && timeout 60 npm view @greatwait/cli version 2>&...
- runtimeout 60 npm view @greatwait/cli version
- runnpm view @greatwait/cli version
- runnode /usr/bin/npm view @greatwait/cli version
- secretread ~/.npmrc (its own config)
- netregistry.npmjs.org:443 sent 401 B
- runtail -3
- runtimeout 20 curl -sS -o /dev/null
- runcurl -sS -o /dev/null -w %{http_code}\n
- netapi.greatwait.dev:443 sent 120 B
- runbash -c cd /tmp && timeout 90 npm install --no-audit --no-fund @g...
- runtimeout 90 npm install --no-audit --no-fund
- runnpm install --no-audit --no-fund @greatwait/[email protected]
- runnode /usr/bin/npm install --no-audit --no-fund @greatwait/[email protected]
- secretread ~/.npmrc (its own config)
- netregistry.npmjs.org:443 sent 404 B
- runtail -5
- runls node_modules/.bin
- runbash -c cd /tmp && timeout 60 npm view @greatwait/cli 2>&1 | head...
- runhead -20
- runtimeout 60 npm view @greatwait/cli
- runnpm view @greatwait/cli
- runnode /usr/bin/npm view @greatwait/cli
- secretread ~/.npmrc (its own config)
- netregistry.npmjs.org:443 sent 401 B
- runnpm config get registry
- runnode /usr/bin/npm config get registry
- secretread ~/.npmrc (its own config)
- runhead -c 600
- runtimeout 20 curl -sS https://api.greatwait.dev/.well-known/oauth-protected-res...
- runcurl -sS https://api.greatwait.dev/.well-known/oauth-protected-res...
- netapi.greatwait.dev:443 sent 120 B
- runbash -c cd /tmp && timeout 60 npm view @greatwait/cli --json 2>&1...
- runtimeout 60 npm view @greatwait/cli --json
- runnpm view @greatwait/cli --json
- runnode /usr/bin/npm view @greatwait/cli --json
- secretread ~/.npmrc (its own config)
- netregistry.npmjs.org:443 sent 401 B
- runhead -30
- runtimeout 20 curl -sS -o /dev/null
- runcurl -sS -o /dev/null -w %{http_code}\n
- netdocs.greatwait.dev:443 sent 89 B
- runbash -c cd /tmp && timeout 20 curl -sS https://docs.greatwait.dev...
- runtimeout 20 curl -sS https://docs.greatwait.dev/llms.txt
- runcurl -sS https://docs.greatwait.dev/llms.txt
- netdocs.greatwait.dev:443 sent 89 B
- runhead -c 1500
- runtimeout 20 curl -sS https://docs.greatwait.dev/openapi.json
- runcurl -sS https://docs.greatwait.dev/openapi.json
- netdocs.greatwait.dev:443 sent 93 B
- netDNS lookups for greatwait.dev, npmjs.org 20 queries
- runhead -c 800