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.
98 of your 133 findings came from Repobility's proprietary detections. ✓ Repobility tags below mark them.

Scan timing: clone 12.03s · analysis 2.4s · 41.9 MB · GitHub API rate-limit (preflight)

Zie619/n8n-workflows

https://github.com/Zie619/n8n-workflows · scanned 2026-06-05 10:29 UTC (5 days, 14 hours ago) · 10 languages

402 raw signals (132 security + 270 graph) 11/13 scanners ran 52nd percentile · Python · small (2-20K LoC) System graph score 59 (higher by 11)

UNIFIED Repobility · multi-layer engine · AI coders

Complete repo analysis

Last scanned 5 days, 14 hours ago · v2 · 142 actionable findings from 2 signal sources. 125 repeated signals grouped for readability. Security checks, system graph analysis, and verified AI-agent feedback are merged into one review queue.

JSON
Score breakdown â 2026-05-18-v5
Component Sub-score Weight Contribution
structure_score 65.0 0.15 9.75
security_score 100.0 0.25 25.00
testing_score 9.0 0.20 1.80
documentation_score 87.0 0.15 13.05
practices_score 91.0 0.15 13.65
code_quality 63.0 0.10 6.30
Overall 1.00 69.5
security_score may be inflated — optional security scanners were skipped on this fast scan
Severity distribution — click a segment to filter
Active filters: excluding tests × Reset all
Scan summary Quality grade B- (70/100). Dimensions: security 100, maintainability 65. 132 findings (32 security). 9,661 lines analyzed.

Showing 134 of 142 actionable findings. 267 raw detector signals were grouped into reader-sized issues. Click TP / FP to vote on a finding's accuracy — votes adjust the confidence weighting and improve detection across the platform.

