Public scan — anyone with this URL can view this analysis. Sign up to track your own repos privately, run scheduled re-scans, and get AI fix prompts via your dashboard.

payloadcms/payload

https://github.com/payloadcms/payload · scanned 2026-05-16 13:37 UTC (1 day, 5 hours ago) · 10 languages

1367 findings (172 legacy + 1195 scanner) 8/10 scanners ran 100th percentile · Typescript · huge (>500K LoC) Scanner says 67 (higher by 20)

UNIFIED Repobility · multi-layer engine · AI coders

Complete repo analysis

Last scanned 3 days, 2 hours ago · v1 · 1365 findings from 2 sources. Findings combine the legacy security pipeline AND the multi-layer engine (atlas, wiring, flows, ranked) AND verified AI agent contributions.

JSON
Severity distribution — click a segment to filter
Active filters: layer: cicd × excluding tests × Reset all
Scan summary Repository scanned at 67.4/100 with 100.0% coverage. It contains 17048 nodes across 30 cross-layer flows, written primarily in mixed languages. Engine surfaced 1195 findings — concentrated in security (612), frontend (299), quality (205). Risk profile is high: 603 critical, 3 high, 120 medium. Recommended next step: open the security layer findings first — that's where the highest-impact wins live.

Showing 86 of 1365 findings. Click TP / FP to vote on a finding's accuracy — votes adjust the confidence weighting and improve detection across the platform.

