← Back to scan
File as GitHub Issue repo: miracodeai/mira

Push this scan report to miracodeai/mira

Click the green button below to open GitHub’s new-issue form, pre-filled with the report title, summary table, top findings, and an embedded score-card image. No authentication needed — you review on GitHub before submitting. Repobility is credited as the scanner.

Embedded score card image

This image will render at the top of the issue body. Hosted on Repobility, refreshes automatically after re-scans.

Repobility score card

Issue title

innerHTML XSS — template literal with server-supplied data

Curate findings to include

Pick exactly which findings appear in the issue body. By default the top 5 are included. Uncheck noise, check what matters.

Top 5 (default)
Severity Rule Title File:line
CRIT SEC022 [SEC022] Database URL With Embedded Credential: A database connection URL contains an emb… src/mira/config.py:149
CRIT generic-api-key Detected a Generic API Key, potentially exposing access to various services and sensitive… tests/fixtures/sample.diff:27
CRIT SEC001 [SEC001] Hardcoded Password: Hardcoded password found in source code. scripts/start_local.sh:40
CRIT MINED114 Admin endpoint without auth: PUT /api/admin/settings src/mira/dashboard/api.py:441
HIGH SEC040 [SEC040] innerHTML XSS — template literal with server-supplied data: Setting .innerHTML w… ui/mira/src/pages/packages.tsx:186
HIGH SEC040 [SEC040] innerHTML XSS — template literal with server-supplied data: Setting .innerHTML w… ui/mira/src/components/ui/chart.tsx:95
HIGH SEC040 [SEC040] innerHTML XSS — template literal with server-supplied data: Setting .innerHTML w… ui/mira/src/components/dashboard/depend…:244
HIGH SEC103 [SEC103] LDAP injection — non-constant search filter: User input concatenated into an LDA… src/mira/security/osv.py:113
HIGH MINED001 [MINED001] Bare Except Pass: except: pass or except Exception: pass — silently swallows e… src/mira/security/osv.py:109
HIGH MINED001 [MINED001] Bare Except Pass: except: pass or except Exception: pass — silently swallows e… src/mira/llm/response_parser.py:254
HIGH MINED001 [MINED001] Bare Except Pass: except: pass or except Exception: pass — silently swallows e… src/mira/index/context.py:82
HIGH SEC128 [SEC128] Async function without await — fire-and-forget Promise (AI mistake): Async call … src/mira/security/poller.py:125
HIGH SEC128 [SEC128] Async function without await — fire-and-forget Promise (AI mistake): Async call … src/mira/index/context.py:219
HIGH SEC029 [SEC029] Server-Side Request Forgery (SSRF) — outbound HTTP from user input: Outbound HTT… src/mira/security/osv.py:150
HIGH SEC029 [SEC029] Server-Side Request Forgery (SSRF) — outbound HTTP from user input: Outbound HTT… src/mira/cli.py:125
HIGH MINED115 Action `actions/checkout` pinned to mutable ref `@v6` .github/workflows/ci.yml:79
HIGH MINED115 Action `actions/setup-node` pinned to mutable ref `@v6` .github/workflows/ci.yml:57
HIGH MINED115 Action `actions/checkout` pinned to mutable ref `@v6` .github/workflows/ci.yml:56
HIGH MINED115 Action `astral-sh/setup-uv` pinned to mutable ref `@v7` .github/workflows/ci.yml:27
HIGH MINED115 Action `actions/checkout` pinned to mutable ref `@v6` .github/workflows/ci.yml:24
HIGH MINED115 Action `actions/checkout` pinned to mutable ref `@v6` .github/workflows/docker-publish.yml:19
HIGH MINED115 Action `astral-sh/setup-uv` pinned to mutable ref `@v7` .github/workflows/evals.yml:30
HIGH MINED115 Action `actions/checkout` pinned to mutable ref `@v6` .github/workflows/evals.yml:27
HIGH MINED131 pre-commit hook `https://github.com/pre-commit/mirrors-mypy` pinned to mutable rev `v1.13… .pre-commit-config.yaml:23
HIGH MINED131 pre-commit hook `https://github.com/pre-commit/pre-commit-hooks` pinned to mutable rev `v… .pre-commit-config.yaml:2
HIGH MINED118 Dockerfile FROM `python:3.12-slim` not pinned by digest Dockerfile:10
HIGH MINED118 Dockerfile FROM `node:20-slim` not pinned by digest Dockerfile:2
HIGH PYSEC-2026-142 urllib3: PYSEC-2026-142 uv.lock
HIGH PYSEC-2026-141 urllib3: PYSEC-2026-141 uv.lock
HIGH PYSEC-2026-161 starlette: PYSEC-2026-161 uv.lock
HIGH PYSEC-2026-179 pyjwt: PYSEC-2026-179 uv.lock
HIGH PYSEC-2026-178 pyjwt: PYSEC-2026-178 uv.lock
HIGH PYSEC-2026-177 pyjwt: PYSEC-2026-177 uv.lock
HIGH PYSEC-2026-175 pyjwt: PYSEC-2026-175 uv.lock
HIGH GHSA-v39h-62p7-jpjc fast-uri: GHSA-v39h-62p7-jpjc ui/mira/package-lock.json
HIGH GHSA-q3j6-qgpj-74h6 fast-uri: GHSA-q3j6-qgpj-74h6 ui/mira/package-lock.json
HIGH JRN009 Secret-like setting is echoed into a password input value ui/mira/src/pages/users.tsx:86
HIGH JRN009 Secret-like setting is echoed into a password input value ui/mira/src/pages/login.tsx:65
HIGH MINED112 FastAPI POST /api/repos/{owner}/{repo}/index has no auth src/mira/dashboard/api.py:1836
HIGH MINED112 FastAPI DELETE /api/relationships/custom/{edge_id} has no auth src/mira/dashboard/api.py:1661
HIGH MINED112 FastAPI POST /api/relationships/custom has no auth src/mira/dashboard/api.py:1648
HIGH MINED112 FastAPI DELETE /api/relationships/overrides has no auth src/mira/dashboard/api.py:1623
HIGH MINED112 FastAPI POST /api/relationships/overrides has no auth src/mira/dashboard/api.py:1609
HIGH MINED112 FastAPI PATCH /api/rules/global/{rule_id}/toggle has no auth src/mira/dashboard/api.py:1577
HIGH MINED112 FastAPI DELETE /api/rules/global/{rule_id} has no auth src/mira/dashboard/api.py:1571
HIGH MINED112 FastAPI PUT /api/rules/global/{rule_id} has no auth src/mira/dashboard/api.py:1555
HIGH MINED112 FastAPI POST /api/rules/global has no auth src/mira/dashboard/api.py:1542
HIGH MINED112 FastAPI DELETE /api/repos/{owner}/{repo}/rules/{rule_id} has no auth src/mira/dashboard/api.py:1516
HIGH MINED112 FastAPI PUT /api/repos/{owner}/{repo}/rules/{rule_id} has no auth src/mira/dashboard/api.py:1499
HIGH MINED112 FastAPI POST /api/repos/{owner}/{repo}/rules has no auth src/mira/dashboard/api.py:1485
HIGH MINED112 FastAPI DELETE /api/repos/{owner}/{repo}/context/{context_id} has no auth src/mira/dashboard/api.py:1381
HIGH MINED112 FastAPI PUT /api/repos/{owner}/{repo}/context/{context_id} has no auth src/mira/dashboard/api.py:1361
HIGH MINED112 FastAPI POST /api/repos/{owner}/{repo}/context has no auth src/mira/dashboard/api.py:1348
HIGH MINED112 FastAPI POST /api/setup/complete has no auth src/mira/dashboard/api.py:680
HIGH MINED112 FastAPI POST /api/repos/sync has no auth src/mira/dashboard/api.py:571
HIGH MINED112 FastAPI POST /api/uninstalls/{installation_id}/delete has no auth src/mira/dashboard/api.py:563
HIGH MINED112 FastAPI POST /api/uninstalls/{installation_id}/keep has no auth src/mira/dashboard/api.py:556
HIGH MINED112 FastAPI PUT /api/settings/models has no auth src/mira/dashboard/api.py:487
HIGH MINED112 FastAPI DELETE /users/{user_id} has no auth src/mira/dashboard/auth.py:126
HIGH MINED112 FastAPI POST /users has no auth src/mira/dashboard/auth.py:115
HIGH MINED112 FastAPI PUT /theme has no auth src/mira/dashboard/auth.py:92
HIGH MINED112 FastAPI POST /logout has no auth src/mira/dashboard/auth.py:72
HIGH MINED112 FastAPI POST /github/webhook has no auth src/mira/github_app/webhooks.py:99
HIGH AUC003 [AUC003] Object-level route lacks visible authorization: A route with an object id-like p… src/mira/dashboard/api.py:1576
HIGH AUC003 [AUC003] Object-level route lacks visible authorization: A route with an object id-like p… src/mira/dashboard/api.py:1570
HIGH AUC003 [AUC003] Object-level route lacks visible authorization: A route with an object id-like p… src/mira/dashboard/api.py:1554
HIGH AUC003 [AUC003] Object-level route lacks visible authorization: A route with an object id-like p… src/mira/dashboard/api.py:1515
HIGH AUC003 [AUC003] Object-level route lacks visible authorization: A route with an object id-like p… src/mira/dashboard/api.py:1498
HIGH AUC003 [AUC003] Object-level route lacks visible authorization: A route with an object id-like p… src/mira/dashboard/api.py:1380
HIGH AUC003 [AUC003] Object-level route lacks visible authorization: A route with an object id-like p… src/mira/dashboard/api.py:1360
HIGH AUC003 [AUC003] Object-level route lacks visible authorization: A route with an object id-like p… src/mira/dashboard/api.py:562
HIGH AUC003 [AUC003] Object-level route lacks visible authorization: A route with an object id-like p… src/mira/dashboard/api.py:555
HIGH AUC003 [AUC003] Object-level route lacks visible authorization: A route with an object id-like p… src/mira/dashboard/auth.py:125
MED ERR002 [ERR002] Empty Catch Block: Empty catch blocks hide errors. ui/mira/src/pages/rules.tsx:41
MED ERR002 [ERR002] Empty Catch Block: Empty catch blocks hide errors. ui/mira/src/components/dashboard/layout…:124
MED ERR002 [ERR002] Empty Catch Block: Empty catch blocks hide errors. ui/mira/src/App.tsx:55
MED ERR001 [ERR001] Silent Exception Swallowing: Silently swallowing all exceptions hides bugs. Even… src/mira/index/context.py:82
MED SEC139 [SEC139] AI-generated migration/route without companion test file: Route or migration tou… src/mira/dashboard/auth.py:125
MED SEC045 [SEC045] eval()/exec() on stored or user-supplied data: eval() and exec() on data — even … src/mira/analysis/severity.py:21
MED MINED111 Bare except continues silently src/mira/dashboard/models_config.py:93
MED MINED111 Bare except continues silently src/mira/dashboard/events.py:59
MED MINED111 Bare except continues silently src/mira/dashboard/auth.py:122
MED MINED111 Bare except continues silently src/mira/github_app/index_handlers.py:333
MED MINED111 Bare except continues silently src/mira/github_app/index_handlers.py:314
MED MINED111 Bare except continues silently src/mira/core/passes.py:98
MED MINED111 Bare except continues silently src/mira/core/passes.py:118
MED COMP001 [COMP001] High cognitive complexity: Function `render_frontier_scatter` has cognitive com… scripts/render_benchmark_charts.py:183
MED AUC001 [AUC001] No Repobility access matrix policy found: The repository uses web/API frameworks…
MED DEPCUR-NPM npm package `globals` is 3 major version(s) behind (14.0.0 -> 17.6.0) ui/mira/package.json
MED DEPCUR-NPM npm package `@vitejs/plugin-react` is 1 major version(s) behind (5.2.0 -> 6.0.2) ui/mira/package.json
MED DEPCUR-NPM npm package `@eslint/js` is 1 major version(s) behind (9.39.4 -> 10.0.1) ui/mira/package.json
MED GHSA-65pc-fj4g-8rjx idna: GHSA-65pc-fj4g-8rjx uv.lock
MED GHSA-q8mj-m7cp-5q26 qs: GHSA-q8mj-m7cp-5q26 ui/mira/package-lock.json
MED GHSA-qx2v-qp2m-jg93 postcss: GHSA-qx2v-qp2m-jg93 ui/mira/package-lock.json
MED GHSA-v2v4-37r5-5v8g ip-address: GHSA-v2v4-37r5-5v8g ui/mira/package-lock.json
MED GHSA-xrhx-7g5j-rcj5 hono: GHSA-xrhx-7g5j-rcj5 ui/mira/package-lock.json
MED GHSA-qp7p-654g-cw7p hono: GHSA-qp7p-654g-cw7p ui/mira/package-lock.json
MED GHSA-p77w-8qqv-26rm hono: GHSA-p77w-8qqv-26rm ui/mira/package-lock.json
MED GHSA-f577-qrjj-4474 hono: GHSA-f577-qrjj-4474 ui/mira/package-lock.json
MED GHSA-9vqf-7f2p-gf9v hono: GHSA-9vqf-7f2p-gf9v ui/mira/package-lock.json
MED GHSA-69xw-7hcm-h432 hono: GHSA-69xw-7hcm-h432 ui/mira/package-lock.json
MED GHSA-458j-xx4x-4375 hono: GHSA-458j-xx4x-4375 ui/mira/package-lock.json
MED GHSA-3hrh-pfw6-9m5x hono: GHSA-3hrh-pfw6-9m5x ui/mira/package-lock.json
MED GHSA-2gcr-mfcq-wcc3 hono: GHSA-2gcr-mfcq-wcc3 ui/mira/package-lock.json
MED GHSA-jxxr-4gwj-5jf2 brace-expansion: GHSA-jxxr-4gwj-5jf2 ui/mira/package-lock.json
MED DKR001 Docker final stage has no non-root USER Dockerfile:10
MED WEB003 Public web service has no security.txt .well-known/security.txt
MED DKR014 Dockerfile copies broad context with incomplete .dockerignore Dockerfile:16
MED JRN003 Frontend API reference is not matched by discovered backend routes ui/mira/src/lib/api.ts:409
MED JRN003 Frontend API reference is not matched by discovered backend routes ui/mira/src/lib/api.ts:397
MED AUC002 [AUC002] Low visible authorization coverage in route inventory: Only 12.7% of discovered …
MED AUC012 [AUC012] FastAPI interactive docs may be exposed by framework defaults: FastAPI exposes /…
MED AGT012 Agent control bridge may listen on a network interface without visible auth scripts/start_local.sh:7
MED AUC009 [AUC009] Sensitive function route lacks elevated authorization evidence: A route appears … src/mira/dashboard/api.py:1660
MED AUC009 [AUC009] Sensitive function route lacks elevated authorization evidence: A route appears … src/mira/dashboard/api.py:1622
MED AUC009 [AUC009] Sensitive function route lacks elevated authorization evidence: A route appears … src/mira/dashboard/api.py:1576
MED AUC009 [AUC009] Sensitive function route lacks elevated authorization evidence: A route appears … src/mira/dashboard/api.py:1570
MED AUC009 [AUC009] Sensitive function route lacks elevated authorization evidence: A route appears … src/mira/dashboard/api.py:1515
MED AUC009 [AUC009] Sensitive function route lacks elevated authorization evidence: A route appears … src/mira/dashboard/api.py:1380
MED AUC009 [AUC009] Sensitive function route lacks elevated authorization evidence: A route appears … src/mira/dashboard/api.py:570
MED AUC009 [AUC009] Sensitive function route lacks elevated authorization evidence: A route appears … src/mira/dashboard/api.py:562
MED AUC009 [AUC009] Sensitive function route lacks elevated authorization evidence: A route appears … src/mira/dashboard/api.py:325
MED AUC009 [AUC009] Sensitive function route lacks elevated authorization evidence: A route appears … src/mira/dashboard/auth.py:79
MED AUC004 [AUC004] Admin route does not show super_admin separation: An administrative route was de… src/mira/dashboard/api.py:486
MED AUC004 [AUC004] Admin route does not show super_admin separation: An administrative route was de… src/mira/dashboard/api.py:440
MED AUC004 [AUC004] Admin route does not show super_admin separation: An administrative route was de… src/mira/dashboard/api.py:426
MED AUC004 [AUC004] Admin route does not show super_admin separation: An administrative route was de… src/mira/dashboard/api.py:368
MED AUC004 [AUC004] Admin route does not show super_admin separation: An administrative route was de… src/mira/dashboard/auth.py:125
MED AUC004 [AUC004] Admin route does not show super_admin separation: An administrative route was de… src/mira/dashboard/auth.py:114
MED AUC004 [AUC004] Admin route does not show super_admin separation: An administrative route was de… src/mira/dashboard/auth.py:105
MED AUC004 [AUC004] Admin route does not show super_admin separation: An administrative route was de… src/mira/dashboard/auth.py:91
MED AUC004 [AUC004] Admin route does not show super_admin separation: An administrative route was de… src/mira/dashboard/auth.py:71
MED AUC004 [AUC004] Admin route does not show super_admin separation: An administrative route was de… src/mira/dashboard/auth.py:48
LOW COMP001 [COMP001] High cognitive complexity: Function `render_speed_bars` has cognitive complexit… scripts/render_benchmark_charts.py:89
LOW COMP001 [COMP001] High cognitive complexity: Function `run` has cognitive complexity 9 (SonarSour… scripts/play_learning.py:227
LOW DEPCUR-NPM npm package `shadcn` is minor version(s) behind (4.7.0 -> 4.10.0) ui/mira/package.json
LOW DEPCUR-NPM npm package `@xyflow/react` is minor version(s) behind (12.10.2 -> 12.11.0) ui/mira/package.json
LOW GHSA-hm8q-7f3q-5f36 hono: GHSA-hm8q-7f3q-5f36 ui/mira/package-lock.json
LOW AIC003 Duplicated implementation block across source files ui/mira/src/pages/setup.tsx:75
LOW AIC003 Duplicated implementation block across source files ui/mira/src/pages/settings.tsx:3
LOW AIC003 Duplicated implementation block across source files ui/mira/src/components/dashboard/relati…:1
LOW AIC003 Duplicated implementation block across source files ui/mira/src/components/dashboard/depend…:1
LOW AIC003 Duplicated implementation block across source files src/mira/llm/provider.py:416
LOW AIC003 Duplicated implementation block across source files src/mira/index/indexer.py:61
LOW DKR008 .dockerignore misses sensitive defaults .dockerignore
INFO MINED058 [MINED058] React Dangerously Set Html: dangerouslySetInnerHTML bypasses Reacts JSX escapi… ui/mira/src/components/ui/chart.tsx:93
INFO MINED056 [MINED056] React Key As Index: key={index} in map() — re-renders the wrong elements on re… ui/mira/src/pages/relationships.tsx:209
INFO MINED056 [MINED056] React Key As Index: key={index} in map() — re-renders the wrong elements on re… ui/mira/src/components/ui/chart.tsx:207
INFO MINED056 [MINED056] React Key As Index: key={index} in map() — re-renders the wrong elements on re… ui/mira/src/components/dashboard/layout…:91
INFO MINED045 [MINED045] Ts Non Null Assertion: x! asserts not null - bypasses null checks - TypeError … ui/mira/src/components/theme-provider.t…:62
INFO MINED045 [MINED045] Ts Non Null Assertion: x! asserts not null - bypasses null checks - TypeError … ui/mira/src/components/dashboard/layout…:111
INFO MINED050 [MINED050] Stub Only Function: Function declared but body is just pass, return None, rais… src/mira/llm/response_parser.py:255
INFO MINED050 [MINED050] Stub Only Function: Function declared but body is just pass, return None, rais… src/mira/index/context.py:29
INFO MINED050 [MINED050] Stub Only Function: Function declared but body is just pass, return None, rais… src/mira/dashboard/events.py:49
INFO MINED062 [MINED062] Python Dataclass No Fields: @dataclass over an empty class — unfinished model. src/mira/security/osv.py:54
INFO MINED062 [MINED062] Python Dataclass No Fields: @dataclass over an empty class — unfinished model. src/mira/llm/agentic_tools.py:102
INFO MINED062 [MINED062] Python Dataclass No Fields: @dataclass over an empty class — unfinished model. src/mira/core/priority.py:57
INFO MINED049 [MINED049] Print Pii: Logging password/token/email/ssn directly to stdout. scripts/play_learning.py:231
Reset to top 5 158 findings available (after auto-suppression of test files + won't-fix)

Issue body (markdown)

## Code-quality scan: `miracodeai/mira`

**Score: 57/100 (B)**  ·  208 findings  ·  scanned 2026-06-05 15:00 UTC  ·  43,192 LOC

| Severity | Count |
|---|---|
| CRITICAL | 4 |
| HIGH | 69 |
| MEDIUM | 60 |
| LOW | 12 |

📊 [Full filterable report](https://repobility.com/scan/ceef786b-85b1-4201-8535-6d88dc0ad55d/)  ·  ![scorecard](https://repobility.com/scan/ceef786b-85b1-4201-8535-6d88dc0ad55d/report.png?v=1780671647-s2)

### Top findings

1. **CRITICAL** `SEC022` — Database URL With Embedded Credential
   `src/mira/config.py:149` · A07:2021 Identification & Authentication Failures
2. **CRITICAL** `generic-api-key` — Detected a Generic API Key, potentially exposing access to various services and sensitive 
   `tests/fixtures/sample.diff:27`
3. **CRITICAL** `SEC001` — Hardcoded Password
   `scripts/start_local.sh:40` · A07:2021 Identification & Authentication Failures
4. **CRITICAL** `MINED114` — Admin endpoint without auth: PUT /api/admin/settings
   `src/mira/dashboard/api.py:441` · ✓ Repobility
5. **HIGH** `SEC040` — innerHTML XSS — template literal with server-supplied data
   `ui/mira/src/pages/packages.tsx:186` · CWE-79 · A03:2021 Injection (XSS)

---

**Security note**: this issue is public. If any flagged finding is a real, exploitable vulnerability, please redirect to your `SECURITY.md` policy or open a [private security advisory](https://docs.github.com/en/code-security/security-advisories/guidance-on-reporting-and-writing-information-about-vulnerabilities/privately-reporting-a-security-vulnerability) instead. We're happy to close this and re-submit privately.

---

_Filed automatically. Close this issue if not useful — we won't refile. Full report: https://repobility.com/scan/ceef786b-85b1-4201-8535-6d88dc0ad55d/_
Already filed
This repo publishes a SECURITY.md policy and the scan contains 20 Critical/High security finding(s). Public issue filing would violate coordinated disclosure. Submit privately via the project's security reporting channel.
Megaproject â high spam risk
Could not determine 'miracodeai/mira' star count (GitHub API rate-limited or unreachable). When in doubt about repo size, prefer opening a focused PR or a discussion rather than an issue.

The button opens GitHubâs new-issue page in a new tab. You will see the title + body pre-filled â review, edit if you want, then click GitHubâs "Submit new issue" button. Repobility never posts anything on your behalf.

For real security findings on big repos: use the project's SECURITY.md or private advisory flow instead of a public issue.