AI Slop Code Risk Monitor

warp-tech/warpgate

SlopCodeMonitor badge for warp-tech/warpgate Adjusted legacy signal; badge bands: 25 / 50 / 75 (different from dashboard bands).

Fully transparent SSH, HTTPS, Kubernetes, database and RDP/VNC bastion/PAM that doesn't need additional client-side software

3.8 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for warp-tech/warpgate, a Rust project with 8,175 GitHub stars. SynthScan examined 164,501 lines of code across 855 source files, recording 452 pattern matches distributed across 15 syntactic categories. The legacy adjusted pattern signal is 3.8 (Low pattern signal); it is not an authorship estimate.

Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.

3.8
Adjusted Signal
3.8
Raw Pattern Score
100%
Time Factor
2026-10-31
Last Push
8.2K
Stars
Rust
Language
164.5K
Lines of Code
855
Files
452
Pattern Hits
2026-10-31
Scan Date
0.02
HC Hit Rate

Risk Review · Payload v1

Use each vector to guide manual verification of the underlying findings.

Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.

Cognitive Ownership Risk 11.4/100 · LOW

Can maintainers explain intent, assumptions, and trade-offs? 373 finding(s).

Hallucinated Dependency & Supply Chain Risk 0.6/100 · LOW

Are imports declared and package/API names verified? 23 finding(s).

Agent Over-Engineering Ratio 13.1/100 · LOW

Are wrappers, guards, and repeated structures necessary? 323 finding(s).

PR Review Velocity Impact 16.8/100 · LOW

Which changes need focused human review? 452 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.

Severity Breakdown

Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.

CRITICAL 0HIGH 13MEDIUM 44LOW 395

Directory Score Breakdown

This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.

Pattern Findings

The scanner identified 452 distinct pattern matches across 15 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.

Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.