high Legacy cicd docker conf 0.90 Database service has no persistent data volume
Mount the database data directory to a named Docker volume or managed persistent disk, and document backup and restore testing.
templates/with-vercel-website/docker-compose.yml:3 dockerlegacy
high Legacy cicd docker conf 0.90 Database service has no persistent data volume
Mount the database data directory to a named Docker volume or managed persistent disk, and document backup and restore testing.
templates/with-postgres/docker-compose.yml:19 dockerlegacy
high Legacy cicd docker conf 0.84 Database service publishes a host port
Use `expose` for service-to-service access, bind to 127.0.0.1 for local-only access, or protect the port with firewall rules.
templates/with-vercel-website/docker-compose.yml:3 dockerlegacy
high Legacy cicd docker conf 0.84 Database service publishes a host port
Use `expose` for service-to-service access, bind to 127.0.0.1 for local-only access, or protect the port with firewall rules.
templates/with-vercel-postgres/docker-compose.yml:19 dockerlegacy
high Legacy cicd docker conf 0.84 Database service publishes a host port
Use `expose` for service-to-service access, bind to 127.0.0.1 for local-only access, or protect the port with firewall rules.
templates/with-vercel-mongodb/docker-compose.yml:19 dockerlegacy
high Legacy cicd docker conf 0.84 Database service publishes a host port
Use `expose` for service-to-service access, bind to 127.0.0.1 for local-only access, or protect the port with firewall rules.
templates/with-postgres/docker-compose.yml:19 dockerlegacy
high Legacy cicd docker conf 0.84 Database service publishes a host port
Use `expose` for service-to-service access, bind to 127.0.0.1 for local-only access, or protect the port with firewall rules.
templates/website/docker-compose.yml:17 dockerlegacy
high Legacy cicd docker conf 0.84 Database service publishes a host port
Use `expose` for service-to-service access, bind to 127.0.0.1 for local-only access, or protect the port with firewall rules.
templates/blank/docker-compose.yml:19 dockerlegacy
high Legacy cicd docker conf 0.84 Database service publishes a host port
Use `expose` for service-to-service access, bind to 127.0.0.1 for local-only access, or protect the port with firewall rules.
templates/_template/docker-compose.yml:19 dockerlegacy
high Legacy cicd docker conf 0.84 Database service publishes a host port
Use `expose` for service-to-service access, bind to 127.0.0.1 for local-only access, or protect the port with firewall rules.
examples/remix/payload/docker-compose.yml:19 dockerlegacy
high Legacy cicd docker conf 0.84 Database service publishes a host port
Use `expose` for service-to-service access, bind to 127.0.0.1 for local-only access, or protect the port with firewall rules.
examples/localization/docker-compose.yml:17 dockerlegacy
high Legacy cicd docker conf 0.84 Database service publishes a host port
Use `expose` for service-to-service access, bind to 127.0.0.1 for local-only access, or protect the port with firewall rules.
examples/astro/payload/docker-compose.yml:19 dockerlegacy
high Legacy cicd docker conf 0.92 Dockerfile copies the entire context without .dockerignore
Create .dockerignore before using broad context copies, or copy only the required files and directories.
templates/with-vercel-website/Dockerfile:26 dockerlegacy
high Legacy cicd docker conf 0.92 Dockerfile copies the entire context without .dockerignore
Create .dockerignore before using broad context copies, or copy only the required files and directories.
templates/with-vercel-postgres/Dockerfile:26 dockerlegacy
high Legacy cicd docker conf 0.92 Dockerfile copies the entire context without .dockerignore
Create .dockerignore before using broad context copies, or copy only the required files and directories.
templates/with-vercel-mongodb/Dockerfile:26 dockerlegacy
high Legacy cicd docker conf 0.92 Dockerfile copies the entire context without .dockerignore
Create .dockerignore before using broad context copies, or copy only the required files and directories.
templates/with-postgres/Dockerfile:26 dockerlegacy
high Legacy cicd docker conf 0.92 Dockerfile copies the entire context without .dockerignore
Create .dockerignore before using broad context copies, or copy only the required files and directories.
templates/website/Dockerfile:26 dockerlegacy
high Legacy cicd docker conf 0.92 Dockerfile copies the entire context without .dockerignore
Create .dockerignore before using broad context copies, or copy only the required files and directories.
templates/blank/Dockerfile:26 dockerlegacy
high Legacy cicd docker conf 0.92 Dockerfile copies the entire context without .dockerignore
Create .dockerignore before using broad context copies, or copy only the required files and directories.
templates/_template/Dockerfile:26 dockerlegacy
high Legacy cicd docker conf 0.92 Dockerfile copies the entire context without .dockerignore
Create .dockerignore before using broad context copies, or copy only the required files and directories.
examples/remix/website/Dockerfile:9 dockerlegacy
high Legacy cicd docker conf 0.92 Dockerfile copies the entire context without .dockerignore
Create .dockerignore before using broad context copies, or copy only the required files and directories.
examples/remix/payload/Dockerfile:25 dockerlegacy
high Legacy cicd docker conf 0.92 Dockerfile copies the entire context without .dockerignore
Create .dockerignore before using broad context copies, or copy only the required files and directories.
examples/localization/Dockerfile:8 dockerlegacy
high Legacy cicd docker conf 0.92 Dockerfile copies the entire context without .dockerignore
Create .dockerignore before using broad context copies, or copy only the required files and directories.
examples/astro/payload/Dockerfile:25 dockerlegacy
medium Legacy cicd docker conf 0.94 Compose service `mongo` image uses the latest tag
Pin to a maintained version tag or digest and update it deliberately through dependency automation.
templates/with-vercel-mongodb/docker-compose.yml:19 dockerlegacy
medium Legacy cicd docker conf 0.94 Compose service `mongo` image uses the latest tag
Pin to a maintained version tag or digest and update it deliberately through dependency automation.
templates/website/docker-compose.yml:17 dockerlegacy
medium Legacy cicd docker conf 0.94 Compose service `mongo` image uses the latest tag
Pin to a maintained version tag or digest and update it deliberately through dependency automation.
templates/blank/docker-compose.yml:19 dockerlegacy
medium Legacy cicd docker conf 0.94 Compose service `mongo` image uses the latest tag
Pin to a maintained version tag or digest and update it deliberately through dependency automation.
templates/_template/docker-compose.yml:19 dockerlegacy
medium Legacy cicd docker conf 0.94 Compose service `mongo` image uses the latest tag
Pin to a maintained version tag or digest and update it deliberately through dependency automation.
examples/remix/payload/docker-compose.yml:19 dockerlegacy
medium Legacy cicd docker conf 0.94 Compose service `mongo` image uses the latest tag
Pin to a maintained version tag or digest and update it deliberately through dependency automation.
examples/localization/docker-compose.yml:17 dockerlegacy
medium Legacy cicd docker conf 0.94 Compose service `mongo` image uses the latest tag
Pin to a maintained version tag or digest and update it deliberately through dependency automation.
examples/astro/payload/docker-compose.yml:19 dockerlegacy
medium Legacy cicd docker conf 0.90 Compose service `postgres` image has no explicit tag
Pin the image to a supported version tag or digest, for example python:3.13-slim or image@sha256:...
templates/with-vercel-website/docker-compose.yml:3 dockerlegacy
medium Legacy cicd docker conf 0.94 Compose service `postgres` image uses the latest tag
Pin to a maintained version tag or digest and update it deliberately through dependency automation.
templates/with-vercel-postgres/docker-compose.yml:19 dockerlegacy
medium Legacy cicd docker conf 0.94 Compose service `postgres` image uses the latest tag
Pin to a maintained version tag or digest and update it deliberately through dependency automation.
templates/with-postgres/docker-compose.yml:19 dockerlegacy
medium Legacy cicd docker conf 0.86 Database dump or local database file is included in Docker build context
Move database dumps outside the Docker build context or exclude them with .dockerignore. Keep backup and restore artifacts in private object storage or a dedicated backup workflow.
.dockerignore dockerlegacy
medium Legacy cicd docker conf 0.88 Database service has no healthcheck
Add a database-native healthcheck such as pg_isready, mysqladmin ping, redis-cli ping, or the vendor's readiness command.
templates/with-vercel-website/docker-compose.yml:3 dockerlegacy
medium Legacy cicd docker conf 0.88 Database service has no healthcheck
Add a database-native healthcheck such as pg_isready, mysqladmin ping, redis-cli ping, or the vendor's readiness command.
templates/with-vercel-postgres/docker-compose.yml:19 dockerlegacy
medium Legacy cicd docker conf 0.88 Database service has no healthcheck
Add a database-native healthcheck such as pg_isready, mysqladmin ping, redis-cli ping, or the vendor's readiness command.
templates/with-vercel-mongodb/docker-compose.yml:19 dockerlegacy
medium Legacy cicd docker conf 0.88 Database service has no healthcheck
Add a database-native healthcheck such as pg_isready, mysqladmin ping, redis-cli ping, or the vendor's readiness command.
templates/with-postgres/docker-compose.yml:19 dockerlegacy
medium Legacy cicd docker conf 0.88 Database service has no healthcheck
Add a database-native healthcheck such as pg_isready, mysqladmin ping, redis-cli ping, or the vendor's readiness command.
templates/website/docker-compose.yml:17 dockerlegacy
medium Legacy cicd docker conf 0.88 Database service has no healthcheck
Add a database-native healthcheck such as pg_isready, mysqladmin ping, redis-cli ping, or the vendor's readiness command.
templates/blank/docker-compose.yml:19 dockerlegacy
medium Legacy cicd docker conf 0.88 Database service has no healthcheck
Add a database-native healthcheck such as pg_isready, mysqladmin ping, redis-cli ping, or the vendor's readiness command.
templates/_template/docker-compose.yml:19 dockerlegacy
medium Legacy cicd docker conf 0.88 Database service has no healthcheck
Add a database-native healthcheck such as pg_isready, mysqladmin ping, redis-cli ping, or the vendor's readiness command.
examples/remix/payload/docker-compose.yml:19 dockerlegacy
medium Legacy cicd docker conf 0.88 Database service has no healthcheck
Add a database-native healthcheck such as pg_isready, mysqladmin ping, redis-cli ping, or the vendor's readiness command.
examples/localization/docker-compose.yml:17 dockerlegacy
medium Legacy cicd docker conf 0.88 Database service has no healthcheck
Add a database-native healthcheck such as pg_isready, mysqladmin ping, redis-cli ping, or the vendor's readiness command.
examples/astro/payload/docker-compose.yml:19 dockerlegacy
medium Legacy cicd docker conf 0.90 Docker build context has no .dockerignore
Add .dockerignore with at least .git, .env, private keys, dependency folders, build outputs, and local databases.
.dockerignore dockerlegacy
medium Legacy cicd docker conf 0.82 Docker final stage has no non-root USER
Add a non-root USER in the final runtime stage after files and permissions are prepared.
examples/remix/website/Dockerfile:20 dockerlegacy
medium Legacy cicd docker conf 0.82 Docker final stage has no non-root USER
Add a non-root USER in the final runtime stage after files and permissions are prepared.
examples/localization/Dockerfile:12 dockerlegacy
medium Legacy cicd docker conf 0.90 Dockerfile installs dependencies after copying the full source tree
Copy dependency manifests first, install dependencies in a cached layer, then copy the rest of the source tree.
examples/remix/website/Dockerfile:17 dockerlegacy
medium Legacy cicd docker conf 0.90 Dockerfile installs dependencies after copying the full source tree
Copy dependency manifests first, install dependencies in a cached layer, then copy the rest of the source tree.
examples/localization/Dockerfile:9 dockerlegacy
medium 9-layer cicd supply-chain conf 1.00 GitHub Actions workflow grants broad write permissions
CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions.
.github/workflows/post-release-templates.yml supply-chaingithub-actionsleast-privilege
medium 9-layer cicd supply-chain conf 1.00 GitHub Actions workflow grants broad write permissions
CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions.
.github/workflows/main.yml supply-chaingithub-actionsleast-privilege
medium 9-layer cicd supply-chain conf 1.00 GitHub Actions workflow grants broad write permissions
CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions.
.github/workflows/publish-prerelease.yml supply-chaingithub-actionsleast-privilege
low Legacy cicd docker conf 0.68 App service does not wait for database health
Give the database a healthcheck and change the dependency to `depends_on: { db: { condition: service_healthy } }`.
templates/with-vercel-postgres/docker-compose.yml:3 dockerlegacy
low Legacy cicd docker conf 0.68 App service does not wait for database health
Give the database a healthcheck and change the dependency to `depends_on: { db: { condition: service_healthy } }`.
templates/with-vercel-mongodb/docker-compose.yml:3 dockerlegacy
low Legacy cicd docker conf 0.68 App service does not wait for database health
Give the database a healthcheck and change the dependency to `depends_on: { db: { condition: service_healthy } }`.
templates/with-postgres/docker-compose.yml:3 dockerlegacy
low Legacy cicd docker conf 0.68 App service does not wait for database health
Give the database a healthcheck and change the dependency to `depends_on: { db: { condition: service_healthy } }`.
templates/website/docker-compose.yml:3 dockerlegacy
low Legacy cicd docker conf 0.68 App service does not wait for database health
Give the database a healthcheck and change the dependency to `depends_on: { db: { condition: service_healthy } }`.
templates/blank/docker-compose.yml:3 dockerlegacy
low Legacy cicd docker conf 0.68 App service does not wait for database health
Give the database a healthcheck and change the dependency to `depends_on: { db: { condition: service_healthy } }`.
templates/_template/docker-compose.yml:3 dockerlegacy
low Legacy cicd docker conf 0.68 App service does not wait for database health
Give the database a healthcheck and change the dependency to `depends_on: { db: { condition: service_healthy } }`.
examples/remix/payload/docker-compose.yml:3 dockerlegacy
low Legacy cicd docker conf 0.68 App service does not wait for database health
Give the database a healthcheck and change the dependency to `depends_on: { db: { condition: service_healthy } }`.
examples/localization/docker-compose.yml:3 dockerlegacy
low Legacy cicd docker conf 0.68 App service does not wait for database health
Give the database a healthcheck and change the dependency to `depends_on: { db: { condition: service_healthy } }`.
examples/astro/payload/docker-compose.yml:3 dockerlegacy
low Legacy cicd docker conf 0.56 Compose service does not declare a runtime user
Set a non-root `user:` in Compose or ensure the final image stage has a non-root USER directive.
templates/with-vercel-postgres/docker-compose.yml:3 dockerlegacy
low Legacy cicd docker conf 0.56 Compose service does not declare a runtime user
Set a non-root `user:` in Compose or ensure the final image stage has a non-root USER directive.
templates/with-vercel-mongodb/docker-compose.yml:3 dockerlegacy
low Legacy cicd docker conf 0.56 Compose service does not declare a runtime user
Set a non-root `user:` in Compose or ensure the final image stage has a non-root USER directive.
templates/with-postgres/docker-compose.yml:3 dockerlegacy
low Legacy cicd docker conf 0.56 Compose service does not declare a runtime user
Set a non-root `user:` in Compose or ensure the final image stage has a non-root USER directive.
templates/website/docker-compose.yml:3 dockerlegacy
low Legacy cicd docker conf 0.56 Compose service does not declare a runtime user
Set a non-root `user:` in Compose or ensure the final image stage has a non-root USER directive.
templates/blank/docker-compose.yml:3 dockerlegacy
low Legacy cicd docker conf 0.56 Compose service does not declare a runtime user
Set a non-root `user:` in Compose or ensure the final image stage has a non-root USER directive.
templates/_template/docker-compose.yml:3 dockerlegacy
low Legacy cicd docker conf 0.56 Compose service does not declare a runtime user
Set a non-root `user:` in Compose or ensure the final image stage has a non-root USER directive.
examples/remix/payload/docker-compose.yml:3 dockerlegacy
low Legacy cicd docker conf 0.56 Compose service does not declare a runtime user
Set a non-root `user:` in Compose or ensure the final image stage has a non-root USER directive.
examples/localization/docker-compose.yml:3 dockerlegacy
low Legacy cicd docker conf 0.56 Compose service does not declare a runtime user
Set a non-root `user:` in Compose or ensure the final image stage has a non-root USER directive.
examples/astro/payload/docker-compose.yml:3 dockerlegacy
low Legacy cicd docker conf 0.62 Compose service lacks no-new-privileges hardening
Add `security_opt: ["no-new-privileges:true"]` unless the service has a documented need for privilege escalation.
templates/with-vercel-postgres/docker-compose.yml:3 dockerlegacy
low Legacy cicd docker conf 0.62 Compose service lacks no-new-privileges hardening
Add `security_opt: ["no-new-privileges:true"]` unless the service has a documented need for privilege escalation.
templates/with-vercel-mongodb/docker-compose.yml:3 dockerlegacy
low Legacy cicd docker conf 0.62 Compose service lacks no-new-privileges hardening
Add `security_opt: ["no-new-privileges:true"]` unless the service has a documented need for privilege escalation.
templates/with-postgres/docker-compose.yml:3 dockerlegacy
low Legacy cicd docker conf 0.62 Compose service lacks no-new-privileges hardening
Add `security_opt: ["no-new-privileges:true"]` unless the service has a documented need for privilege escalation.
templates/website/docker-compose.yml:3 dockerlegacy
low Legacy cicd docker conf 0.62 Compose service lacks no-new-privileges hardening
Add `security_opt: ["no-new-privileges:true"]` unless the service has a documented need for privilege escalation.
templates/blank/docker-compose.yml:3 dockerlegacy
low Legacy cicd docker conf 0.62 Compose service lacks no-new-privileges hardening
Add `security_opt: ["no-new-privileges:true"]` unless the service has a documented need for privilege escalation.
templates/_template/docker-compose.yml:3 dockerlegacy
low Legacy cicd docker conf 0.62 Compose service lacks no-new-privileges hardening
Add `security_opt: ["no-new-privileges:true"]` unless the service has a documented need for privilege escalation.
examples/remix/payload/docker-compose.yml:3 dockerlegacy
low Legacy cicd docker conf 0.62 Compose service lacks no-new-privileges hardening
Add `security_opt: ["no-new-privileges:true"]` unless the service has a documented need for privilege escalation.
examples/localization/docker-compose.yml:3 dockerlegacy
low Legacy cicd docker conf 0.62 Compose service lacks no-new-privileges hardening
Add `security_opt: ["no-new-privileges:true"]` unless the service has a documented need for privilege escalation.
examples/astro/payload/docker-compose.yml:3 dockerlegacy
low 9-layer cicd supply-chain conf 1.00 GitHub Action is tag-pinned rather than SHA-pinned
actions/checkout@v5 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA.
.github/workflows/activity-notifications.yml:19 supply-chaingithub-actionspinned-dependencies
low 9-layer cicd supply-chain conf 1.00 GitHub Action is tag-pinned rather than SHA-pinned
actions/checkout@v5 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA.
.github/workflows/post-release-templates.yml:21 supply-chaingithub-actionspinned-dependencies
low 9-layer cicd supply-chain conf 1.00 GitHub Action is tag-pinned rather than SHA-pinned
actions/checkout@v5 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA.
.github/workflows/post-release-templates.yml:73 supply-chaingithub-actionspinned-dependencies
low 9-layer cicd supply-chain conf 1.00 GitHub Action is tag-pinned rather than SHA-pinned
actions/checkout@v5 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA.
.github/workflows/post-release.yml:58 supply-chaingithub-actionspinned-dependencies
low 9-layer cicd supply-chain conf 1.00 GitHub Action is tag-pinned rather than SHA-pinned
actions/checkout@v5 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA.
.github/workflows/audit-dependencies.yml:27 supply-chaingithub-actionspinned-dependencies
low 9-layer cicd supply-chain conf 1.00 GitHub Action is tag-pinned rather than SHA-pinned
actions/checkout@v5 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA.
.github/workflows/publish-prerelease.yml:24 supply-chaingithub-actionspinned-dependencies
low 9-layer cicd supply-chain conf 1.00 package.json defines install-time lifecycle scripts
preinstall/install/postinstall/prepare scripts execute during dependency installation. Review them carefully for network calls, obfuscation, shell execution, or credential access.
package.json supply-chainnpminstall-scripts
{# ── 2026-05-17 Round 14: AI-agent bridge footer ────────────────────── Discoverability: the /agents/voting/ guide + MCP manifest exist but aren't linked from anywhere users actually land. Small, opt-in footer. #}
For AI agents: Voting guide (TP/FP) MCP manifest Stdio wrapper SARIF Integrate Findings queue Vote TP/FP on findings to calibrate the engine.
For AI agents + API integrations
Email me when this repo regresses
Free. We re-scan periodically; new criticals → your inbox. No signup required for the scan itself.
API access

This page is publicly accessible at: https://repobility.com/scan/836245fa-286f-4238-953c-95e0eac60349/

To check status programmatically (no auth required):

curl -s https://repobility.com/api/v1/public/scan/836245fa-286f-4238-953c-95e0eac60349/

Important — please don't re-submit the same URL repeatedly. The submission endpoint is idempotent: re-submitting the same git URL returns this same scan_token, not a new one. To re-scan this repo, sign up free and use the dashboard.