← Back to scan
File as GitHub Issue repo: OpenHands/OpenHands

Push this scan report to OpenHands/OpenHands

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

Client-side open redirect — window.location = server-supplied URL

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
MED SEC136 [SEC136] AI-typical over-broad exception handler swallowing all errors: Catch-all excepti… openhands/app_server/user/skills_router…:40
MED SEC127 [SEC127] AI agent stub — TODO: implement / pass placeholder body: Function body left as T… openhands/app_server/user/specifiy_user…:25
MED SEC127 [SEC127] AI agent stub — TODO: implement / pass placeholder body: Function body left as T… openhands/app_server/integrations/servi…:210
MED SEC046 [SEC046] Client-side open redirect — window.location = server-supplied URL: Assigning win… frontend/src/hooks/mutation/use-accept-…:39
MED SEC046 [SEC046] Client-side open redirect — window.location = server-supplied URL: Assigning win… frontend/src/hooks/mutation/stripe/use-…:10
MED SEC046 [SEC046] Client-side open redirect — window.location = server-supplied URL: Assigning win… frontend/src/components/features/settin…:22
MED SEC041 [SEC041] Tabnabbing — target="_blank" without rel="noopener noreferrer": <a target="_blan… frontend/src/components/features/settin…:21
MED SEC041 [SEC041] Tabnabbing — target="_blank" without rel="noopener noreferrer": <a target="_blan… frontend/src/components/features/conver…:26
MED SEC041 [SEC041] Tabnabbing — target="_blank" without rel="noopener noreferrer": <a target="_blan… frontend/src/components/features/conver…:92
MED SEC045 [SEC045] eval()/exec() on stored or user-supplied data: eval() and exec() on data — even … frontend/src/components/v1/chat/event-c…:27
MED SEC045 [SEC045] eval()/exec() on stored or user-supplied data: eval() and exec() on data — even … frontend/src/components/features/markdo…:18
MED SEC045 [SEC045] eval()/exec() on stored or user-supplied data: eval() and exec() on data — even … frontend/scripts/check-translation-comp…:24
MED SEC015 [SEC015] Insecure Randomness for Security: Weak PRNG used in security-sensitive context. … openhands/app_server/services/jwt_servi…:65
MED SEC015 [SEC015] Insecure Randomness for Security: Weak PRNG used in security-sensitive context. … enterprise/storage/org_invitation_store…:28
MED ERR001 [ERR001] Silent Exception Swallowing: Silently swallowing all exceptions hides bugs. Even… enterprise/server/routes/email.py:128
MED ERR001 [ERR001] Silent Exception Swallowing: Silently swallowing all exceptions hides bugs. Even… enterprise/integrations/jira_dc/jira_dc…:199
MED ERR001 [ERR001] Silent Exception Swallowing: Silently swallowing all exceptions hides bugs. Even… enterprise/integrations/jira/jira_v1_ca…:189
MED SEC034 [SEC034] Log Injection / Log Forging — unsanitized user input in log: User input is logge… enterprise/integrations/bitbucket_data_…:21
MED SEC034 [SEC034] Log Injection / Log Forging — unsanitized user input in log: User input is logge… enterprise/integrations/bitbucket/bitbu…:21
MED SEC034 [SEC034] Log Injection / Log Forging — unsanitized user input in log: User input is logge… enterprise/integrations/bitbucket/bitbu…:168
MED MINED111 Bare except continues silently openhands/app_server/sandbox/remote_san…:405
MED MINED111 Bare except continues silently openhands/app_server/services/jwt_servi…:301
MED MINED111 Bare except continues silently openhands/app_server/user/skills_router…:42
MED MINED111 Bare except continues silently openhands/app_server/app_conversation/s…:99
MED MINED111 Bare except continues silently openhands/app_server/app_conversation/s…:77
MED MINED111 Bare except continues silently openhands/app_server/version.py:46
MED MINED111 Bare except continues silently openhands/app_server/static.py:10
MED MINED111 Bare except continues silently enterprise/server/routes/integration/ji…:1037
MED MINED111 Bare except continues silently enterprise/server/routes/auth.py:681
MED MINED111 Bare except continues silently enterprise/server/routes/auth.py:151
MED MINED111 Bare except continues silently enterprise/integrations/github/data_col…:181
MED MINED111 Bare except continues silently enterprise/integrations/github/data_col…:121
MED MINED111 Bare except continues silently enterprise/integrations/gitlab/gitlab_s…:435
MED MINED111 Bare except continues silently enterprise/integrations/utils.py:352
MED MINED111 Bare except continues silently enterprise/enterprise_local/convert_to_…:50
MED MINED111 Bare except continues silently enterprise/enterprise_local/convert_to_…:71
MED MINED111 Bare except continues silently enterprise/storage/user_store.py:1156
MED MINED111 Bare except continues silently enterprise/storage/user_settings.py:72
MED MINED111 Bare except continues silently enterprise/run_maintenance_tasks.py:52
MED MINED111 Bare except continues silently scripts/update_openapi.py:219
MED COMP001 [COMP001] High cognitive complexity: Function `find_prs_between_commits` has cognitive co… .github/scripts/find_prs_between_commit…:127
MED COMP001 [COMP001] High cognitive complexity: Function `print_results` has cognitive complexity 19… .github/scripts/find_prs_between_commit…:208
MED DKR003 Compose service `openhands` image uses the latest tag docker-compose.yml:2
MED AUC001 [AUC001] No Repobility access matrix policy found: The repository uses web/API frameworks…
MED DEPCUR-NPM npm package `lint-staged` is 1 major version(s) behind (16.2.7 -> 17.0.7) frontend/package.json
MED DEPCUR-NPM npm package `jsdom` is 2 major version(s) behind (27.4.0 -> 29.1.1) frontend/package.json
MED DEPCUR-NPM npm package `i18next-http-backend` is 1 major version(s) behind (3.0.2 -> 4.0.0) frontend/package.json
MED DEPCUR-NPM npm package `@heroui/react` is 1 major version(s) behind (2.8.8 -> 3.1.0) frontend/package.json
MED DEPCUR-NPM npm package `vite-plugin-dts` is 1 major version(s) behind (^4.5.4 -> 5.0.2) openhands-ui/package.json
MED DEPCUR-NPM npm package `@vitest/browser` is 1 major version(s) behind (^3.2.4 -> 4.1.8) openhands-ui/package.json
MED DEPCUR-NPM npm package `@vitejs/plugin-react` is 2 major version(s) behind (^4.5.2 -> 6.0.2) openhands-ui/package.json
MED DEPCUR-NPM npm package `focus-trap-react` is 1 major version(s) behind (^11.0.4 -> 12.0.2) openhands-ui/package.json
MED DEPCUR-PY Python package `cachetools` is 2 major version(s) behind (5.5.2 -> 7.1.4) poetry.lock
MED DEPCUR-PY Python package `aiofiles` is 1 major version(s) behind (24.1.0 -> 25.1.0) poetry.lock
MED GHSA-65pc-fj4g-8rjx idna: GHSA-65pc-fj4g-8rjx uv.lock
MED GHSA-r95x-qfjj-fjj2 authlib: GHSA-r95x-qfjj-fjj2 uv.lock
MED GHSA-jg22-mg44-37j8 aiohttp: GHSA-jg22-mg44-37j8 uv.lock
MED GHSA-hg6j-4rv6-33pg aiohttp: GHSA-hg6j-4rv6-33pg uv.lock
MED GHSA-65pc-fj4g-8rjx idna: GHSA-65pc-fj4g-8rjx poetry.lock
MED GHSA-jg22-mg44-37j8 aiohttp: GHSA-jg22-mg44-37j8 poetry.lock
MED GHSA-hg6j-4rv6-33pg aiohttp: GHSA-hg6j-4rv6-33pg poetry.lock
MED GHSA-48c2-rrv3-qjmp yaml: GHSA-48c2-rrv3-qjmp openhands-ui/bun.lock
MED GHSA-58qx-3vcg-4xpx ws: GHSA-58qx-3vcg-4xpx openhands-ui/bun.lock
MED GHSA-93m4-6634-74q7 vite: GHSA-93m4-6634-74q7 openhands-ui/bun.lock
MED GHSA-4w7w-66w2-5vf9 vite: GHSA-4w7w-66w2-5vf9 openhands-ui/bun.lock
MED GHSA-qx2v-qp2m-jg93 postcss: GHSA-qx2v-qp2m-jg93 openhands-ui/bun.lock
MED GHSA-3v7f-55p6-f55p picomatch: GHSA-3v7f-55p6-f55p openhands-ui/bun.lock
MED GHSA-xxjr-mmjv-4gpg lodash: GHSA-xxjr-mmjv-4gpg openhands-ui/bun.lock
MED GHSA-f23m-r3pf-42rh lodash: GHSA-f23m-r3pf-42rh openhands-ui/bun.lock
MED GHSA-f886-m6hf-6m8v brace-expansion: GHSA-f886-m6hf-6m8v openhands-ui/bun.lock
MED GHSA-2g4f-4pwh-qvx6 ajv: GHSA-2g4f-4pwh-qvx6 openhands-ui/bun.lock
MED GHSA-48c2-rrv3-qjmp yaml: GHSA-48c2-rrv3-qjmp frontend/package-lock.json
MED GHSA-58qx-3vcg-4xpx ws: GHSA-58qx-3vcg-4xpx frontend/package-lock.json
MED GHSA-f22v-gfqf-p8f3 react-router: GHSA-f22v-gfqf-p8f3 frontend/package-lock.json
MED GHSA-2j2x-hqr9-3h42 react-router: GHSA-2j2x-hqr9-3h42 frontend/package-lock.json
MED GHSA-q8mj-m7cp-5q26 qs: GHSA-q8mj-m7cp-5q26 frontend/package-lock.json
MED GHSA-jggg-4jg4-v7c6 protobufjs: GHSA-jggg-4jg4-v7c6 frontend/package-lock.json
MED GHSA-qx2v-qp2m-jg93 postcss: GHSA-qx2v-qp2m-jg93 frontend/package-lock.json
MED GHSA-q89c-q3h5-w34g i18next-http-backend: GHSA-q89c-q3h5-w34g frontend/package-lock.json
MED GHSA-f886-m6hf-6m8v brace-expansion: GHSA-f886-m6hf-6m8v frontend/package-lock.json
MED GHSA-2g4f-4pwh-qvx6 ajv: GHSA-2g4f-4pwh-qvx6 frontend/package-lock.json
MED GHSA-65pc-fj4g-8rjx idna: GHSA-65pc-fj4g-8rjx enterprise/poetry.lock
MED GHSA-jg22-mg44-37j8 aiohttp: GHSA-jg22-mg44-37j8 enterprise/poetry.lock
MED GHSA-hg6j-4rv6-33pg aiohttp: GHSA-hg6j-4rv6-33pg enterprise/poetry.lock
MED DKR009 Dockerfile separates apt update from install containers/dev/Dockerfile:49
MED JRN002 Browser storage is used for session token material frontend/src/hooks/use-invitation.ts:57
MED JRN002 Browser storage is used for session token material frontend/src/hooks/use-invitation.ts:44
MED DKR001 Docker final stage has no non-root USER containers/dev/Dockerfile:92
MED WEB003 Public web service has no security.txt .well-known/security.txt
MED JRN003 Frontend API reference is not matched by discovered backend routes frontend/src/api/conversation-service/v…:26
MED JRN003 Frontend API reference is not matched by discovered backend routes frontend/src/api/conversation-service/c…:40
MED JRN003 Frontend API reference is not matched by discovered backend routes frontend/src/api/config-service/config-…:37
MED JRN003 Frontend API reference is not matched by discovered backend routes frontend/src/api/config-service/config-…:27
MED JRN003 Frontend API reference is not matched by discovered backend routes frontend/src/api/billing-service/billin…:39
MED JRN003 Frontend API reference is not matched by discovered backend routes frontend/src/api/billing-service/billin…:28
MED JRN003 Frontend API reference is not matched by discovered backend routes frontend/src/api/billing-service/billin…:14
MED JRN003 Frontend API reference is not matched by discovered backend routes frontend/src/api/auth-service/auth-serv…:47
MED JRN003 Frontend API reference is not matched by discovered backend routes frontend/src/api/auth-service/auth-serv…:33
MED JRN003 Frontend API reference is not matched by discovered backend routes frontend/src/api/auth-service/auth-serv…:20
MED JRN003 Frontend API reference is not matched by discovered backend routes frontend/src/api/api-keys.ts:45
MED JRN003 Frontend API reference is not matched by discovered backend routes frontend/src/api/api-keys.ts:34
MED JRN003 Frontend API reference is not matched by discovered backend routes frontend/src/api/api-keys.ts:24
MED JRN003 Frontend API reference is not matched by discovered backend routes frontend/src/api/analytics-service/anal…:38
MED AUC002 [AUC002] Low visible authorization coverage in route inventory: Only 31.8% of discovered …
MED AUC012 [AUC012] FastAPI interactive docs may be exposed by framework defaults: FastAPI exposes /…
MED AGT015 Remote install command pipes network code directly to a shell .devcontainer/setup.sh:11
MED AUC009 [AUC009] Sensitive function route lacks elevated authorization evidence: A route appears … openhands/app_server/sandbox/sandbox_ro…:108
MED AUC009 [AUC009] Sensitive function route lacks elevated authorization evidence: A route appears … openhands/app_server/secrets/secrets_ro…:348
MED AUC009 [AUC009] Sensitive function route lacks elevated authorization evidence: A route appears … openhands/app_server/app_conversation/a…:1437
MED AUC009 [AUC009] Sensitive function route lacks elevated authorization evidence: A route appears … openhands/app_server/app_conversation/a…:779
MED AUC009 [AUC009] Sensitive function route lacks elevated authorization evidence: A route appears … enterprise/server/routes/org_profiles.py:344
MED AUC009 [AUC009] Sensitive function route lacks elevated authorization evidence: A route appears … enterprise/server/routes/org_profiles.py:233
MED AUC009 [AUC009] Sensitive function route lacks elevated authorization evidence: A route appears … enterprise/server/routes/org_profiles.py:202
MED AUC009 [AUC009] Sensitive function route lacks elevated authorization evidence: A route appears … enterprise/server/routes/org_profiles.py:181
MED AUC009 [AUC009] Sensitive function route lacks elevated authorization evidence: A route appears … enterprise/server/routes/org_profiles.py:164
MED AUC009 [AUC009] Sensitive function route lacks elevated authorization evidence: A route appears … enterprise/server/routes/bitbucket_dc_p…:19
MED AUC004 [AUC004] Admin route does not show super_admin separation: An administrative route was de… openhands/app_server/sandbox/sandbox_ro…:185
MED AUC004 [AUC004] Admin route does not show super_admin separation: An administrative route was de… openhands/app_server/sandbox/sandbox_ro…:154
MED AUC004 [AUC004] Admin route does not show super_admin separation: An administrative route was de… enterprise/server/auth/authorization.py:258
MED AUC004 [AUC004] Admin route does not show super_admin separation: An administrative route was de… enterprise/server/auth/authorization.py:26
MED AUC004 [AUC004] Admin route does not show super_admin separation: An administrative route was de… enterprise/server/auth/authorization.py:18
MED AUC004 [AUC004] Admin route does not show super_admin separation: An administrative route was de… enterprise/server/email_validation.py:36
LOW SEC124 [SEC124] TOCTOU file access (os.access then open): Check-then-use file pattern (access/ex… openhands/app_server/file_store/local.py:62
LOW COMP001 [COMP001] High cognitive complexity: Function `main` has cognitive complexity 12 (SonarSo… .github/scripts/find_prs_between_commit…:248
LOW DEPCUR-NPM npm package `@tanstack/eslint-plugin-query` is minor version(s) behind (5.100.10 -> 5.101… frontend/package.json
LOW DEPCUR-NPM npm package `tailwind-merge` is minor version(s) behind (3.4.0 -> 3.6.0) frontend/package.json
LOW DEPCUR-NPM npm package `react-icons` is minor version(s) behind (5.5.0 -> 5.6.0) frontend/package.json
LOW DEPCUR-NPM npm package `axios` is minor version(s) behind (1.16.0 -> 1.17.0) frontend/package.json
LOW DEPCUR-NPM npm package `@tanstack/react-query` is minor version(s) behind (5.90.20 -> 5.101.0) frontend/package.json
LOW DEPCUR-NPM npm package `@react-router/serve` is minor version(s) behind (7.13.0 -> 7.17.0) frontend/package.json
LOW DEPCUR-NPM npm package `@react-router/node` is minor version(s) behind (7.13.0 -> 7.17.0) frontend/package.json
LOW DEPCUR-NPM npm package `@microlink/react-json-view` is minor version(s) behind (1.27.1 -> 1.31.20) frontend/package.json
LOW DEPCUR-NPM npm package `tailwind-merge` is minor version(s) behind (3.4.0 -> 3.6.0) openhands-ui/package.json
LOW DEPCUR-PY Python package `fakeredis` is minor version(s) behind (2.34.1 -> 2.36.0) poetry.lock
LOW DEPCUR-PY Python package `docutils` is minor version(s) behind (0.22.4 -> 0.23) poetry.lock
LOW DEPCUR-PY Python package `docstring-parser` is minor version(s) behind (0.17.0 -> 0.18.0) poetry.lock
LOW DEPCUR-PY Python package `decorator` is minor version(s) behind (5.2.1 -> 5.3.1) poetry.lock
LOW DEPCUR-PY Python package `cyclopts` is minor version(s) behind (4.10.1 -> 4.16.1) poetry.lock
LOW DEPCUR-PY Python package `clr-loader` is minor version(s) behind (0.2.10 -> 0.3.1) poetry.lock
LOW DEPCUR-PY Python package `click` is minor version(s) behind (8.1.8 -> 8.4.1) poetry.lock
LOW DEPCUR-PY Python package `certifi` is minor version(s) behind (2026.2.25 -> 2026.5.20) poetry.lock
LOW DEPCUR-PY Python package `build` is minor version(s) behind (1.4.2 -> 1.5.0) poetry.lock
LOW DEPCUR-PY Python package `browsergym-core` is minor version(s) behind (0.13.3 -> 0.14.3) poetry.lock
LOW DEPCUR-PY Python package `browser-use-sdk` is minor version(s) behind (3.4.0 -> 3.8.1) poetry.lock
LOW DEPCUR-PY Python package `browser-use` is minor version(s) behind (0.11.13 -> 0.12.9) poetry.lock
LOW DEPCUR-PY Python package `binaryornot` is minor version(s) behind (0.4.4 -> 0.6.0) poetry.lock
LOW DEPCUR-PY Python package `authlib` is minor version(s) behind (1.6.12 -> 1.7.2) poetry.lock
LOW DEPCUR-PY Python package `asyncpg` is minor version(s) behind (0.30.0 -> 0.31.0) poetry.lock
LOW DEPCUR-PY Python package `anyio` is minor version(s) behind (4.9.0 -> 4.13.0) poetry.lock
LOW DEPCUR-PY Python package `anthropic` is minor version(s) behind (0.88.0 -> 0.105.2) poetry.lock
LOW DEPCUR-PY Python package `aiofile` is minor version(s) behind (3.9.0 -> 3.11.1) poetry.lock
LOW DEPCUR-PY Python package `agent-client-protocol` is minor version(s) behind (0.9.0 -> 0.10.1) poetry.lock
LOW GHSA-jqfw-vq24-v9c3 vite: GHSA-jqfw-vq24-v9c3 openhands-ui/bun.lock
LOW GHSA-g4jq-h2w9-997c vite: GHSA-g4jq-h2w9-997c openhands-ui/bun.lock
LOW AIC003 Duplicated implementation block across source files enterprise/storage/jira_workspace.py:10
LOW AIC003 Duplicated implementation block across source files enterprise/storage/jira_user.py:11
LOW AIC003 Duplicated implementation block across source files enterprise/storage/jira_dc_workspace.py:17
LOW AIC003 Duplicated implementation block across source files enterprise/server/utils/conversation_ut…:31
LOW AIC003 Duplicated implementation block across source files enterprise/server/sharing/google_cloud_…:17
LOW AIC003 Duplicated implementation block across source files enterprise/server/sharing/filesystem_sh…:48
LOW AIC003 Duplicated implementation block across source files enterprise/server/routes/integration/gi…:28
LOW AIC003 Duplicated implementation block across source files enterprise/server/routes/integration/bi…:231
LOW AIC003 Duplicated implementation block across source files enterprise/integrations/slack/slack_vie…:265
LOW AIC003 Duplicated implementation block across source files enterprise/integrations/slack/slack_v1_…:195
LOW AIC003 Duplicated implementation block across source files enterprise/integrations/slack/slack_v1_…:106
LOW AIC003 Duplicated implementation block across source files enterprise/integrations/slack/slack_v1_…:10
LOW AIC003 Duplicated implementation block across source files enterprise/integrations/jira_dc/jira_dc…:108
LOW AIC003 Duplicated implementation block across source files enterprise/integrations/jira_dc/jira_dc…:90
LOW AIC003 Duplicated implementation block across source files enterprise/integrations/jira_dc/jira_dc…:20
LOW AIC003 Duplicated implementation block across source files enterprise/integrations/jira_dc/jira_dc…:16
LOW AIC003 Duplicated implementation block across source files enterprise/integrations/jira/jira_v1_ca…:99
LOW AIC003 Duplicated implementation block across source files enterprise/integrations/jira/jira_v1_ca…:81
LOW AIC003 Duplicated implementation block across source files enterprise/integrations/jira/jira_v1_ca…:6
LOW AIC003 Duplicated implementation block across source files enterprise/integrations/gitlab/gitlab_v…:89
LOW AIC003 Duplicated implementation block across source files enterprise/integrations/gitlab/gitlab_v…:88
LOW AIC003 Duplicated implementation block across source files enterprise/integrations/gitlab/gitlab_v…:109
LOW AIC003 Duplicated implementation block across source files enterprise/integrations/gitlab/gitlab_v…:6
LOW AIC003 Duplicated implementation block across source files enterprise/integrations/gitlab/gitlab_s…:29
LOW AIC003 Duplicated implementation block across source files enterprise/integrations/github/github_v…:116
LOW AIC003 Duplicated implementation block across source files enterprise/integrations/github/github_v…:10
LOW DKR010 Dockerfile leaves apt package indexes in the image layer containers/dev/Dockerfile:59
LOW DKR010 Dockerfile leaves apt package indexes in the image layer containers/dev/Dockerfile:7
LOW DKR010 Dockerfile leaves apt package indexes in the image layer containers/app/Dockerfile:25
LOW DKR012 Dockerfile keeps pip download cache enterprise/Dockerfile:32
LOW DKR012 Dockerfile keeps pip download cache enterprise/Dockerfile:27
LOW DKR011 Dockerfile installs recommended OS packages enterprise/Dockerfile:11
LOW DKR011 Dockerfile installs recommended OS packages containers/dev/Dockerfile:94
LOW DKR011 Dockerfile installs recommended OS packages containers/dev/Dockerfile:65
LOW DKR011 Dockerfile installs recommended OS packages containers/dev/Dockerfile:59
LOW DKR011 Dockerfile installs recommended OS packages containers/dev/Dockerfile:33
LOW DKR011 Dockerfile installs recommended OS packages containers/dev/Dockerfile:17
LOW DKR011 Dockerfile installs recommended OS packages containers/dev/Dockerfile:7
LOW DKR008 .dockerignore misses sensitive defaults .dockerignore
LOW DKR011 Dockerfile installs recommended OS packages containers/app/Dockerfile:54
LOW DKR012 Dockerfile keeps pip download cache containers/app/Dockerfile:25
LOW DKR011 Dockerfile installs recommended OS packages containers/app/Dockerfile:25
LOW DKC010 Compose service lacks no-new-privileges hardening docker-compose.yml:2
LOW DKC010 Compose service lacks no-new-privileges hardening containers/dev/compose.yml:2
LOW DKC006 Compose service does not declare a runtime user docker-compose.yml:2
LOW DKC006 Compose service does not declare a runtime user containers/dev/compose.yml:2
Reset to top 5 200 findings available (after auto-suppression of test files + won't-fix)

Issue body (markdown)

## Code-quality scan: `OpenHands/OpenHands`

**Score: 50/100 (C+)**  ·  493 findings  ·  scanned 2026-06-05 07:42 UTC  ·  300,052 LOC

| Severity | Count |
|---|---|
| CRITICAL | 19 |
| HIGH | 164 |
| MEDIUM | 122 |
| LOW | 82 |

📊 [Full filterable report](https://repobility.com/scan/3808c140-1460-4c5b-8651-204c3325fe6f/)  ·  ![scorecard](https://repobility.com/scan/3808c140-1460-4c5b-8651-204c3325fe6f/report.png?v=1780645363-s2)

### Top findings

1. **MEDIUM** `SEC136` — AI-typical over-broad exception handler swallowing all errors
   `openhands/app_server/user/skills_router.py:40` · CWE-396
2. **MEDIUM** `SEC127` — AI agent stub — TODO: implement / pass placeholder body
   `openhands/app_server/user/specifiy_user_context.py:25`
3. **MEDIUM** `SEC127` — AI agent stub — TODO: implement / pass placeholder body
   `openhands/app_server/integrations/service_types.py:210`
4. **MEDIUM** `SEC046` — Client-side open redirect — window.location = server-supplied URL
   `frontend/src/hooks/mutation/use-accept-tos.ts:39` · CWE-601 · A01:2021 Broken Access Control (open redirect)
5. **MEDIUM** `SEC046` — Client-side open redirect — window.location = server-supplied URL
   `frontend/src/hooks/mutation/stripe/use-create-stripe-checkout-session.ts:10` · CWE-601 · A01:2021 Broken Access Control (open redirect)

---

_Filed automatically. Close this issue if not useful — we won't refile. Full report: https://repobility.com/scan/3808c140-1460-4c5b-8651-204c3325fe6f/_
Megaproject â high spam risk
Could not determine 'OpenHands/OpenHands' 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.