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.

rails/rails

https://github.com/rails/rails.git · scanned 2026-05-16 13:30 UTC (1 day, 7 hours ago) · 10 languages

248 findings (20 legacy + 228 scanner) 8/10 scanners ran Scanner says 74 (lower by 2)

UNIFIED Repobility · multi-layer engine · AI coders

Complete repo analysis

Last scanned 1 day, 10 hours ago · v3 · 91 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
{# ── 2026-05-17 R27 #5: score breakdown panel ────────────────────── Surfaces the score_breakdown JSON that's been silently stored on Repository for months. Turns hidden math into a trust signal. #}
Severity distribution — click a segment to filter
Active filters: excluding tests × Reset all
Scan summary Repository scanned at 74.4/100 with 100.0% coverage. It contains 5161 nodes across 0 cross-layer flows, written primarily in mixed languages. Engine surfaced 76 findings — concentrated in security (31), software (24), cicd (10). Risk profile is high: 9 critical, 7 high, 23 medium. Recommended next step: open the security layer findings first — that's where the highest-impact wins live.

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

critical 9-layer security secrets conf 1.00 Possible secret in actionpack/lib/action_controller/metal/http_authentication.rb
Detected pattern matching password_literal. Rotate the credential and move to a secret manager.
actionpack/lib/action_controller/metal/http_authentication.rb:17 secrets
critical 9-layer security secrets conf 1.00 Possible secret in activemodel/lib/active_model/secure_password.rb
Detected pattern matching password_literal. Rotate the credential and move to a secret manager.
activemodel/lib/active_model/secure_password.rb:103 secrets
critical 9-layer security secrets conf 1.00 Possible secret in activemodel/lib/active_model/secure_password.rb
Detected pattern matching password_literal. Rotate the credential and move to a secret manager.
activemodel/lib/active_model/secure_password.rb:110 secrets
critical 9-layer security secrets conf 1.00 Possible secret in activemodel/lib/active_model/secure_password.rb
Detected pattern matching password_literal. Rotate the credential and move to a secret manager.
activemodel/lib/active_model/secure_password.rb:287 secrets
critical 9-layer security secrets conf 1.00 Possible secret in activerecord/lib/active_record/base.rb
Detected pattern matching password_literal. Rotate the credential and move to a secret manager.
activerecord/lib/active_record/base.rb:57 secrets
critical 9-layer security secrets conf 1.00 Possible secret in activerecord/lib/active_record/connection_handling.rb
Detected pattern matching password_literal. Rotate the credential and move to a secret manager.
activerecord/lib/active_record/connection_handling.rb:17 secrets
critical 9-layer security secrets conf 1.00 Possible secret in activerecord/lib/active_record/tasks/mysql_database_tasks.rb
Detected pattern matching password_literal. Rotate the credential and move to a secret manager.
activerecord/lib/active_record/tasks/mysql_database_tasks.rb:69 secrets
critical 9-layer security secrets conf 1.00 Possible secret in activerecord/lib/active_record/token_for.rb
Detected pattern matching password_literal. Rotate the credential and move to a secret manager.
activerecord/lib/active_record/token_for.rb:100 secrets
high Legacy security auth conf 0.70 [AUC003] Object-level route lacks visible authorization: A route with an object id-like parameter does not show nearby authentication or authorization evidence. This is a BOLA/IDOR review target. Endpoint: ANY /:inbound_email_id/incinerate.
Add ownership, tenant, relationship, or policy checks before reading or mutating the target object.
actionmailbox/config/routes.rb:24 authlegacy
high Legacy security auth conf 0.70 [AUC003] Object-level route lacks visible authorization: A route with an object id-like parameter does not show nearby authentication or authorization evidence. This is a BOLA/IDOR review target. Endpoint: ANY /:inbound_email_id/reroute.
Add ownership, tenant, relationship, or policy checks before reading or mutating the target object.
actionmailbox/config/routes.rb:23 authlegacy
high Legacy software ssrf conf 1.00 [SEC029] Server-Side Request Forgery (SSRF) — outbound HTTP from user input: Outbound HTTP request to a user-controlled URL without allowlist validation. Attackers can probe internal services (169.254.169.254 metadata, internal Kubernetes endpoints, file:// URIs), exfiltrate data, or pivot through your network. SSRF is OWASP A10:2021 and a frequent foothold in cloud breaches.
Validate the URL against an allowlist BEFORE fetching: ALLOWED = {'images.example.com', 'cdn.example.com'} host = urlparse(url).hostname if host not in ALLOWED: abort(400) Or use a server-side proxy (Imgproxy / serve-files-only-from-S3) that isolates outbound network access from the request h…
actionmailbox/app/controllers/rails/conductor/action_mailbox/inbound_emails/sources_controller.rb:12 ssrflegacy
high Legacy software ssrf conf 1.00 [SEC029] Server-Side Request Forgery (SSRF) — outbound HTTP from user input: Outbound HTTP request to a user-controlled URL without allowlist validation. Attackers can probe internal services (169.254.169.254 metadata, internal Kubernetes endpoints, file:// URIs), exfiltrate data, or pivot through your network. SSRF is OWASP A10:2021 and a frequent foothold in cloud breaches.
Validate the URL against an allowlist BEFORE fetching: ALLOWED = {'images.example.com', 'cdn.example.com'} host = urlparse(url).hostname if host not in ALLOWED: abort(400) Or use a server-side proxy (Imgproxy / serve-files-only-from-S3) that isolates outbound network access from the request h…
actionmailbox/app/controllers/rails/conductor/action_mailbox/reroutes_controller.rb:12 ssrflegacy
high Legacy software ssrf conf 1.00 [SEC029] Server-Side Request Forgery (SSRF) — outbound HTTP from user input: Outbound HTTP request to a user-controlled URL without allowlist validation. Attackers can probe internal services (169.254.169.254 metadata, internal Kubernetes endpoints, file:// URIs), exfiltrate data, or pivot through your network. SSRF is OWASP A10:2021 and a frequent foothold in cloud breaches.
Validate the URL against an allowlist BEFORE fetching: ALLOWED = {'images.example.com', 'cdn.example.com'} host = urlparse(url).hostname if host not in ALLOWED: abort(400) Or use a server-side proxy (Imgproxy / serve-files-only-from-S3) that isolates outbound network access from the request h…
actionmailbox/app/controllers/rails/conductor/action_mailbox/inbound_emails_controller.rb:20 ssrflegacy
high 9-layer security owasp conf 1.00 Insecure pattern 'eval_used' in activestorage/app/assets/javascripts/activestorage.esm.js:490
Found a known-risky pattern (eval_used). Review and replace if possible.
activestorage/app/assets/javascripts/activestorage.esm.js:490 owaspeval_used
high 9-layer security owasp conf 1.00 Insecure pattern 'eval_used' in activestorage/app/assets/javascripts/activestorage.js:489
Found a known-risky pattern (eval_used). Review and replace if possible.
activestorage/app/assets/javascripts/activestorage.js:489 owaspeval_used
high 9-layer security owasp conf 1.00 Insecure pattern 'eval_used' in activesupport/lib/active_support/core_ext/string/output_safety.rb:220
Found a known-risky pattern (eval_used). Review and replace if possible.
activesupport/lib/active_support/core_ext/string/output_safety.rb:220 owaspeval_used
high 9-layer security owasp conf 1.00 Insecure pattern 'eval_used' in railties/lib/rails/commands/query/query_command.rb:102
Found a known-risky pattern (eval_used). Review and replace if possible.
railties/lib/rails/commands/query/query_command.rb:102 owaspeval_used
high 9-layer security owasp conf 1.00 Insecure pattern 'eval_used' in railties/lib/rails/commands/runner/runner_command.rb:38
Found a known-risky pattern (eval_used). Review and replace if possible.
railties/lib/rails/commands/runner/runner_command.rb:38 owaspeval_used
medium Legacy security auth conf 0.92 [AUC001] No Repobility access matrix policy found: The repository uses web/API frameworks but does not define .repobility/access.yml or equivalent authorization documentation.
Add .repobility/access.yml mapping routes to anonymous, authenticated, owner, admin, and super_admin. Keep business-specific rules in the repo so CI can enforce them.
authlegacy
medium Legacy security auth conf 0.74 [AUC002] Low visible authorization coverage in route inventory: Only 0.0% of discovered routes show nearby authentication, authorization, middleware, or public-route evidence.
Review the access matrix and add explicit framework auth declarations or policy-file exceptions for intentionally public routes.
authlegacy
medium Legacy quality practices conf 1.00 [CFG006] Missing .gitignore: No .gitignore file. Risk of committing secrets and build artifacts.
Add a .gitignore appropriate for your language/framework.
practiceslegacy
medium Legacy quality quality conf 0.78 Public web service has no security.txt
Add /.well-known/security.txt with Contact, Expires, Canonical, Preferred-Languages, and Policy fields. Keep the contact endpoint monitored.
.well-known/security.txt qualitylegacy
medium 9-layer cicd supply-chain conf 1.00 GitHub Action is tag-pinned rather than SHA-pinned
ruby/setup-ruby@v1 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA.
.github/workflows/rails-new-docker.yml:21 supply-chaingithub-actionspinned-dependencies
medium 9-layer cicd supply-chain conf 1.00 GitHub Action is tag-pinned rather than SHA-pinned
ruby/setup-ruby@v1 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA.
.github/workflows/release.yml:20 supply-chaingithub-actionspinned-dependencies
medium 9-layer cicd supply-chain conf 1.00 GitHub Action is tag-pinned rather than SHA-pinned
rubygems/[email protected] can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA.
.github/workflows/release.yml:28 supply-chaingithub-actionspinned-dependencies
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/release.yml supply-chaingithub-actionsleast-privilege
medium 9-layer security owasp conf 1.00 Insecure pattern 'weak_hash' in actioncable/lib/action_cable/subscription_adapter/postgresql.rb:61
Found a known-risky pattern (weak_hash). Review and replace if possible.
actioncable/lib/action_cable/subscription_adapter/postgresql.rb:61 owaspweak_hash
medium 9-layer security owasp conf 1.00 Insecure pattern 'weak_hash' in actionmailbox/app/controllers/action_mailbox/ingresses/mandrill/inbound_emails_controller.rb:78
Found a known-risky pattern (weak_hash). Review and replace if possible.
actionmailbox/app/controllers/action_mailbox/ingresses/mandrill/inbound_emails_controller.rb:78 owaspweak_hash
medium 9-layer security owasp conf 1.00 Insecure pattern 'weak_hash' in actionmailbox/app/models/action_mailbox/inbound_email/message_id.rb:17
Found a known-risky pattern (weak_hash). Review and replace if possible.
actionmailbox/app/models/action_mailbox/inbound_email/message_id.rb:17 owaspweak_hash
medium 9-layer security owasp conf 1.00 Insecure pattern 'weak_hash' in actionpack/lib/action_dispatch/middleware/cookies.rb:309
Found a known-risky pattern (weak_hash). Review and replace if possible.
actionpack/lib/action_dispatch/middleware/cookies.rb:309 owaspweak_hash
medium 9-layer security owasp conf 1.00 Insecure pattern 'weak_hash' in activerecord/lib/active_record/encryption/config.rb:29
Found a known-risky pattern (weak_hash). Review and replace if possible.
activerecord/lib/active_record/encryption/config.rb:29 owaspweak_hash
medium 9-layer security owasp conf 1.00 Insecure pattern 'weak_hash' in activerecord/lib/active_record/encryption/key.rb:24
Found a known-risky pattern (weak_hash). Review and replace if possible.
activerecord/lib/active_record/encryption/key.rb:24 owaspweak_hash
medium 9-layer security owasp conf 1.00 Insecure pattern 'weak_hash' in activerecord/lib/active_record/tasks/database_tasks.rb:647
Found a known-risky pattern (weak_hash). Review and replace if possible.
activerecord/lib/active_record/tasks/database_tasks.rb:647 owaspweak_hash
medium 9-layer security owasp conf 1.00 Insecure pattern 'weak_hash' in activestorage/app/models/active_storage/variation.rb:80
Found a known-risky pattern (weak_hash). Review and replace if possible.
activestorage/app/models/active_storage/variation.rb:80 owaspweak_hash
medium 9-layer security owasp conf 1.00 Insecure pattern 'weak_hash' in activestorage/lib/active_storage.rb:375
Found a known-risky pattern (weak_hash). Review and replace if possible.
activestorage/lib/active_storage.rb:375 owaspweak_hash
medium 9-layer security owasp conf 1.00 Insecure pattern 'weak_hash' in activestorage/lib/active_storage/service.rb:172
Found a known-risky pattern (weak_hash). Review and replace if possible.
activestorage/lib/active_storage/service.rb:172 owaspweak_hash
medium 9-layer security owasp conf 1.00 Insecure pattern 'weak_hash' in activestorage/lib/active_storage/service/gcs_service.rb:131
Found a known-risky pattern (weak_hash). Review and replace if possible.
activestorage/lib/active_storage/service/gcs_service.rb:131 owaspweak_hash
medium 9-layer security owasp conf 1.00 Insecure pattern 'weak_hash' in activestorage/lib/active_storage/service/s3_service.rb:136
Found a known-risky pattern (weak_hash). Review and replace if possible.
activestorage/lib/active_storage/service/s3_service.rb:136 owaspweak_hash
medium 9-layer security owasp conf 1.00 Insecure pattern 'weak_hash' in activesupport/lib/active_support/digest.rb:9
Found a known-risky pattern (weak_hash). Review and replace if possible.
activesupport/lib/active_support/digest.rb:9 owaspweak_hash
medium 9-layer security owasp conf 1.00 Insecure pattern 'weak_hash' in activesupport/lib/active_support/key_generator.rb:25
Found a known-risky pattern (weak_hash). Review and replace if possible.
activesupport/lib/active_support/key_generator.rb:25 owaspweak_hash
medium 9-layer security owasp conf 1.00 Insecure pattern 'weak_hash' in railties/lib/rails/application/configuration.rb:150
Found a known-risky pattern (weak_hash). Review and replace if possible.
railties/lib/rails/application/configuration.rb:150 owaspweak_hash
low Legacy security auth conf 0.76 [AUC005] No authorization-focused tests detected: No test files with common authorization, ownership, 403, admin, or super_admin assertions were found.
Add regression tests for anonymous denial, cross-user object denial, admin role limits, and super_admin-only behavior.
authlegacy
low Legacy quality quality conf 0.86 Duplicated implementation block across source files
Extract the shared behavior into one function/module or delete the inactive duplicate after proving which path is used.
actionpack/lib/action_controller/form_builder.rb:2 qualitylegacy
low Legacy quality quality conf 0.86 Duplicated implementation block across source files
Extract the shared behavior into one function/module or delete the inactive duplicate after proving which path is used.
actioncable/lib/action_cable.rb:23 qualitylegacy
low Legacy quality quality conf 0.86 Duplicated implementation block across source files
Extract the shared behavior into one function/module or delete the inactive duplicate after proving which path is used.
actioncable/app/assets/javascripts/actioncable.js:1 qualitylegacy
low Legacy quality quality conf 0.86 Duplicated implementation block across source files
Extract the shared behavior into one function/module or delete the inactive duplicate after proving which path is used.
actioncable/app/assets/javascripts/actioncable.esm.js:1 qualitylegacy
low Legacy quality documentation No LICENSE file
Add a LICENSE file to your repository. Use choosealicense.com to pick the right license (MIT for permissive, Apache 2.0 for patent protection, GPL for copyleft).
documentationlegacy
low 9-layer hardware coverage conf 1.00 Containers defined but no K8s/orchestration manifest found
Repo has Dockerfiles/compose but no Kubernetes/Nomad manifests. If the target deployment is K8s, the manifests may live in a separate ops repo.
coveragedeployment
low 9-layer hardware supply-chain conf 1.00 Docker base image is tag-pinned but not digest-pinned: ghcr.io/rails/devcontainer/images/ruby:${VARIANT}
Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter.
.devcontainer/Dockerfile:5 supply-chaindockerpinned-dependencies
low 9-layer software dead-code-candidate conf 1.00 File has no detected symbols: actioncable/app/javascript/action_cable/adapters.js
Source file with no class/function declarations — possible config, dead code, or scratch file.
dead-code-candidate
low 9-layer software dead-code-candidate conf 1.00 File has no detected symbols: actioncable/app/javascript/action_cable/index_with_name_deprecation.js
Source file with no class/function declarations — possible config, dead code, or scratch file.
dead-code-candidate
low 9-layer software dead-code-candidate conf 1.00 File has no detected symbols: actioncable/app/javascript/action_cable/internal.js
Source file with no class/function declarations — possible config, dead code, or scratch file.
dead-code-candidate
low 9-layer software dead-code-candidate conf 1.00 File has no detected symbols: actioncable/app/javascript/action_cable/logger.js
Source file with no class/function declarations — possible config, dead code, or scratch file.
dead-code-candidate
low 9-layer software dead-code-candidate conf 1.00 File has no detected symbols: actioncable/rollup.config.js
Source file with no class/function declarations — possible config, dead code, or scratch file.
dead-code-candidate
low 9-layer software dead-code-candidate conf 1.00 File has no detected symbols: actioncable/rollup.config.test.js
Source file with no class/function declarations — possible config, dead code, or scratch file.
dead-code-candidate
low 9-layer software dead-code-candidate conf 1.00 File has no detected symbols: actioncable/test/javascript/src/test.js
Source file with no class/function declarations — possible config, dead code, or scratch file.
dead-code-candidate
low 9-layer software dead-code-candidate conf 1.00 File has no detected symbols: actioncable/test/javascript/src/test_helpers/consumer_test_helper.js
Source file with no class/function declarations — possible config, dead code, or scratch file.
dead-code-candidate
low 9-layer software dead-code-candidate conf 1.00 File has no detected symbols: actioncable/test/javascript/src/unit/connection_monitor_test.js
Source file with no class/function declarations — possible config, dead code, or scratch file.
dead-code-candidate
low 9-layer software dead-code-candidate conf 1.00 File has no detected symbols: actioncable/test/javascript/src/unit/connection_test.js
Source file with no class/function declarations — possible config, dead code, or scratch file.
dead-code-candidate
low 9-layer software dead-code-candidate conf 1.00 File has no detected symbols: actioncable/test/javascript/src/unit/consumer_test.js
Source file with no class/function declarations — possible config, dead code, or scratch file.
dead-code-candidate
low 9-layer software dead-code-candidate conf 1.00 File has no detected symbols: actioncable/test/javascript/src/unit/subscription_guarantor_test.js
Source file with no class/function declarations — possible config, dead code, or scratch file.
dead-code-candidate
low 9-layer software dead-code-candidate conf 1.00 File has no detected symbols: actioncable/test/javascript/src/unit/subscription_test.js
Source file with no class/function declarations — possible config, dead code, or scratch file.
dead-code-candidate
low 9-layer software dead-code-candidate conf 1.00 File has no detected symbols: actioncable/test/javascript/src/unit/subscriptions_test.js
Source file with no class/function declarations — possible config, dead code, or scratch file.
dead-code-candidate
low 9-layer software dead-code-candidate conf 1.00 File has no detected symbols: actionmailbox/test/dummy/app/assets/config/manifest.js
Source file with no class/function declarations — possible config, dead code, or scratch file.
dead-code-candidate
low 9-layer software dead-code-candidate conf 1.00 File has no detected symbols: actionmailbox/test/dummy/app/javascript/packs/application.js
Source file with no class/function declarations — possible config, dead code, or scratch file.
dead-code-candidate
low 9-layer software dead-code-candidate conf 1.00 File has no detected symbols: actionpack/test/fixtures/public/gzip/application-a71b3024f80aea3181c09774ca17e712.js
Source file with no class/function declarations — possible config, dead code, or scratch file.
dead-code-candidate
low 9-layer software dead-code-candidate conf 1.00 File has no detected symbols: actionpack/test/fixtures/公共/gzip/application-a71b3024f80aea3181c09774ca17e712.js
Source file with no class/function declarations — possible config, dead code, or scratch file.
dead-code-candidate
low 9-layer software dead-code-candidate conf 1.00 File has no detected symbols: actiontext/rollup.config.js
Source file with no class/function declarations — possible config, dead code, or scratch file.
dead-code-candidate
low 9-layer software dead-code-candidate conf 1.00 File has no detected symbols: actiontext/test/dummy/app/assets/config/manifest.js
Source file with no class/function declarations — possible config, dead code, or scratch file.
dead-code-candidate
low 9-layer software dead-code-candidate conf 1.00 File has no detected symbols: actiontext/test/dummy/app/javascript/application.js
Source file with no class/function declarations — possible config, dead code, or scratch file.
dead-code-candidate
low 9-layer software dead-code-candidate conf 1.00 File has no detected symbols: activestorage/app/javascript/activestorage/algorithms/md5_algorithm.js
Source file with no class/function declarations — possible config, dead code, or scratch file.
dead-code-candidate
low 9-layer software dead-code-candidate conf 1.00 File has no detected symbols: activestorage/rollup.config.js
Source file with no class/function declarations — possible config, dead code, or scratch file.
dead-code-candidate
low 9-layer software dead-code-candidate conf 1.00 File has no detected symbols: activestorage/test/dummy/app/assets/config/manifest.js
Source file with no class/function declarations — possible config, dead code, or scratch file.
dead-code-candidate
low 9-layer cicd supply-chain conf 1.00 GitHub Action is tag-pinned rather than SHA-pinned
actions/checkout@v6 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA.
.github/workflows/devcontainer-shellcheck.yml:20 supply-chaingithub-actionspinned-dependencies
low 9-layer frontend frontend-quality conf 1.00 Stray `console.log` in TS/JS — actioncable/app/assets/javascripts/action_cable.js:495
Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable. Why: Hygiene — easy to leak debug output. Rule id: fq.console-leak
frontend-qualityfq.console-leak
low 9-layer frontend frontend-quality conf 1.00 Stray `console.log` in TS/JS — actioncable/app/javascript/action_cable/index_with_name_deprecation.js:2
Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable. Why: Hygiene — easy to leak debug output. Rule id: fq.console-leak
frontend-qualityfq.console-leak
low 9-layer quality complexity conf 1.00 Very large file: activestorage/app/assets/javascripts/activestorage.js (1323 lines)
Files with >800 lines often hide complexity hotspots and discourage tests.
complexity
low 9-layer quality complexity conf 1.00 Very large file: guides/assets/javascripts/@hotwired--turbo.js (3938 lines)
Files with >800 lines often hide complexity hotspots and discourage tests.
complexity
info 9-layer quality integrity conf 1.00 Commented-code block (5 lines) in guides/assets/javascripts/guides.js:180
A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest.
integritycommented-codedead-code
info 9-layer quality integrity conf 1.00 Commented-code block (6 lines) in actioncable/app/javascript/action_cable/subscription.js:12
A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest.
integritycommented-codedead-code
info 9-layer quality integrity conf 1.00 Commented-code block (7 lines) in railties/lib/rails/generators/rails/app/templates/app/views/pwa/service-worker.js:27
A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest.
integritycommented-codedead-code
info 9-layer api coverage conf 1.00 No API endpoints detected
The scanner did not find FastAPI/Flask/Express/NestJS/GraphQL/gRPC routes. If this repo exposes APIs, the framework may be unsupported.
coverage
info 9-layer frontend coverage conf 1.00 No frontend routes/components detected
No React/Vue/Next routes were found. This is fine for backend-only repos.
coverage
{# ── 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/3eeb1910-4d08-4be7-b475-8aae92530237/

To check status programmatically (no auth required):

curl -s https://repobility.com/api/v1/public/scan/3eeb1910-4d08-4be7-b475-8aae92530237/

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.