high Security checks quality Quality conf 1.00 ✓ Repobility [MINED107] Missing import: `collections` used but not imported: The file uses `collections.something(...)` but never imports `collections`. This raises NameError at runtime the first time the line executes.
Add `import collections` at the top of the file.
src/community_features.py:393
critical Security checks cicd CI/CD security conf 0.98 Compose service mounts the Docker socket
Avoid mounting docker.sock. Use a narrow proxy, rootless build service, or provider-native deployment credentials.
docker-compose.yml:25 CI/CD securitycontainers
critical System graph security security conf 1.00 Insecure pattern 'private_key_in_repo' in workflows/Code/0924_Code_Respondtowebhook_Process_Webhook.json:206
Found a known-risky pattern (private_key_in_repo). Review and replace if possible.
workflows/Code/0924_Code_Respondtowebhook_Process_Webhook.json:206 Private key in repo
critical System graph security Secrets conf 1.00 3 occurrences Possible secret in workflows/Splitout/0457_Splitout_Webhook_Create_Webhook.json
Detected pattern matching password_literal. Rotate the credential and move to a secret manager.
lines 740, 754, 793
workflows/Splitout/0457_Splitout_Webhook_Create_Webhook.json:740, 754, 793 (3 hits)
critical System graph security Secrets conf 1.00 3 occurrences Possible secret in workflows/Splitout/1283_Splitout_Webhook_Automation_Webhook.json
Detected pattern matching password_literal. Rotate the credential and move to a secret manager.
lines 740, 754, 793
workflows/Splitout/1283_Splitout_Webhook_Automation_Webhook.json:740, 754, 793 (3 hits)
high Security checks 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: GET /api/workflows/{workflow_id}/ratings.
Add ownership, tenant, relationship, or policy checks before reading or mutating the target object.
src/community_features.py:457
high Security checks 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: GET /api/workflows/{workflow_id}/stats.
Add ownership, tenant, relationship, or policy checks before reading or mutating the target object.
src/community_features.py:463
high Security checks 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: POST /api/workflows/{workflow_id}/download.
Add ownership, tenant, relationship, or policy checks before reading or mutating the target object.
src/community_features.py:487
high Security checks 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: POST /api/workflows/{workflow_id}/view.
Add ownership, tenant, relationship, or policy checks before reading or mutating the target object.
src/community_features.py:481
low Security checks quality Quality conf 1.00 ✓ Repobility [MINED006] Overcatch Baseexception: except BaseException: ... — prevents Ctrl+C and SystemExit from working.
Review and fix per the pattern semantics. See CWE-705 / for context.
run.py:172
high Security checks quality Quality conf 1.00 ✓ Repobility 25 occurrences [MINED108] `self.get_db_connection` used but never assigned in __init__: Method `search_workflows_intelligent` of class `WorkflowAssistant` reads `self.get_db_connection`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance.
Initialize `self.get_db_connection = <default>` in __init__, or add a class-level default.
3 files, 25 locations
src/performance_monitor.py:56, 63, 71, 74, 104, 105, 106, 121, +9 more (17 hits)
workflow_db.py:167, 172, 208, 217, 481, 492, 743 (7 hits)
src/ai_assistant.py:39
high Security checks quality Quality conf 0.80 ✓ Repobility [MINED112] FastAPI POST /api/reindex has no auth: Handler `reindex_workflows` is registered with router/app.post(...) but no Depends/Security parameter is declared and no auth marker appears in the function body.
Add Depends(get_current_user) or Security(...) to the handler signature. If the route is truly public, document it with a code comment so the rule knows it's intentional.
api_server.py:574
high Security checks quality Quality conf 0.80 ✓ Repobility [MINED112] FastAPI POST /api/v2/analytics/custom has no auth: Handler `get_custom_analytics` is registered with router/app.post(...) but no Depends/Security parameter is declared and no auth marker appears in the function body.
Add Depends(get_current_user) or Security(...) to the handler signature. If the route is truly public, document it with a code comment so the rule knows it's intentional.
src/enhanced_api.py:209
high Security checks quality Quality conf 0.80 ✓ Repobility [MINED112] FastAPI POST /api/v2/recommendations has no auth: Handler `get_workflow_recommendations` is registered with router/app.post(...) but no Depends/Security parameter is declared and no auth marker appears in the function body.
Add Depends(get_current_user) or Security(...) to the handler signature. If the route is truly public, document it with a code comment so the rule knows it's intentional.
src/enhanced_api.py:170
high Security checks quality Quality conf 0.80 ✓ Repobility [MINED112] FastAPI POST /api/v2/workflows/search has no auth: Handler `advanced_workflow_search` is registered with router/app.post(...) but no Depends/Security parameter is declared and no auth marker appears in the function body.
Add Depends(get_current_user) or Security(...) to the handler signature. If the route is truly public, document it with a code comment so the rule knows it's intentional.
src/enhanced_api.py:128
high Security checks quality Quality conf 0.80 ✓ Repobility [MINED112] FastAPI POST /api/workflows/{workflow_id}/download has no auth: Handler `track_workflow_download` is registered with router/app.post(...) but no Depends/Security parameter is declared and no auth marker appears in the function body.
Add Depends(get_current_user) or Security(...) to the handler signature. If the route is truly public, document it with a code comment so the rule knows it's intentional.
src/community_features.py:488
high Security checks quality Quality conf 0.80 ✓ Repobility [MINED112] FastAPI POST /api/workflows/{workflow_id}/rate has no auth: Handler `rate_workflow` is registered with router/app.post(...) but no Depends/Security parameter is declared and no auth marker appears in the function body.
Add Depends(get_current_user) or Security(...) to the handler signature. If the route is truly public, document it with a code comment so the rule knows it's intentional.
src/community_features.py:444
high Security checks quality Quality conf 0.80 ✓ Repobility [MINED112] FastAPI POST /api/workflows/{workflow_id}/view has no auth: Handler `track_workflow_view` is registered with router/app.post(...) but no Depends/Security parameter is declared and no auth marker appears in the function body.
Add Depends(get_current_user) or Security(...) to the handler signature. If the route is truly public, document it with a code comment so the rule knows it's intentional.
src/community_features.py:482
high Security checks quality Quality conf 0.80 ✓ Repobility [MINED112] FastAPI POST /auth/register has no auth: Handler `register_user` is registered with router/app.post(...) but no Depends/Security parameter is declared and no auth marker appears in the function body.
Add Depends(get_current_user) or Security(...) to the handler signature. If the route is truly public, document it with a code comment so the rule knows it's intentional.
src/user_management.py:415
high Security checks quality Quality conf 0.80 ✓ Repobility [MINED112] FastAPI POST /chat has no auth: Handler `chat_with_assistant` is registered with router/app.post(...) but no Depends/Security parameter is declared and no auth marker appears in the function body.
Add Depends(get_current_user) or Security(...) to the handler signature. If the route is truly public, document it with a code comment so the rule knows it's intentional.
src/ai_assistant.py:257
high Security checks quality Quality conf 0.80 ✓ Repobility [MINED112] FastAPI POST /integrations/airtable/export has no auth: Handler `export_airtable` is registered with router/app.post(...) but no Depends/Security parameter is declared and no auth marker appears in the function body.
Add Depends(get_current_user) or Security(...) to the handler signature. If the route is truly public, document it with a code comment so the rule knows it's intentional.
src/integration_hub.py:281
high Security checks quality Quality conf 0.80 ✓ Repobility [MINED112] FastAPI POST /integrations/discord/notify has no auth: Handler `notify_discord` is registered with router/app.post(...) but no Depends/Security parameter is declared and no auth marker appears in the function body.
Add Depends(get_current_user) or Security(...) to the handler signature. If the route is truly public, document it with a code comment so the rule knows it's intentional.
src/integration_hub.py:271
high Security checks quality Quality conf 0.80 ✓ Repobility [MINED112] FastAPI POST /integrations/slack/notify has no auth: Handler `notify_slack` is registered with router/app.post(...) but no Depends/Security parameter is declared and no auth marker appears in the function body.
Add Depends(get_current_user) or Security(...) to the handler signature. If the route is truly public, document it with a code comment so the rule knows it's intentional.
src/integration_hub.py:261
high Security checks quality Quality conf 0.80 ✓ Repobility [MINED112] FastAPI POST /monitor/alerts/{alert_id}/resolve has no auth: Handler `resolve_alert` is registered with router/app.post(...) but no Depends/Security parameter is declared and no auth marker appears in the function body.
Add Depends(get_current_user) or Security(...) to the handler signature. If the route is truly public, document it with a code comment so the rule knows it's intentional.
src/performance_monitor.py:309
high Security checks quality Quality conf 0.80 ✓ Repobility [MINED112] FastAPI POST /webhooks/{endpoint} has no auth: Handler `handle_webhook_endpoint` is registered with router/app.post(...) but no Depends/Security parameter is declared and no auth marker appears in the function body.
Add Depends(get_current_user) or Security(...) to the handler signature. If the route is truly public, document it with a code comment so the rule knows it's intentional.
src/integration_hub.py:305
high Security checks quality Quality conf 0.80 ✓ Repobility [MINED113] Express POST /api/reindex has no auth: Express route POST /api/reindex declared without an auth middleware in its handler chain. Destructive methods (POST/PUT/DELETE/PATCH) on unauthenticated routes are OWASP A01:2021 broken access control.
Add an auth middleware: app.post('/api/reindex', requireAuth, handler) — or mount the router under app.use('/api', authMiddleware) and ensure the path is covered. If truly public, mark with a comment.
src/server.js:219
high Security checks software dependencies conf 0.90 ✓ Repobility [MINED118] Dockerfile FROM `node:20` not pinned by digest: `FROM node:20` resolves the tag at build time. The registry CAN re-push a different image for the same tag, so every build is potentially different. Production images should pin to `image@sha256:...` for reproducibility + supply-chain integrity.
Replace with: `FROM node:20@sha256:<digest>`. Get the digest from `docker manifest inspect`. Re-pin via a scheduled bot (Renovate, Dependabot).
.devcontainer/Dockerfile:1
high Security checks software dependencies conf 0.90 ✓ Repobility [MINED118] Dockerfile FROM `python:3.11-slim-bookworm` not pinned by digest: `FROM python:3.11-slim-bookworm` resolves the tag at build time. The registry CAN re-push a different image for the same tag, so every build is potentially different. Production images should pin to `image@sha256:...` for reproducibility + supply-chain integrity.
Replace with: `FROM python:3.11-slim-bookworm@sha256:<digest>`. Get the digest from `docker manifest inspect`. Re-pin via a scheduled bot (Renovate, Dependabot).
Dockerfile:2
low Security checks cicd CI/CD security conf 0.90 ✓ Repobility 40 occurrences GitHub Action is tag-pinned rather than SHA-pinned
[MINED115] Action `actions/checkout` pinned to mutable ref `@v6`: `uses: actions/checkout@v6` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-actions/changed-files compromise (2025) instantly affect ~23K repos. Pin to a 40-char commit SHA + lo…
5 files, 40 locations
.github/workflows/ci-cd.yml:25, 28, 33, 95, 130, 174, 191 (14 hits)
.github/workflows/deploy-pages.yml:25, 28, 52, 55, 69 (10 hits)
.github/workflows/pages-deploy.yml:32, 35, 38, 45 (8 hits)
.github/workflows/docker.yml:26, 121 (4 hits)
.github/workflows/update-readme.yml:18, 23 (4 hits)
CI/CD securitySupply chainGitHub Actions
medium Security checks cicd CI/CD security conf 0.90 ✓ Repobility 11 occurrences GitHub Action is tag-pinned rather than SHA-pinned
[MINED115] Action `github/codeql-action/upload-sarif` pinned to mutable ref `@v3`: `uses: github/codeql-action/upload-sarif@v3` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-actions/changed-files compromise (2025) instantly affect ~23K repos…
2 files, 11 locations
.github/workflows/ci-cd.yml:113, 133, 136, 144, 155 (6 hits)
.github/workflows/docker.yml:29, 32, 124, 129, 132 (5 hits)
CI/CD securitySupply chainGitHub Actions
high Security checks cicd CI/CD security conf 0.90 ✓ Repobility GitHub Action is tag-pinned rather than SHA-pinned
[MINED115] Action `aquasecurity/trivy-action` pinned to mutable ref `@master`: `uses: aquasecurity/trivy-action@master` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-actions/changed-files compromise (2025) instantly affect ~23K repos. Pin to…
.github/workflows/ci-cd.yml:98 CI/CD securitySupply chainGitHub Actions
high System graph security Secrets conf 1.00 .env file present in repo: ai-stack/.env
A raw .env file is in the working tree. Verify it isn't committed and that secrets are in a vault.
Config
high System graph hardware Supply chain conf 1.00 Dockerfile pipes a remote installer into a shell
Executing downloaded code during image build gives the remote endpoint build-time code execution. Prefer pinned packages or verify downloaded installers by checksum/signature.
.devcontainer/Dockerfile:65 containersRemote installer
high System graph security auth conf 1.00 FastAPI POST `rate_workflow` without auth dependency — src/community_features.py:443
`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public.
src/community_features.py:443 securityAuth fastapi unauth mutation
high System graph security auth conf 1.00 FastAPI POST `reindex_workflows` without auth dependency — api_server.py:573
`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public.
api_server.py:573 securityAuth fastapi unauth mutation
high System graph security auth conf 1.00 FastAPI POST `track_workflow_download` without auth dependency — src/community_features.py:487
`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public.
src/community_features.py:487 securityAuth fastapi unauth mutation
high System graph security auth conf 1.00 FastAPI POST `track_workflow_view` without auth dependency — src/community_features.py:481
`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public.
src/community_features.py:481 securityAuth fastapi unauth mutation
high System graph cicd CI/CD security conf 1.00 GitHub Action tracks a moving branch
aquasecurity/trivy-action@master can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA.
.github/workflows/ci-cd.yml:98 CI/CD securitySupply chainGithub actions
high System graph security security conf 1.00 Insecure pattern 'chmod_777' in workflows/Code/1500_Code_Webhook_Automation_Webhook.json:719
Found a known-risky pattern (chmod_777). Review and replace if possible.
workflows/Code/1500_Code_Webhook_Automation_Webhook.json:719 Chmod 777
high System graph security security conf 1.00 Insecure pattern 'chmod_777' in workflows/Code/1815_Code_Webhook_Automation_Webhook.json:719
Found a known-risky pattern (chmod_777). Review and replace if possible.
workflows/Code/1815_Code_Webhook_Automation_Webhook.json:719 Chmod 777
high System graph security security conf 1.00 Insecure pattern 'chmod_777' in workflows/Code/1825_Code_Webhook_Automation_Webhook.json:812
Found a known-risky pattern (chmod_777). Review and replace if possible.
workflows/Code/1825_Code_Webhook_Automation_Webhook.json:812 Chmod 777
high System graph security security conf 1.00 Insecure pattern 'chmod_777' in workflows/Code/1832_Code_Webhook_Automation_Webhook.json:609
Found a known-risky pattern (chmod_777). Review and replace if possible.
workflows/Code/1832_Code_Webhook_Automation_Webhook.json:609 Chmod 777
high System graph security security conf 1.00 Insecure pattern 'chmod_777' in workflows/Code/1966_Code_Webhook_Automation_Webhook.json:719
Found a known-risky pattern (chmod_777). Review and replace if possible.
workflows/Code/1966_Code_Webhook_Automation_Webhook.json:719 Chmod 777
high System graph security security conf 1.00 Insecure pattern 'eval_used' in workflows/Github/1149_GitHub_Manual_Create_Scheduled.json:202
Found a known-risky pattern (eval_used). Review and replace if possible.
workflows/Github/1149_GitHub_Manual_Create_Scheduled.json:202 Eval used
medium Security checks 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.
high Security checks security auth conf 0.74 [AUC002] Low visible authorization coverage in route inventory: Only 10.5% 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.
high Security checks security auth conf 0.66 [AUC004] Admin route does not show super_admin separation: An administrative route was detected without nearby evidence that platform super_admin access is separated from tenant/application admin access. Endpoint: POST /api/reindex.
Define whether this endpoint is admin-only or super_admin-only, then enforce that distinction in code and .repobility/access.yml.
api_server.py:573
medium Security checks security auth conf 0.72 [AUC012] FastAPI interactive docs may be exposed by framework defaults: FastAPI exposes /docs, /redoc, and /openapi.json by default. Public production APIs should explicitly disable those defaults, protect them behind admin authentication, or publish a reviewed OpenAPI spec with declared security requirements.
Set docs_url=None, redoc_url=None, and openapi_url=None for production apps unless the docs are intentionally public and protected by routing, ingress, or an authenticated docs handler.
high Security checks quality Quality conf 0.72 Agent control bridge may listen on a network interface without visible auth
Bind local agent bridges to 127.0.0.1 by default. If remote access is required, require a bearer token or mTLS, enforce origin/CSRF checks for browser clients, and document the threat model.
ai-stack/docker-compose.yml:80
low Security checks quality Error handling conf 0.55 ✓ Repobility 22 occurrences Broad exception handler needs review
This handler catches Exception/BaseException. It is actionable when it swallows errors without logging, re-raising, or returning a structured error. Handlers that intentionally convert exceptions into typed error results should not be treated as high risk.
8 files, 22 locations
api_server.py:91, 280, 609, 727, 787, 794 (6 hits)
src/integration_hub.py:62, 85, 104, 157, 228 (5 hits)
src/community_features.py:155, 370, 454 (3 hits)
src/performance_monitor.py:78, 117, 230 (3 hits)
run.py:165, 174 (2 hits)
scripts/generate_search_index.py:271
scripts/update_readme_stats.py:227
workflow_db.py:526
Error handlingquality
medium Security checks cicd CI/CD security conf 0.94 4 occurrences Compose service `n8n` image uses the latest tag
Pin to a maintained version tag or digest and update it deliberately through dependency automation.
2 files, 4 locations
ai-stack/docker-compose.yml:15, 51, 73 (3 hits)
docker-compose.yml:2
CI/CD securitycontainers
medium Security checks cicd CI/CD security conf 0.76 Dockerfile copies broad context with incomplete .dockerignore
Tighten .dockerignore or replace COPY . with explicit COPY statements.
Dockerfile:46 CI/CD securitycontainers
high Security checks quality Quality conf 0.74 Frontend API reference is not matched by discovered backend routes
Add the backend route, update the frontend constant to the implemented endpoint, or document that the route is served by another service and exclude it with .repobilityignore.
static/mobile-interface.html:469
medium Security checks 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
medium System graph hardware Security conf 1.00 Dockerfile runs as root: .devcontainer/Dockerfile
No non-root USER set. Containers running as root expand the blast radius of any vulnerability inside the image.
Container
medium System graph cicd CI/CD security conf 1.00 3 occurrences 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.
3 files, 3 locations
.github/workflows/ci-cd.yml
.github/workflows/deploy-pages.yml
.github/workflows/pages-deploy.yml
CI/CD securitySupply chainGithub actions
medium System graph security security conf 1.00 Insecure pattern 'weak_hash' in workflows/Splitout/1437_Splitout_Code_Automation_Triggered.json:1033
Found a known-risky pattern (weak_hash). Review and replace if possible.
workflows/Splitout/1437_Splitout_Code_Automation_Triggered.json:1033 Weak hash
medium System graph security security conf 1.00 Insecure pattern 'weak_hash' in workflows/Splitout/1834_Splitout_Code_Automation_Triggered.json:1033
Found a known-risky pattern (weak_hash). Review and replace if possible.
workflows/Splitout/1834_Splitout_Code_Automation_Triggered.json:1033 Weak hash
medium System graph quality Tests conf 1.00 Very low test-to-source ratio
1 test file(s) for 22 source file(s) (ratio 0.05). Consider adding integration or unit tests for critical paths.
Coverage
low Security checks cicd CI/CD security conf 0.72 .dockerignore misses sensitive defaults
Add missing patterns such as .env, .git, private keys, certificates, dependency folders, and local databases.
.dockerignore CI/CD securitycontainers
low Security checks 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.
high Security checks cicd CI/CD security conf 0.56 3 occurrences 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.
lines 15, 51, 73
ai-stack/docker-compose.yml:15, 51, 73 (3 hits)
CI/CD securitycontainers
high Security checks cicd CI/CD security conf 0.62 4 occurrences Compose service lacks no-new-privileges hardening
Add `security_opt: ["no-new-privileges:true"]` unless the service has a documented need for privilege escalation.
2 files, 4 locations
ai-stack/docker-compose.yml:15, 51, 73 (3 hits)
docker-compose.yml:2
CI/CD securitycontainers
low Security checks cicd CI/CD security conf 0.72 Dockerfile installs recommended OS packages
Add `--no-install-recommends` and explicitly list only packages the image needs.
.devcontainer/Dockerfile:7 CI/CD securitycontainers
low Security checks cicd CI/CD security conf 0.74 Dockerfile leaves apt package indexes in the image layer
End the apt install layer with `rm -rf /var/lib/apt/lists/*`.
.devcontainer/Dockerfile:7 CI/CD securitycontainers
low Security checks quality Quality conf 0.60 3 occurrences Duplicated implementation block across source files
Duplicate implementation blocks are maintenance debt. Keep them visible, but they are not a high-severity defect unless the duplicated logic is security-sensitive or drifting.
3 files, 3 locations
scripts/update_readme_stats.py:35
src/performance_monitor.py:264
src/user_management.py:410
duplicationquality
low Security checks quality Quality conf 0.50 Public web app has no humans.txt
Add humans.txt with team ownership, contact URL, key documentation links, and the last-updated date.
humans.txt
low Security checks quality Quality conf 0.74 Public web app has no robots.txt
Add robots.txt at the web root or a framework-native robots route. Include an explicit Sitemap directive and disallow only private paths.
robots.txt
low Security checks quality Quality conf 0.72 Public web app has no sitemap
Add sitemap.xml, a sitemap index, or a framework-native sitemap route and reference it from robots.txt.
sitemap.xml
low System graph hardware Supply chain conf 1.00 Docker base image is tag-pinned but not digest-pinned: node:20
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:1 containersPinned dependencies
low System graph hardware Supply chain conf 1.00 Docker base image is tag-pinned but not digest-pinned: python:3.11-slim-bookworm
Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter.
Dockerfile:2 containersPinned dependencies
low System graph software Dead code candidate conf 1.00 File has no detected symbols: medcards-ai/next.config.ts
Source file with no class/function declarations — possible config, dead code, or scratch file.
low System graph software Dead code candidate conf 1.00 File has no detected symbols: medcards-ai/src/types/database.ts
Source file with no class/function declarations — possible config, dead code, or scratch file.
low System graph software Dead code candidate conf 1.00 File has no detected symbols: medcards-ai/tailwind.config.ts
Source file with no class/function declarations — possible config, dead code, or scratch file.
low System graph frontend Frontend quality conf 1.00 Icon-only button without accessible name — docs/js/search.js:284
A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work. Why: P3 in CHECKLIST.md — icon-only buttons skipped a title. Rule id: fq.button.no-label
Fq button no label
low System graph security security conf 1.00 Insecure pattern 'debug_true' in src/enhanced_api.py:551
Found a known-risky pattern (debug_true). Review and replace if possible.
src/enhanced_api.py:551 Debug true
low System graph quality Integrity conf 1.00 12 occurrences Near-duplicate function bodies in 2 places
Functions with the same first-5-line body hash: src/performance_monitor.py:get_historical_metrics, src/performance_monitor.py:get_historical_metrics This is *the* AI-coder failure mode (4× more duplication in vibe-coded repos — see https://jw.hn/ai-code-hygiene). Consolidate or document why they'r…
12 occurrences
repo-level (12 hits)
duplicatesduplication
low System graph software Dead code conf 1.00 Possibly dead Python function: create_collection
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
src/community_features.py:339
low System graph software Dead code conf 1.00 Possibly dead Python function: register_integration
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
src/integration_hub.py:33
low System graph software Dead code conf 1.00 Possibly dead Python function: register_webhook
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
src/integration_hub.py:231
low System graph software Dead code conf 1.00 Possibly dead Python function: require_admin
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
src/user_management.py:405
low System graph software Dead code conf 1.00 Possibly dead Python function: run_indexing
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
api_server.py:605
low System graph frontend Frontend quality conf 1.00 Stray `console.log` in TS/JS — src/index-workflows.js:7
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
Fq console leak
low System graph frontend Frontend quality conf 1.00 Stray `console.log` in TS/JS — src/init-db.js:8
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
Fq console leak
low System graph frontend Frontend quality conf 1.00 Stray `console.log` in TS/JS — src/server.js:225
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
Fq console leak
low System graph api Wiring conf 1.00 Unused endpoint: DELETE /users/{user_id}
`src/user_management.py` declares `DELETE /users/{user_id}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code — consider removing or documenting who consumes it.
Unused endpoint
low System graph api Wiring conf 1.00 Unused endpoint: GET /
`api_server.py` declares `GET /` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code — consider removing or documenting who consumes it.
Unused endpoint
low System graph api Wiring conf 1.00 Unused endpoint: GET /analytics/dashboard
`src/analytics_engine.py` declares `GET /analytics/dashboard` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code — consider removing or documenting who consumes it.
Unused endpoint
low System graph api Wiring conf 1.00 Unused endpoint: GET /analytics/insights
`src/analytics_engine.py` declares `GET /analytics/insights` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code — consider removing or documenting who consumes it.
Unused endpoint
low System graph api Wiring conf 1.00 Unused endpoint: GET /analytics/overview
`src/analytics_engine.py` declares `GET /analytics/overview` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code — consider removing or documenting who consumes it.
Unused endpoint
low System graph api Wiring conf 1.00 Unused endpoint: GET /analytics/trends
`src/analytics_engine.py` declares `GET /analytics/trends` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code — consider removing or documenting who consumes it.
Unused endpoint
low System graph api Wiring conf 1.00 Unused endpoint: GET /api/categories
`api_server.py` declares `GET /api/categories` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code — consider removing or documenting who consumes it.
Unused endpoint
low System graph api Wiring conf 1.00 Unused endpoint: GET /api/category-mappings
`api_server.py` declares `GET /api/category-mappings` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code — consider removing or documenting who consumes it.
Unused endpoint
low System graph api Wiring conf 1.00 Unused endpoint: GET /api/integrations
`api_server.py` declares `GET /api/integrations` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code — consider removing or documenting who consumes it.
Unused endpoint
low System graph api Wiring conf 1.00 Unused endpoint: GET /api/stats
`api_server.py` declares `GET /api/stats` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code — consider removing or documenting who consumes it.
Unused endpoint
low System graph api Wiring conf 1.00 Unused endpoint: GET /api/workflows
`api_server.py` declares `GET /api/workflows` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code — consider removing or documenting who consumes it.
Unused endpoint
low System graph api Wiring conf 1.00 Unused endpoint: GET /api/workflows/:filename
`src/server.js` declares `GET /api/workflows/:filename` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code — consider removing or documenting who consumes it.
Unused endpoint
low System graph api Wiring conf 1.00 Unused endpoint: GET /api/workflows/:filename/diagram
`src/server.js` declares `GET /api/workflows/:filename/diagram` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code — consider removing or documenting who consumes it.
Unused endpoint
low System graph api Wiring conf 1.00 Unused endpoint: GET /api/workflows/:filename/download
`src/server.js` declares `GET /api/workflows/:filename/download` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code — consider removing or documenting who consumes it.
Unused endpoint
low System graph api Wiring conf 1.00 Unused endpoint: GET /api/workflows/category/{category}
`api_server.py` declares `GET /api/workflows/category/{category}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code — consider removing or documenting who consumes it.
Unused endpoint
low System graph api Wiring conf 1.00 Unused endpoint: GET /api/workflows/most-popular
`src/community_features.py` declares `GET /api/workflows/most-popular` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code — consider removing or documenting who consumes it.
Unused endpoint
low System graph api Wiring conf 1.00 Unused endpoint: GET /api/workflows/top-rated
`src/community_features.py` declares `GET /api/workflows/top-rated` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code — consider removing or documenting who consumes it.
Unused endpoint
low System graph api Wiring conf 1.00 Unused endpoint: GET /api/workflows/{filename}
`api_server.py` declares `GET /api/workflows/{filename}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code — consider removing or documenting who consumes it.
Unused endpoint
low System graph api Wiring conf 1.00 Unused endpoint: GET /api/workflows/{filename}/diagram
`api_server.py` declares `GET /api/workflows/{filename}/diagram` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code — consider removing or documenting who consumes it.
Unused endpoint
low System graph api Wiring conf 1.00 Unused endpoint: GET /api/workflows/{filename}/download
`api_server.py` declares `GET /api/workflows/{filename}/download` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code — consider removing or documenting who consumes it.
Unused endpoint
low System graph api Wiring conf 1.00 Unused endpoint: GET /api/workflows/{workflow_id}/ratings
`src/community_features.py` declares `GET /api/workflows/{workflow_id}/ratings` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code — consider removing or documenting who consumes it.
Unused endpoint
low System graph api Wiring conf 1.00 Unused endpoint: GET /api/workflows/{workflow_id}/stats
`src/community_features.py` declares `GET /api/workflows/{workflow_id}/stats` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code — consider removing or documenting who consumes it.
Unused endpoint
low System graph api Wiring conf 1.00 Unused endpoint: GET /auth/dashboard
`src/user_management.py` declares `GET /auth/dashboard` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code — consider removing or documenting who consumes it.
Unused endpoint
low System graph api Wiring conf 1.00 Unused endpoint: GET /auth/me
`src/user_management.py` declares `GET /auth/me` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code — consider removing or documenting who consumes it.
Unused endpoint
low System graph api Wiring conf 1.00 Unused endpoint: GET /chat/interface
`src/ai_assistant.py` declares `GET /chat/interface` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code — consider removing or documenting who consumes it.
Unused endpoint
low System graph api Wiring conf 1.00 Unused endpoint: GET /integrations/dashboard
`src/integration_hub.py` declares `GET /integrations/dashboard` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code — consider removing or documenting who consumes it.
Unused endpoint
low System graph api Wiring conf 1.00 Unused endpoint: GET /integrations/status
`src/integration_hub.py` declares `GET /integrations/status` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code — consider removing or documenting who consumes it.
Unused endpoint
low System graph api Wiring conf 1.00 Unused endpoint: GET /monitor/alerts
`src/performance_monitor.py` declares `GET /monitor/alerts` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code — consider removing or documenting who consumes it.
Unused endpoint
low System graph api Wiring conf 1.00 Unused endpoint: GET /monitor/dashboard
`src/performance_monitor.py` declares `GET /monitor/dashboard` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code — consider removing or documenting who consumes it.
Unused endpoint
low System graph api Wiring conf 1.00 Unused endpoint: GET /monitor/history
`src/performance_monitor.py` declares `GET /monitor/history` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code — consider removing or documenting who consumes it.
Unused endpoint
low System graph api Wiring conf 1.00 Unused endpoint: GET /monitor/metrics
`src/performance_monitor.py` declares `GET /monitor/metrics` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code — consider removing or documenting who consumes it.
Unused endpoint
low System graph api Wiring conf 1.00 Unused endpoint: GET /users
`src/user_management.py` declares `GET /users` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code — consider removing or documenting who consumes it.
Unused endpoint
low System graph api Wiring conf 1.00 Unused endpoint: GET /users/{user_id}
`src/user_management.py` declares `GET /users/{user_id}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code — consider removing or documenting who consumes it.
Unused endpoint
low System graph api Wiring conf 1.00 Unused endpoint: POST /api/reindex
`api_server.py` declares `POST /api/reindex` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code — consider removing or documenting who consumes it.
Unused endpoint
low System graph api Wiring conf 1.00 Unused endpoint: POST /api/workflows/{workflow_id}/download
`src/community_features.py` declares `POST /api/workflows/{workflow_id}/download` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code — consider removing or documenting who consumes …
Unused endpoint
low System graph api Wiring conf 1.00 Unused endpoint: POST /api/workflows/{workflow_id}/rate
`src/community_features.py` declares `POST /api/workflows/{workflow_id}/rate` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code — consider removing or documenting who consumes it.
Unused endpoint
low System graph api Wiring conf 1.00 Unused endpoint: POST /api/workflows/{workflow_id}/view
`src/community_features.py` declares `POST /api/workflows/{workflow_id}/view` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code — consider removing or documenting who consumes it.
Unused endpoint
low System graph api Wiring conf 1.00 Unused endpoint: POST /auth/login
`src/user_management.py` declares `POST /auth/login` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code — consider removing or documenting who consumes it.
Unused endpoint
low System graph api Wiring conf 1.00 Unused endpoint: POST /auth/register
`src/user_management.py` declares `POST /auth/register` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code — consider removing or documenting who consumes it.
Unused endpoint
low System graph api Wiring conf 1.00 Unused endpoint: POST /chat
`src/ai_assistant.py` declares `POST /chat` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code — consider removing or documenting who consumes it.
Unused endpoint
low System graph api Wiring conf 1.00 Unused endpoint: POST /integrations/airtable/export
`src/integration_hub.py` declares `POST /integrations/airtable/export` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code — consider removing or documenting who consumes it.
Unused endpoint
low System graph api Wiring conf 1.00 Unused endpoint: POST /integrations/discord/notify
`src/integration_hub.py` declares `POST /integrations/discord/notify` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code — consider removing or documenting who consumes it.
Unused endpoint
low System graph api Wiring conf 1.00 Unused endpoint: POST /integrations/github/sync
`src/integration_hub.py` declares `POST /integrations/github/sync` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code — consider removing or documenting who consumes it.
Unused endpoint
low System graph api Wiring conf 1.00 Unused endpoint: POST /integrations/notion/sync
`src/integration_hub.py` declares `POST /integrations/notion/sync` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code — consider removing or documenting who consumes it.
Unused endpoint
low System graph api Wiring conf 1.00 Unused endpoint: POST /integrations/slack/notify
`src/integration_hub.py` declares `POST /integrations/slack/notify` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code — consider removing or documenting who consumes it.
Unused endpoint
low System graph api Wiring conf 1.00 Unused endpoint: POST /monitor/alerts/{alert_id}/resolve
`src/performance_monitor.py` declares `POST /monitor/alerts/{alert_id}/resolve` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code — consider removing or documenting who consumes it.
Unused endpoint
low System graph api Wiring conf 1.00 Unused endpoint: POST /webhooks/{endpoint}
`src/integration_hub.py` declares `POST /webhooks/{endpoint}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code — consider removing or documenting who consumes it.
Unused endpoint
low System graph api Wiring conf 1.00 Unused endpoint: PUT /users/{user_id}
`src/user_management.py` declares `PUT /users/{user_id}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code — consider removing or documenting who consumes it.
Unused endpoint
low System graph api Wiring conf 1.00 Unused endpoint: USE /api/
`src/server.js` declares `USE /api/` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code — consider removing or documenting who consumes it.
Unused endpoint
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/4a7efed7-46a7-4006-9909-6a976d6f9d00/

To check status programmatically (no auth required):

curl -s https://repobility.com/api/v1/public/scan/4a7efed7-46a7-4006-9909-6a976d6f9d00/

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.