Lets take one example of a NPM package which is genuinely blocked. I picked oh-my-agent@11.11.0 using below method
]$ chainctl libraries packages malware list --ecosystem=javascript --limit 20
]$ chainctl libraries packages malware list --ecosystem=javascript --package=oh-my-agent --version=11.11.0
ECOSYSTEM | PACKAGE | VERSION | BLOCKED | MAL ID | SIGNALS DETECTED
-----------|-------------|---------|------------------|--------|------------------------------------------
npm | oh-my-agent | 11.11.0 | 2026-08-12 05:33 | - | Typosquatting or impersonation
| | | | | Suspicious execution technique
| | | | | Suspicious network activity
| | | | | Published with a legacy token (not OIDC)
| | | | | No trusted provenance or signed release
]$
The curl command below actually gives you the error
]$ LIBS_TOKEN=$(chainctl auth token --audience=libraries.cgr.dev)
]$ curl -sSL -i -H "Authorization: Bearer $LIBS_TOKEN" "https://libraries.cgr.dev/javascript-upstream/oh-my-agent/-/oh-my-agent-11.11.0.tgz"
HTTP/2 404
cache-control: no-store
content-type: application/json
npm-notice: tarball withheld by the malware block-list
vary: Accept-Encoding
x-blocked-reason: MALWARE_DETECTED
content-length: 138
date: Wed, 12 Aug 2026 06:00:25 GMT
server: Google Frontend
x-cloud-trace-context: 9551618c9351ce1b77a48472e44ae92b/4766926968487117864
traceparent: 00-9551618c9351ce1b77a48472e44ae92b-422786d252e78428-00
via: 1.1 google
alt-svc: h3=":443"; ma=2592000
{"error":"tarball withheld by the malware block-list","reason":"MALWARE_DETECTED","message":"tarball withheld by the malware block-list"}
]$
When package is not blocked, the output would look like below
$ curl -sSL -i -H "Authorization: Bearer $LIBS_TOKEN" "https://libraries.cgr.dev/javascript-upstream/pathos/-/pathos-0.2.0.tgz"
HTTP/2 302
content-type: text/html; charset=utf-8
location: https://9236a389bd48b984df91adc1bc924620.r2.cloudflarestorage.com/prod-serve-js-upstream/pathos/pathos-0.2.0.tgz?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Checksum-Mode=ENABLED&X-Amz-Credential=8bd5ac859236555f823421f3c1f72a59%2F20260812%2Fauto%2Fs3%2Faws4_request&X-Amz-Date=20260812T060009Z&X-Amz-Expires=900&X-Amz-SignedHeaders=host&x-id=GetObject&X-Amz-Signature=08d4842c42c14b7719518c3ab6166762c31730674c3b50ba5edfa0441087a703
vary: Accept-Encoding
content-length: 479
date: Wed, 12 Aug 2026 06:00:09 GMT
server: Google Frontend
traceparent: 00-7335d49724eddcb7308b61aacfcca782-6da3f09709d4c651-00
x-cloud-trace-context: 7335d49724eddcb7308b61aacfcca782/7900422702833649233
via: 1.1 google
alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000
HTTP/1.1 200 OK
Date: Wed, 12 Aug 2026 06:00:10 GMT
Content-Type: application/octet-stream
Content-Length: 3224
Connection: keep-alive
Accept-Ranges: bytes
ETag: "365a0cb2cab23c6460e14d3ff2d34297"
Last-Modified: Wed, 12 Aug 2026 05:21:02 GMT
Server: cloudflare
CF-RAY: a29d42163a2bb2b3-BOM
Comments
0 comments
Article is closed for comments.