Hyper-Verbose Identifiers265 hits · 258 pts
SeverityFileLineSnippetContext
LOWtests/test_role_access_ends_sessions.py54 def test_revoking_the_role_ends_the_session(CODE
LOWtests/test_role_access_ends_sessions.py73 def test_an_expiring_role_ends_the_session(CODE
LOWtests/test_rdp_user_auth_otp.py90 def test_otp_required_not_authorized_without_second_factor(CODE
LOWtests/test_ssh_approval_close.py17 def test_client_disconnect_clears_the_pending_approval(CODE
LOWtests/test_ssh_approval_close.py37 def test_target_is_not_reached_before_approval(CODE
LOWtests/test_ssh_approval_close.py67 def test_a_second_channel_shares_the_approved_connection(CODE
LOWtests/test_ssh_approval_close.py140 def test_an_exec_through_the_gate_is_recorded(CODE
LOWtests/test_ssh_approval_close.py181 def test_many_channels_on_a_held_connection(CODE
LOWtests/test_ssh_approval_close.py241 def test_a_held_session_outlives_the_inactivity_timeout(CODE
LOWtests/test_ssh_approval_close.py277 def test_admin_can_close_a_session_waiting_for_approval(CODE
LOWtests/test_ssh_approval_close.py361def _assert_request_disappears(url, user, target):CODE
LOWtests/test_ssh_target_handshake_timeout.py34 def test_silent_target_fails_instead_of_hanging(CODE
LOWtests/test_ssh_target_handshake_timeout.py91 def test_host_key_prompt_is_not_interrupted(CODE
LOWtests/test_cluster_otp_login.py14 def test_cross_node_otp_login(CODE
LOWtests/test_role_expiry.py102 def test_grant_role_with_future_expiry_allows_access(CODE
LOWtests/test_role_expiry.py130 def test_expired_role_denies_access(CODE
LOWtests/test_role_expiry.py163 def test_reenable_expired_role_restores_access(CODE
LOWtests/test_role_expiry.py213 def test_remove_expiry_makes_permanent(CODE
LOWtests/test_role_expiry.py254 def test_revoked_role_denies_access(CODE
LOWtests/test_role_expiry.py280 def test_reactivate_revoked_role_via_update_expiry(CODE
LOWtests/test_role_expiry.py315 def test_reactivate_revoked_role_via_remove_expiry(CODE
LOWtests/test_role_expiry.py346 def test_get_user_roles_returns_all_states(CODE
LOWtests/test_ip_restrictions.py53def test_login_honours_forwarded_client_ip(ip_restricted_user):CODE
LOWtests/test_ip_restrictions.py65def test_api_token_is_bound_to_the_users_allowed_ranges(ip_restricted_user):CODE
LOWtests/conftest.py1346def wait_rdp_session_authorized(api, username, timeout):CODE
LOWtests/test_secret_backend_vault.py528 # def test_mysql_target_password_from_vault(self, processes: ProcessManager, timeout):COMMENT
LOWtests/test_secret_backend_vault.py126 def test_resolve_via_admin_api(self, processes: ProcessManager, backend_engine, timeout, stop_at_end):CODE
LOWtests/test_secret_backend_vault.py155 def test_backend_health_and_listing(self, processes: ProcessManager, backend_engine, timeout, stop_at_end):CODE
LOWtests/test_secret_backend_vault.py179 def test_multiple_backends_resolve_independently(self, processes: ProcessManager, backend_engine, timeout, stop_at_eCODE
LOWtests/test_secret_backend_vault.py212 def test_multiple_backends_independent_health(self, processes: ProcessManager, backend_engine, timeout, stop_at_end)CODE
LOWtests/test_secret_backend_vault.py245 def test_duplicate_or_invalid_backend_name_is_rejected(self, processes: ProcessManager, shared_wg, timeout):CODE
LOWtests/test_secret_backend_vault.py261 def test_update_keeps_secret_when_omitted(self, processes: ProcessManager, backend_engine, timeout, stop_at_end):CODE
LOWtests/test_secret_backend_vault.py329 def test_secret_reference_usage_reports_target(self, processes: ProcessManager, shared_wg, timeout):CODE
LOWtests/test_secret_backend_vault.py370 def test_secret_reference_usage_multiple_targets_share_secret(CODE
LOWtests/test_secret_backend_vault.py452 def test_postgres_target_password_from_vault(self, processes: ProcessManager, backend_engine, timeout, stop_at_end):CODE
LOWtests/test_secret_backend_vault.py588 def test_ssh_target_password_from_vault(self, processes: ProcessManager, backend_engine, timeout, stop_at_end):CODE
LOWtests/test_secret_backend_vault.py650 def test_vnc_target_password_from_vault(self, processes: ProcessManager, backend_engine, timeout, stop_at_end):CODE
LOWtests/test_secret_backend_vault.py719 def test_rdp_target_password_from_vault(self, processes: ProcessManager, backend_engine, timeout, stop_at_end):CODE
LOWtests/test_secret_backend_vault.py853 def test_unreachable_backend_is_isolated(self, processes: ProcessManager, timeout, stop_at_end):CODE
LOWtests/test_secret_backend_vault.py930 def test_ssh_client_key_from_vault(self, processes: ProcessManager, backend_engine, timeout, stop_at_end):CODE
LOWtests/test_admin_approval_permissions.py34 def test_session_permissions_alone_grant_no_access(CODE
LOWtests/test_admin_approval_permissions.py76 def test_approve_sessions_permission_allows_approval(CODE
LOWtests/test_admin_approval_permissions.py102 def test_cannot_approve_own_session(CODE
LOWtests/test_admin_approval_permissions.py136 def test_target_editor_may_approve_own_session(CODE
LOWtests/test_admin_approval_permissions.py169 def test_audit_records_the_resolver(CODE
LOWtests/test_ssh_target_cert_auth.py153 def test_connects_and_the_target_logs_the_key_id(CODE
LOWtests/test_ssh_target_cert_auth.py179 def test_principal_outside_the_role_is_refused(CODE
LOWtests/test_ssh_target_cert_auth.py193 def test_unknown_role_is_reported(CODE
LOWtests/test_ssh_target_cert_auth.py206 def test_signing_is_gated_by_the_backends_allowed_paths(CODE
LOWtests/test_ssh_target_cert_auth.py226 def test_unknown_backend_is_reported(CODE
LOWtests/test_ssh_target_cert_auth.py239 def test_forced_command_from_the_role_is_refused(CODE
LOWtests/test_ssh_target_cert_auth.py253 def test_host_key_check_issues_no_certificate(CODE
LOWtests/test_ssh_target_cert_auth.py265 def test_session_through_a_jump_host(CODE
LOWtests/test_ssh_target_cert_auth.py276 def test_host_key_check_through_a_jump_host_stops_at_the_target(CODE
LOWtests/test_ssh_target_cert_auth.py302 def test_web_client_failure_is_logged(CODE
LOWtests/test_postgres_admin_approval.py89 async def test_web_then_admin_approval(CODE
LOWtests/test_postgres_admin_approval.py154 async def test_a_ticket_cannot_answer_its_users_login_approval(CODE
LOWtests/test_postgres_admin_approval.py264 async def test_pending_count_readable_with_session_cookie(CODE
LOWtests/test_postgres_admin_approval.py323 def test_inbox_counts_sessions_and_tickets(CODE
LOWtests/test_postgres_admin_approval.py400 def test_ticket_is_held_for_approval(CODE
205 more matches not shown…
Decorative Section Separators36 hits · 135 pts
SeverityFileLineSnippetContext
MEDIUM⚡docker/local-testing/login-protection/seed.sh11# ── colour helpers ────────────────────────────────────────────────────────────COMMENT
MEDIUM⚡docker/local-testing/login-protection/seed.sh20# ── helpers ───────────────────────────────────────────────────────────────────COMMENT
MEDIUM⚡docker/local-testing/login-protection/seed.sh29# ── check if already seeded ───────────────────────────────────────────────────COMMENT
MEDIUM⚡docker/local-testing/login-protection/seed.sh44# ── create role ───────────────────────────────────────────────────────────────COMMENT
MEDIUM⚡docker/local-testing/login-protection/seed.sh49# ── create user ───────────────────────────────────────────────────────────────COMMENT
MEDIUM⚡docker/local-testing/login-protection/seed.sh54# ── add password credential ───────────────────────────────────────────────────COMMENT
MEDIUM⚡docker/local-testing/login-protection/seed.sh58# ── assign user to role ───────────────────────────────────────────────────────COMMENT
MEDIUM⚡docker/local-testing/login-protection/seed.sh62# ── create SSH target ─────────────────────────────────────────────────────────COMMENT
MEDIUMdocker/local-testing/login-protection/seed.sh79# ── assign target to role ─────────────────────────────────────────────────────COMMENT
MEDIUM⚡docker/local-testing/login-protection/start.sh17# ── colours ──────────────────────────────────────────────────────────────────COMMENT
MEDIUM⚡docker/local-testing/login-protection/start.sh24# ── preflight ────────────────────────────────────────────────────────────────COMMENT
MEDIUM⚡docker/local-testing/login-protection/start.sh29# ── kill any previous instance ───────────────────────────────────────────────COMMENT
MEDIUM⚡docker/local-testing/login-protection/start.sh40# ── pull + start Docker targets ───────────────────────────────────────────────COMMENT
MEDIUM⚡docker/local-testing/login-protection/start.sh47# ── wait for SSH target to accept connections ─────────────────────────────────COMMENT
MEDIUM⚡docker/local-testing/login-protection/start.sh56# ── prepare data directory ───────────────────────────────────────────────────COMMENT
MEDIUM⚡docker/local-testing/login-protection/start.sh64# ── unattended-setup (only if not already initialised) ───────────────────────COMMENT
MEDIUMdocker/local-testing/login-protection/start.sh91# ── start warpgate ────────────────────────────────────────────────────────────COMMENT
MEDIUMdocker/local-testing/login-protection/start.sh101# ── wait for warpgate HTTP ────────────────────────────────────────────────────COMMENT
MEDIUMdocker/local-testing/login-protection/start.sh113# ── seed users / targets / roles ─────────────────────────────────────────────COMMENT
MEDIUMdocker/local-testing/login-protection/start.sh117# ── done ──────────────────────────────────────────────────────────────────────COMMENT
MEDIUMtests/test_secret_backend_vault.py1005 # ── AppRole auth method (not just static Token) ──────────────────────────COMMENT
MEDIUM⚡tests/test_login_protection.py94# ── test class ─────────────────────────────────────────────────────────────COMMENT
MEDIUM⚡tests/test_login_protection.py100 # ── endpoint smoke tests ────────────────────────────────────────────────COMMENT
MEDIUM⚡tests/test_login_protection.py130 # ── failure recording ───────────────────────────────────────────────────COMMENT
MEDIUMtests/test_login_protection.py14# ── shared helpers ─────────────────────────────────────────────────────────COMMENT
MEDIUMtests/test_login_protection.py166 # ── IP blocking ─────────────────────────────────────────────────────────COMMENT
MEDIUMtests/test_login_protection.py263 # ── user lockout ────────────────────────────────────────────────────────COMMENT
MEDIUMtests/test_login_protection.py359 # ── hot-reload ──────────────────────────────────────────────────────────COMMENT
MEDIUMtests/test_login_protection.py454 # ── SSH protocol ─────────────────────────────────────────────────────────COMMENT
MEDIUMtests/test_login_protection.py686 # ── admin exemption ──────────────────────────────────────────────────────COMMENT
MEDIUMtests/test_http_user_auth_oidc.py230# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_http_user_auth_oidc.py232# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_http_user_auth_oidc.py993# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_http_user_auth_oidc.py997# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_kubernetes_integration.py41# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_kubernetes_integration.py43# ---------------------------------------------------------------------------COMMENT
Over-Commented Block70 hits · 70 pts
SeverityFileLineSnippetContext
LOWdeny.toml1# This template contains all of the possible sections and their default valuesCOMMENT
LOWdeny.toml21# `target_family = "unix"` configuration, that only having windows targets inCOMMENT
LOWdeny.toml41# is recommended to pass `--all-features` on the cmd line insteadCOMMENT
LOWdeny.toml81# See Git Authentication for more information about setting up git authentication.COMMENT
LOWdeny.toml101# the workspace that is being checked. This can be overridden by allowing/denyingCOMMENT
LOWdeny.toml121 # is a direct dependency of the otherwise banned crateCOMMENT
LOWdeny.toml141# "tokio-rustls",COMMENT
LOWdeny.toml161COMMENT
LOWwarpgate-common/src/error.rs41 ExternalHostNotWhitelisted(String, Vec<String>),COMMENT
LOWwarpgate-common/src/config/mod.rs281/// The set of admin permissions a principal holds, folded from their assigned roles once soCOMMENT
LOWwarpgate-common/src/config/target.rs301COMMENT
LOWwarpgate-common/src/config/target.rs321 /// Show the target's own sign-in screen instead of logging on automatically.COMMENT
LOWwarpgate-common/src/auth/state.rs21COMMENT
LOWwarpgate-protocol-kubernetes/src/correlator.rs81/// join a session in flight wait on the mutex, so a `kubectl` command's fan-outCOMMENT
LOWwarpgate-protocol-kubernetes/src/correlator.rs121COMMENT
LOWwarpgate-protocol-kubernetes/src/audit.rs1//! Classification of Kubernetes API requests into the operations worth auditing.COMMENT
LOWwarpgate-protocol-kubernetes/src/server/handlers.rs61/// mid-stream drops its TCP connection without a websocket close (how aCOMMENT
LOWwarpgate-protocol-kubernetes/src/server/auth.rs221}COMMENT
LOWwarpgate-web-desktop/src/jpeg.rs1//! JPEG re-encoding for backends that only emit raw framebuffer tiles.COMMENT
LOWwarpgate-db-entities/src/Parameters.rs21 Connect,COMMENT
LOWwarpgate-database-protocols/src/error.rs21#[error("unexpected null; try decoding as an `Option`")]COMMENT
LOWwarpgate-database-protocols/src/error.rs41 #[error("error occurred while attempting to establish a TLS connection: {0}")]COMMENT
LOWwarpgate-database-protocols/src/error.rs81 /// because another task encountered too many errors while trying to open a new connection.COMMENT
LOWwarpgate-database-protocols/src/lib.rs1#![allow(clippy::pedantic)]COMMENT
LOWwarpgate-protocol-vnc/src/server/rfb.rs1//! Low-level RFB (VNC) and VeNCrypt handshake helpers.COMMENT
LOWwarpgate-protocol-rdp/src/server/mod.rs1//! Native RDP server endpoint.COMMENT
LOWwarpgate-protocol-rdp/src/server/rdp.rs341 width: u16::try_from(width).ok()?,COMMENT
LOWwarpgate-protocol-rdp/src/server/rdp.rs361 out: mpsc::UnboundedSender<Event>,COMMENT
LOWtests/test_secret_backend_vault.py521 # flip the Vault-stored value; the same target must now fail, proving the passwordCOMMENT
LOWtests/test_secret_backend_vault.py541 # api.create_password_credential(user.id, sdk.NewPasswordCredential(password="123"))COMMENT
LOWtests/test_secret_backend_vault.py561 # )COMMENT
LOWtests/test_secret_backend_vault.py721 # rdp_client.py), so unlike the other protocols this drives a real backend connectionCOMMENT
LOWtests/test_ssh_proto.py301 self,COMMENT
LOWtests/test_kubernetes_integration.py41# ---------------------------------------------------------------------------COMMENT
LOWtests/api_sdk/pyproject.toml61COMMENT
LOWwarpgate-sso/src/metadata.rs21///COMMENT
LOWwarpgate-sso/src/metadata.rs61/// dereferencing or handing to a browser.COMMENT
LOWwarpgate-sso/src/sso.rs41/// A group-style claim value: a single entry, or an array of entriesCOMMENT
LOWwarpgate-common-http/src/cluster_tls.rs1//! Inbound half of cluster peer authentication.COMMENT
LOWwarpgate-core/src/db_auth.rs41 /// When false, a policy requiring web approval denies before the successCOMMENT
LOWwarpgate-core/src/auth_state_store.rs261 Ok((user, policy))COMMENT
LOWwarpgate-core/src/credential_encryption.rs81 .await?;COMMENT
LOWwarpgate-core/src/recordings/desktop.rs141}COMMENT
LOWwarpgate-core/src/recordings/writer.rs21/// Capacity of both the disk-write queue and the live broadcast ring. They mustCOMMENT
LOWwarpgate-core/src/rate_limiting/mod.rs1//! ## HierarchyCOMMENT
LOWwarpgate-core/src/login_protection/cache.rs21#[derive(Clone, Debug)]COMMENT
LOWwarpgate-core/src/approvals/mod.rs1//! Common mechanism for approvals:COMMENT
LOWwarpgate-core/src/approvals/gate.rs81 Self::Refused | Self::Expired => Err(WarpgateError::SessionNotApproved),COMMENT
LOWwarpgate-core/src/protocols/desktop.rs201/// `E0` prefix that distinguishes e.g. the nav cluster from the numeric keypad.COMMENT
LOWwarpgate-core/src/protocols/framebuffer.rs1//! Server-side framebuffer reconstruction from a desktop delta stream.COMMENT
LOWwarpgate-protocol-mysql/src/relay.rs21/// so the client can have negotiated capabilities the target turns out to lackCOMMENT
LOWwarpgate-protocol-ssh/src/command_detector.rs1//! Heuristic recovery of shell commands from an interactive PTY byte stream.COMMENT
LOWwarpgate-protocol-ssh/src/server/session.rs2621COMMENT
LOW.github/workflows/codeql.yml1# For most projects, this workflow file will not need changing; you simply needCOMMENT
LOW.github/workflows/codeql.yml61 # Add any setup steps before running the `github/codeql-action/init` action.COMMENT
LOW.github/workflows/scorecard.yml41 - name: "Run analysis"COMMENT
LOWwarpgate-admin/src/api/cluster_proxy.rs1//! Cross-node proxy for node-owned resources.COMMENT
LOWwarpgate-admin/src/api/secret_backends.rs181 #[oai(status = 200)]COMMENT
LOWwarpgate-web/src/common/desktopClipboard.ts101 (this.isMac ? e.metaKey : e.ctrlKey) &&COMMENT
LOWwarpgate-protocol-http/src/session_storage.rs21use crate::common::SessionExt;COMMENT
10 more matches not shown…
Empty Error Handlers12 hits · 60 pts
SeverityFileLineSnippetContext
HIGHtests/vnc_client.py215except OSError:CODE
HIGHtests/conftest.py301except psutil.NoSuchProcess:CODE
HIGHtests/conftest.py287except psutil.NoSuchProcess:CODE
HIGHtests/conftest.py891except Exception:CODE
HIGHtests/conftest.py956except Exception:CODE
HIGHtests/conftest.py298except psutil.NoSuchProcess:CODE
HIGHtests/test_ssh_proto.py558except socket.timeout:CODE
HIGHtests/test_login_protection.py155except Exception:CODE
HIGHtests/test_kubernetes_user_auth_ticket.py288except (ConnectionResetError, asyncio.CancelledError):CODE
HIGHtests/test_cluster_failover.py76except psutil.TimeoutExpired:CODE
HIGHtests/test_cluster_failover.py71except psutil.NoSuchProcess:CODE
HIGHtests/test_json_logs.py72except Exception:CODE
Unused Imports22 hits · 19 pts
SeverityFileLineSnippetContext
LOWtests/test_role_expiry.py18CODE
LOWtests/conftest.py30CODE
LOWtests/test_secret_backend_vault.py18CODE
LOWtests/test_secret_backend_vault.py18CODE
LOWtests/test_secret_backend_vault.py18CODE
LOWtests/test_secret_backend_vault.py18CODE
LOWtests/test_http_proto.py6CODE
LOWtests/test_http_user_auth_otp.py8CODE
LOWtests/test_http_basic.py8CODE
LOWtests/test_login_protection.py11CODE
LOWtests/test_http_user_auth_ticket.py7CODE
LOWtests/test_http_user_auth_logout.py6CODE
LOWtests/test_cluster_session_close.py4CODE
LOWtests/test_http_user_auth_oidc.py13CODE
LOWtests/test_ticket_requests.py6CODE
LOWtests/test_http_websocket.py14CODE
LOWtests/test_http_user_auth_password.py6CODE
LOWtests/test_http_user_auth_oidc_backchannel.py12CODE
LOWtests/test_api.py19CODE
LOWtests/test_http_redirects.py6CODE
LOWtests/approval_util.py14CODE
LOWtests/test_http_csrf.py12CODE
Verbosity Indicators7 hits · 13 pts
SeverityFileLineSnippetContext
LOW⚡tests/test_login_protection.py383 # Step 1: 3 failures below initial threshold of 5 → no lockoutCOMMENT
LOW⚡tests/test_login_protection.py392 # Step 2: lower threshold to 2 via admin API (no restart)COMMENT
LOW⚡tests/test_login_protection.py396 # Step 3: attempt N — total=4 in window, new threshold=2.COMMENT
LOW⚡tests/test_login_protection.py402 # Step 4: attempt N+1 — check_user_locked now finds the lockout.COMMENT
LOW⚡tests/test_login_protection.py429 # Step 1: 2 failuresCOMMENT
LOW⚡tests/test_login_protection.py434 # Step 2: raise threshold to 10COMMENT
LOW⚡tests/test_login_protection.py438 # Step 3: 2 more failures (total 4 in window, threshold now 10) — must NOT lockCOMMENT
Structural Annotation Overuse7 hits · 13 pts
SeverityFileLineSnippetContext
LOW⚡tests/test_login_protection.py383 # Step 1: 3 failures below initial threshold of 5 → no lockoutCOMMENT
LOW⚡tests/test_login_protection.py392 # Step 2: lower threshold to 2 via admin API (no restart)COMMENT
LOW⚡tests/test_login_protection.py396 # Step 3: attempt N — total=4 in window, new threshold=2.COMMENT
LOW⚡tests/test_login_protection.py402 # Step 4: attempt N+1 — check_user_locked now finds the lockout.COMMENT
LOW⚡tests/test_login_protection.py429 # Step 1: 2 failuresCOMMENT
LOW⚡tests/test_login_protection.py434 # Step 2: raise threshold to 10COMMENT
LOW⚡tests/test_login_protection.py438 # Step 3: 2 more failures (total 4 in window, threshold now 10) — must NOT lockCOMMENT
Self-Referential Comments4 hits · 12 pts
SeverityFileLineSnippetContext
MEDIUMtests/test_role_expiry.py356 # Create a second roleCOMMENT
MEDIUMtests/test_ticket_requests.py440 # Create a ticketCOMMENT
MEDIUMtests/test_json_logs.py28 # Create a temporary file to capture log outputCOMMENT
MEDIUMtests/test_json_logs.py120 # Create a temporary file to capture log outputCOMMENT
Deep Nesting13 hits · 12 pts
SeverityFileLineSnippetContext
LOWtests/conftest.py217CODE
LOWtests/conftest.py222CODE
LOWtests/conftest.py271CODE
LOWtests/test_rdp_web.py21CODE
LOWtests/test_secret_backend_vault.py719CODE
LOWtests/test_secret_backend_vault.py782CODE
LOWtests/util.py86CODE
LOWtests/util.py92CODE
LOWtests/test_ssh_proto.py300CODE
LOWtests/test_ssh_proto.py380CODE
LOWtests/test_kubernetes_user_auth_ticket.py399CODE
LOWtests/test_kubernetes_user_auth_ticket.py528CODE
LOWtests/test_cluster_web_approval.py15CODE
Synthetic Comment Markers1 hit · 8 pts
SeverityFileLineSnippetContext
HIGHSECURITY.md35* If generated by AI, include the name of the model used.COMMENT
Excessive Try-Catch Wrapping8 hits · 7 pts
SeverityFileLineSnippetContext
LOWtests/conftest.py891 except Exception:STRING
LOWtests/conftest.py956 except Exception:CODE
LOWtests/test_vnc_user_auth_in_browser.py78 except Exception as error: # noqa: BLE001CODE
LOWtests/test_login_protection.py155 except Exception:CODE
LOWtests/test_recordings_s3.py40 except Exception:CODE
LOWtests/test_vnc_user_auth_otp_and_web.py91 except Exception as error: # noqa: BLE001CODE
LOWtests/test_admin_approval_protocols.py382 except Exception as error: # noqa: BLE001CODE
LOWtests/test_json_logs.py72 except Exception:CODE
Slop Phrases2 hits · 6 pts
SeverityFileLineSnippetContext
MEDIUMhelm/warpgate/values.yaml103# If you are using config_overrides, ca, ssh keyds form secrets and external databse you can use emptyDirCOMMENT
MEDIUMhelm/warpgate/values.yaml232# Alternatively, you can use strings, which lets you use additional templating features:COMMENT
AI Slop Vocabulary2 hits · 6 pts
SeverityFileLineSnippetContext
MEDIUMwarpgate/src/listener_supervisor.rs267 /// Watch the parent directories of the desired cert/key files (robust toCOMMENT
MEDIUMwarpgate/src/listener_supervisor.rs306 /// Matched by file name to be robust across absolute/relative/symlinked pathsCOMMENT
AI Structural Patterns2 hits · 2 pts
SeverityFileLineSnippetContext
LOWtests/conftest.py966CODE
LOWtests/test_http_user_auth_oidc.py37CODE
Fake / Example Data1 hit · 1 pts
SeverityFileLineSnippetContext
LOWwarpgate-db-entities/src/Parameters.rs433 email: "user@example.com".into(),CODE