Adds an upload hook that sends each file to the CypherScan API through a presigned upload workflow and receives a scan verdict. Suspicious or malicious files are blocked before they become available in Payload. It requires Payload 3, Node.js 20 or newer, and a CypherScan API key.
CypherScan upload security plugin for Payload CMS.
Installation
npm i cypherscan-payload3
Stars
0
Forks
0
Open Issues
2 months ago
Last Updated
2
Weekly Downloads
v0.1.6
npm Version
18.8 KB
Unpacked Size
0
Dependencies
Trends appear after 7 days of data. Daily snapshots have not started yet.
Trends appear after 7 days of data. Daily snapshots have not started yet.
Each point is npm's rolling 7-day download count.
Health Score
Composite score based on GitHub activity, stars, npm downloads, publish recency, dependency count, and package size.
Badge for your README
[](https://payloaddirectory.dev/plugins/1265161598-root)<a href="https://payloaddirectory.dev/plugins/1265161598-root"><img src="https://payloaddirectory.dev/badge/1265161598-root.svg" alt="Payload Directory"></a>README
Protect Payload uploads before they reach production.
CypherScan securely scans every uploaded file using a presigned upload workflow and can automatically block suspicious or malicious files before they become available inside Payload CMS.
Install the plugin:
npm install cypherscan-payload
Configure the plugin inside your Payload configuration:
import { cypherScanPayload } from "cypherscan-payload";
export default buildConfig({
plugins: [
cypherScanPayload({
apiKey: process.env.CYPHERSCAN_API_KEY!,
apiUrl: "https://cyphernetsecurity.com",
failOpen: true,
}),
],
});
| Option | Description |
|---|---|
apiKey | CypherScan API key |
apiUrl | CypherScan API base URL |
collections | Restrict scanning to specific upload collections |
blockVerdicts | Verdicts that should block uploads |
failOpen | Enable Fail Open mode |
When a file is uploaded:
User Upload
│
▼
Payload Upload Hook
│
▼
Request Presigned Upload URL
│
▼
Temporary Secure Upload
│
▼
CypherScan Scan
│
▼
Verdict
│
├── Clean ─────► Upload allowed
│
└── Blocked ───► Upload rejected
Upload detected
│
▼
Presigned Upload
│
▼
CypherScan Scan
│
▼
Verdict: Clean
│
▼
File available inside Payload CMS
CypherScan supports two operating modes.
Uploads continue if the scanning service is temporarily unavailable.
Recommended for development environments.
Uploads are rejected when the scan cannot be completed.
Recommended for production environments requiring strict upload enforcement.
The plugin logs scan activity through the Payload logger.
Validated with:
failOpen=true)failOpen=false)Payload plugin scans use the canonical CypherScan API workflow:
POST /api/v1/upload/presignPOST /api/v1/scan with the returned objectKeyThe plugin sends a stable client identity:
x-cypherscan-client: payload-plugin
With an active CypherScan Agent subscription, successful authenticated scans
automatically become API_INTEGRATION Agent observations. No second Agent
event call is required for normal Payload plugin scans.
Agent can then use those observations for meaningful-change detection, bounded verification, Controller attention decisions, alerts, and activity history.
MIT License
Copyright (c) 2026 CypherNet Security Inc.
See the LICENSE file for details.
Built by CypherNet Security Inc.
Tags
stripe
Connect Payload to Stripe for payments and subscriptions
997.7k/wk45.4kv3
mux video
Upload and manage Mux videos from the Payload admin with public or signed playback
872.7k/wk83v3
payload plugin scheduler
Date field that queues native scheduled-publish jobs for drafts, with schedule status shown in the admin
6727/wk32v3
payload plugin netlify deploy
Publish button in the Payload admin that builds a Netlify site, streams the log and publishes a preview
6720/wk29v3
payload isr
Revalidate Next.js paths and cache tags when Payload documents change, with optional full rebuild fallback
650/wk3v3
payload markdown docs
Sync a repo-local Markdown docs tree into Payload and render it in a Next.js site
630/wk4v3