the runtime your coding agents live on
This report summarizes scanner evidence for ogulcancelik/herdr, a Rust project with 47,103 GitHub stars. SynthScan examined 382,671 lines of code across 623 source files, recording 341 pattern matches distributed across 15 syntactic categories. The legacy adjusted pattern signal is 1.1 (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.
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.
Can maintainers explain intent, assumptions, and trade-offs? 272 finding(s).
Are imports declared and package/API names verified? 32 finding(s).
Are wrappers, guards, and repeated structures necessary? 217 finding(s).
Which changes need focused human review? 341 finding(s).
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.
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.
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.
The scanner identified 341 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.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/test_release.py | 58 | def test_promotion_excludes_newer_master_and_records_explicit_previous_stable(self): | CODE |
| LOW | scripts/test_release.py | 73 | def test_code_dependencies_schema_and_build_changes_are_rejected(self): | CODE |
| LOW | scripts/test_release.py | 89 | def test_release_docs_and_skill_are_allowed_but_symlinks_are_not(self): | CODE |
| LOW | scripts/test_release.py | 100 | def test_required_release_files_cannot_be_deleted_but_website_pages_can(self): | CODE |
| LOW⚡ | scripts/test_release.py | 112 | def test_preview_source_accepts_master_history_and_rejects_unpublished_branch(self): | CODE |
| LOW⚡ | scripts/test_release.py | 120 | def test_preview_source_rejects_legacy_dispatch_even_on_master(self): | CODE |
| LOW⚡ | scripts/test_release.py | 127 | def test_wrong_ancestry_and_mismatched_version_fail(self): | CODE |
| LOW⚡ | scripts/test_release.py | 134 | def test_published_preview_requires_immutable_complete_release_and_matching_remote_tag(self): | CODE |
| LOW | scripts/test_release.py | 159 | def test_missing_provenance_or_stale_previous_release_fails(self): | CODE |
| LOW | scripts/test_release.py | 173 | def test_hotfix_isolated_from_master_and_metadata_sync_preserves_master_code(self): | CODE |
| LOW | scripts/preview.py | 33 | def read_endpoint_protocol_generation( | CODE |
| LOW | scripts/test_docs_translation_parity.py | 11 | def test_heading_outline_ignores_fenced_code_blocks(self) -> None: | CODE |
| LOW | scripts/test_docs_translation_parity.py | 21 | def test_parity_accepts_translated_heading_text_with_same_shape(self) -> None: | CODE |
| LOW | scripts/test_docs_translation_parity.py | 38 | def test_parity_reports_missing_heading_sections(self) -> None: | CODE |
| LOW | scripts/test_docs_translation_parity.py | 62 | def test_parity_reports_missing_and_stale_files(self) -> None: | CODE |
| LOW | scripts/test_unix_installer.py | 148 | def test_valid_download_uses_each_supported_checksum_tool(self) -> None: | STRING |
| LOW | scripts/test_unix_installer.py | 160 | def test_android_is_rejected_before_replacing_existing_binary(self) -> None: | STRING |
| LOW | scripts/test_unix_installer.py | 175 | def test_missing_uname_operating_system_flag_keeps_linux_supported(self) -> None: | STRING |
| LOW | scripts/test_unix_installer.py | 184 | def test_checksum_mismatch_does_not_replace_existing_binary(self) -> None: | STRING |
| LOW | scripts/test_unix_installer.py | 195 | def test_missing_checksum_fails_without_replacing_existing_binary(self) -> None: | STRING |
| LOW | scripts/test_windows_cross.py | 11 | def test_libc_configuration_matches_xwin_layout(self): | CODE |
| LOW | scripts/test_windows_cross.py | 30 | def test_persistent_configuration_and_explicit_override(self): | CODE |
| LOW | scripts/test_windows_cross.py | 45 | def test_missing_setup_does_not_run_build_or_download(self): | CODE |
| LOW | scripts/test_windows_cross.py | 54 | def test_lint_passes_sdk_to_cargo_without_changing_parent_environment(self): | CODE |
| LOW | scripts/test_windows_cross.py | 66 | def test_license_acceptance_is_only_forwarded_when_explicit(self): | CODE |
| LOW⚡ | scripts/test_changelog.py | 69 | def test_prepare_release_moves_unreleased_into_versioned_section(self) -> None: | CODE |
| LOW⚡ | scripts/test_changelog.py | 78 | def test_prepare_release_accepts_bracketed_unreleased_heading(self) -> None: | CODE |
| LOW⚡ | scripts/test_changelog.py | 86 | def test_extract_section_body_returns_requested_version_only(self) -> None: | CODE |
| LOW⚡ | scripts/test_changelog.py | 93 | def test_build_latest_json_trims_notes(self) -> None: | CODE |
| LOW⚡ | scripts/test_changelog.py | 289 | def test_checked_in_product_announcement_is_valid_or_null(self) -> None: | CODE |
| LOW⚡ | scripts/test_changelog.py | 293 | def test_load_product_announcement_accepts_null(self) -> None: | CODE |
| LOW⚡ | scripts/test_changelog.py | 300 | def test_load_product_announcement_accepts_valid_object(self) -> None: | CODE |
| LOW⚡ | scripts/test_changelog.py | 426 | def test_ensure_manifest_is_outdated_rejects_same_or_newer_version(self) -> None: | CODE |
| LOW⚡ | scripts/test_changelog.py | 433 | def test_ensure_manifest_is_outdated_allows_older_version(self) -> None: | CODE |
| LOW⚡ | scripts/test_changelog.py | 436 | def test_canonicalize_manifest_requires_all_asset_targets(self) -> None: | CODE |
| LOW | scripts/test_changelog.py | 47 | def release_assets_with_digests() -> list[dict[str, str]]: | CODE |
| LOW | scripts/test_changelog.py | 106 | def test_build_latest_json_uses_selected_release_endpoint_generation(self) -> None: | CODE |
| LOW | scripts/test_changelog.py | 114 | def test_build_latest_json_embeds_notes_and_release_assets(self) -> None: | CODE |
| LOW | scripts/test_changelog.py | 141 | def test_build_latest_json_embeds_product_announcement(self) -> None: | CODE |
| LOW | scripts/test_changelog.py | 161 | def test_build_latest_json_preserves_previous_release_metadata(self) -> None: | CODE |
| LOW | scripts/test_changelog.py | 179 | def test_build_latest_json_accepts_release_metadata_assets(self) -> None: | CODE |
| LOW | scripts/test_changelog.py | 193 | def test_build_latest_json_preserves_release_metadata_protocol(self) -> None: | CODE |
| LOW | scripts/test_changelog.py | 206 | def test_build_latest_json_infers_release_metadata_protocol_from_notes(self) -> None: | CODE |
| LOW | scripts/test_changelog.py | 223 | def test_archived_releases_from_current_manifest_seeds_legacy_root(self) -> None: | CODE |
| LOW | scripts/test_changelog.py | 253 | def test_archived_releases_from_current_manifest_prefers_root_for_current_version(self) -> None: | CODE |
| LOW | scripts/test_changelog.py | 272 | def test_infer_protocol_from_notes(self) -> None: | CODE |
| LOW | scripts/test_changelog.py | 312 | def test_load_product_announcement_rejects_missing_file(self) -> None: | CODE |
| LOW | scripts/test_changelog.py | 318 | def test_load_product_announcement_rejects_missing_empty_or_extra_fields(self) -> None: | CODE |
| LOW | scripts/test_changelog.py | 332 | def test_load_product_announcement_rejects_invalid_id(self) -> None: | CODE |
| LOW | scripts/test_changelog.py | 342 | def test_manifest_from_release_payload_uses_release_body_and_asset_digests(self) -> None: | CODE |
| LOW | scripts/test_changelog.py | 372 | def test_manifest_from_release_payload_uses_explicit_compatibility_versions(self) -> None: | CODE |
| LOW | scripts/test_changelog.py | 393 | def test_manifest_from_release_payload_rejects_missing_digest(self) -> None: | CODE |
| LOW | scripts/test_changelog.py | 409 | def test_manifest_from_release_payload_rejects_missing_asset(self) -> None: | CODE |
| LOW | scripts/test_changelog.py | 452 | def test_ensure_manifest_matches_expected_normalizes_whitespace(self) -> None: | CODE |
| LOW | scripts/test_changelog.py | 485 | def test_current_release_assets_must_be_mirrored(self) -> None: | CODE |
| LOW | scripts/test_changelog.py | 505 | def test_current_release_assets_must_match_top_level_assets(self) -> None: | CODE |
| LOW | scripts/test_changelog.py | 525 | def test_ensure_manifest_matches_expected_rejects_different_notes(self) -> None: | CODE |
| LOW | scripts/test_changelog.py | 557 | def test_canonicalize_manifest_requires_protocol(self) -> None: | CODE |
| LOW | scripts/test_changelog.py | 568 | def test_ensure_manifest_matches_expected_rejects_different_protocol(self) -> None: | CODE |
| LOW⚡ | scripts/test_config_reference_check.py | 97 | def test_walks_nested_structs_into_dotted_keys(self) -> None: | STRING |
| 120 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | src/app/mod.rs | 2047 | assert!(app.state.keybinds.new_workspace.bindings.is_empty()); | CODE |
| CRITICAL | src/app/mod.rs | 2113 | assert!(app.state.keybinds.swap_pane_right.bindings.is_empty()); | CODE |
| CRITICAL | src/config/sidebar.rs | 716 | assert_eq!(config.ui.sidebar.agents.rows_by_agent.len(), agents.len()); | CODE |
| CRITICAL | src/server/headless/render.rs | 461 | let resize_panes = self.app.state.view.pane_infos.is_empty(); | CODE |
| CRITICAL | src/client/shell/tests/keybindings_settings.rs | 38 | assert_eq!(state.config.keybinds.keybinds.custom_commands.len(), 1); | CODE |
| CRITICAL | src/client/shell/tests/keybindings_settings.rs | 521 | state.config.keybinds.keybinds.new_tab.label().as_deref(), | CODE |
| CRITICAL | …c/client/shell/tests/agents_worktrees_notifications.rs | 697 | config.ui.sidebar.agents.rows_by_agent.insert( | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | crates/ghostty-vt/src/bindings.rs | 5061 | #[doc = " Text inserted some other way: IME commit, drag and drop, scripted\n input. Always written as text, never as a | COMMENT |
| LOW | tests/detach_reattach.rs | 741 | } | COMMENT |
| LOW | distribution/agent-detection/antigravity.toml | 1 | id = "agy" | COMMENT |
| LOW | distribution/agent-detection/grok.toml | 1 | id = "grok" | COMMENT |
| LOW | distribution/agent-detection/muse.toml | 1 | id = "muse" | COMMENT |
| LOW | src/handoff_runtime.rs | 1 | #[cfg(unix)] | COMMENT |
| LOW | src/selection.rs | 1 | //! Text selection and clipboard support. | COMMENT |
| LOW | src/selection.rs | 21 | #[derive(Debug, Clone, Copy, PartialEq, Eq)] | COMMENT |
| LOW | src/main.rs | 81 | # Existing manual behavior is unchanged unless this is true. | COMMENT |
| LOW | src/main.rs | 101 | # | COMMENT |
| LOW | src/main.rs | 121 | # kitty_graphics = true | COMMENT |
| LOW | src/main.rs | 141 | # Named punctuation such as minus, comma, ampersand, plus, and backtick is also accepted. | COMMENT |
| LOW | src/main.rs | 161 | # next_workspace = "" # optional, unset by default | COMMENT |
| LOW | src/main.rs | 181 | # focus_pane_right = "prefix+l" | COMMENT |
| LOW | src/main.rs | 201 | # navigate_pane_down = "j" | COMMENT |
| LOW | src/main.rs | 221 | # tabs = "" # e.g. "ctrl" makes ctrl+1..9 switch tabs directly | COMMENT |
| LOW | src/main.rs | 241 | # Minimum sidebar width when expanded (columns) | COMMENT |
| LOW | src/main.rs | 261 | COMMENT | |
| LOW | src/main.rs | 281 | # Pane scrollback lines to scroll per mouse wheel notch. | COMMENT |
| LOW | src/main.rs | 301 | # Disable for tmux-style internal splitters without an outside frame. | COMMENT |
| LOW | src/main.rs | 321 | # Ordered status entries at the right edge of the desktop tab bar. | COMMENT |
| LOW | src/main.rs | 341 | # status_indicators = "dots" | COMMENT |
| LOW | src/main.rs | 361 | # Custom values reported through workspace metadata use a $name token, for example $jj_status. | COMMENT |
| LOW | src/main.rs | 381 | # enabled = true | COMMENT |
| LOW | src/main.rs | 401 | # Milliseconds between automatic agent restores; 0 starts them without spacing. | COMMENT |
| LOW | src/main.rs | 421 | # an ASCII-capable mode so prefix commands register even when an IME is | COMMENT |
| LOW | src/pane.rs | 2081 | /// wraps whatever `prompt` function the user's profile left behind so each | COMMENT |
| LOW | src/detect/mod.rs | 21 | COMMENT | |
| LOW | src/detect/manifests/antigravity.toml | 1 | id = "agy" | COMMENT |
| LOW | src/detect/manifests/grok.toml | 1 | id = "grok" | COMMENT |
| LOW | src/detect/manifests/muse.toml | 1 | id = "muse" | COMMENT |
| LOW | src/pane/osc.rs | 481 | /// Maximum retained string length for agent OSC title and progress payloads. | COMMENT |
| LOW | src/pane/background_agent.rs | 1 | //! Keeps an agent's identity while job control moves it out of the foreground. | COMMENT |
| LOW | src/config/theme.rs | 41 | "kanagawa-lotus" | "lotus" => Some("kanagawa-lotus"), | COMMENT |
| LOW | src/config/model.rs | 441 | /// Close the focused pane. Default: "prefix+x" | COMMENT |
| LOW | src/config/model.rs | 461 | #[serde(skip_serializing_if = "Vec::is_empty")] | COMMENT |
| LOW | src/config/model.rs | 961 | /// Lines to scroll per mouse wheel notch. Default: 3. | COMMENT |
| LOW | src/config/model.rs | 981 | /// Show agent labels in split pane borders when no manual pane label is set. Default: false. | COMMENT |
| LOW | src/config/model.rs | 1081 | pub kitty_graphics: Option<bool>, | COMMENT |
| LOW | src/config/model.rs | 1101 | /// opencode, copilot, kimi, kiro, droid, amp, grok, hermes, kilo, | COMMENT |
| LOW | src/integration/mod.rs | 261 | const ANTIGRAVITY_CLI_HOOK_INSTALL_NAME: &str = "herdr-agent-state.sh"; | COMMENT |
| LOW | src/integration/assets/opencode/tui.js | 1 | // installed by herdr | COMMENT |
| LOW | src/platform/mod.rs | 81 | } | COMMENT |
| LOW | src/platform/mod.rs | 741 | COMMENT | |
| LOW | src/platform/windows.rs | 2601 | } | COMMENT |
| LOW | src/platform/windows.rs | 3161 | } | COMMENT |
| LOW | src/platform/windows.rs | 3181 | // | COMMENT |
| LOW | src/platform/windows.rs | 3201 | fn ime_open(open_status: isize) -> bool { | COMMENT |
| LOW | src/platform/windows.rs | 3401 | } | COMMENT |
| LOW | src/platform/linux.rs | 41 | /// cadence, so an unbounded walk lets accumulated descendants or unreaped zombies | COMMENT |
| LOW | src/platform/macos/shutdown.rs | 21 | const NOTIFY_STATUS_OK: u32 = 0; | COMMENT |
| LOW | src/platform/macos/shutdown.rs | 221 | } | COMMENT |
| LOW | src/platform/macos/launchd_spawn.rs | 1 | //! Starts the server daemon outside the launching terminal app. | COMMENT |
| LOW | src/server/socket_paths.rs | 1 | use std::io; | COMMENT |
| LOW | src/server/headless.rs | 1 | //! Headless server mode — runs the herdr event loop without a real terminal. | COMMENT |
| LOW | src/server/headless.rs | 141 | COMMENT | |
| LOW | src/server/autodetect.rs | 21 | COMMENT | |
| LOW | src/protocol/render_ansi.rs | 1 | //! Frame blitting — renders FrameData to the terminal using diff-based updates. | COMMENT |
| LOW | src/protocol/wire.rs | 1 | //! Wire protocol for herdr server/client communication. | COMMENT |
| LOW | src/protocol/wire.rs | 741 | /// | COMMENT |
| 7 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/integration/assets/devin/herdr-agent-state.sh | 49 | except Exception: | CODE |
| LOW | src/integration/assets/devin/herdr-agent-state.sh | 59 | except Exception: | CODE |
| LOW⚡ | src/integration/assets/devin/herdr-agent-state.sh | 72 | except Exception: | CODE |
| LOW⚡ | src/integration/assets/devin/herdr-agent-state.sh | 81 | except Exception: | CODE |
| LOW⚡ | src/integration/assets/devin/herdr-agent-state.sh | 90 | except Exception: | CODE |
| LOW | src/integration/assets/devin/herdr-agent-state.sh | 170 | except Exception: | CODE |
| LOW | src/integration/assets/devin/herdr-agent-state.sh | 173 | except Exception: | CODE |
| LOW | src/integration/assets/droid/herdr-agent-state.sh | 47 | except Exception: | CODE |
| LOW | src/integration/assets/droid/herdr-agent-state.sh | 75 | except Exception: | CODE |
| LOW | src/integration/assets/droid/herdr-agent-state.sh | 78 | except Exception: | CODE |
| LOW | src/integration/assets/qodercli/herdr-agent-state.sh | 37 | except Exception: | CODE |
| LOW | src/integration/assets/copilot/herdr-agent-state.sh | 43 | except Exception: | CODE |
| LOW | src/integration/assets/copilot/herdr-agent-state.sh | 88 | except Exception: | CODE |
| LOW | src/integration/assets/copilot/herdr-agent-state.sh | 91 | except Exception: | CODE |
| LOW | src/integration/assets/cursor/herdr-agent-state.sh | 21 | except Exception: | CODE |
| LOW | src/integration/assets/cursor/herdr-agent-state.sh | 57 | except Exception: | CODE |
| LOW | src/integration/assets/claude/herdr-agent-state.sh | 48 | except Exception: | CODE |
| LOW | src/integration/assets/claude/herdr-agent-state.sh | 95 | except Exception: | CODE |
| LOW | src/integration/assets/claude/herdr-agent-state.sh | 98 | except Exception: | CODE |
| LOW | src/integration/assets/codex/herdr-agent-state.sh | 48 | except Exception: | CODE |
| LOW | src/integration/assets/codex/herdr-agent-state.sh | 93 | except Exception: | CODE |
| LOW | src/integration/assets/codex/herdr-agent-state.sh | 96 | except Exception: | CODE |
| LOW | src/integration/assets/qwen/herdr-agent-session.sh | 46 | except Exception: | CODE |
| LOW | src/integration/assets/grok/herdr-agent-state.sh | 47 | except Exception: | CODE |
| LOW | src/integration/assets/grok/herdr-agent-state.sh | 98 | except Exception: | CODE |
| LOW | src/integration/assets/grok/herdr-agent-state.sh | 101 | except Exception: | CODE |
| LOW | src/integration/assets/mastracode/herdr-agent-state.sh | 48 | except Exception: | CODE |
| LOW | src/integration/assets/mastracode/herdr-agent-state.sh | 95 | except Exception: | CODE |
| LOW | src/integration/assets/mastracode/herdr-agent-state.sh | 98 | except Exception: | CODE |
| LOW | …ntegration/assets/antigravity_cli/herdr-agent-state.sh | 35 | except Exception: | CODE |
| LOW | …ntegration/assets/antigravity_cli/herdr-agent-state.sh | 73 | except Exception: | CODE |
| LOW | src/integration/assets/hermes/__init__.py | 48 | except Exception: | CODE |
| LOW | src/integration/assets/letta/herdr-agent-session.sh | 54 | except Exception: | CODE |
| LOW | src/integration/assets/kimi/herdr-agent-state.sh | 27 | except Exception: | CODE |
| LOW | src/integration/assets/kimi/herdr-agent-state.sh | 59 | except Exception: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/vendor_libghostty_vt.py | 1 | CODE | |
| LOW | scripts/preview.py | 2 | CODE | |
| LOW | scripts/test_docs_translation_parity.py | 1 | CODE | |
| LOW | scripts/test_unix_installer.py | 1 | CODE | |
| LOW | scripts/test_changelog.py | 1 | CODE | |
| LOW | scripts/capture_key_matrix.py | 23 | CODE | |
| LOW | scripts/test_config_reference_check.py | 1 | CODE | |
| LOW | scripts/agent_detection_manifest_check.py | 4 | CODE | |
| LOW | scripts/verify_suspicious_keys.py | 12 | CODE | |
| LOW | scripts/package_windows_conpty.py | 2 | CODE | |
| LOW | scripts/conventional_commits.py | 2 | CODE | |
| LOW | scripts/docs_translation_parity.py | 1 | CODE | |
| LOW | scripts/test_package_windows_conpty.py | 1 | CODE | |
| LOW | scripts/changelog.py | 2 | CODE | |
| LOW | scripts/capture_keys.py | 17 | CODE | |
| LOW | scripts/capture_keys.py | 23 | CODE | |
| LOW | scripts/config_reference_check.py | 17 | CODE | |
| LOW | scripts/test_vendor_libghostty_vt.py | 1 | CODE | |
| LOW | scripts/test_ui_hot_path_architecture.py | 1 | CODE | |
| LOW | scripts/capture_agent_screen.py | 4 | CODE | |
| LOW | scripts/test_vendor_portable_pty.py | 1 | CODE | |
| LOW | src/integration/assets/hermes/__init__.py | 6 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/test_release.py | 134 | CODE | |
| LOW | scripts/test_windows_cross.py | 30 | CODE | |
| LOW | scripts/release.py | 171 | CODE | |
| LOW | scripts/capture_key_matrix.py | 65 | CODE | |
| LOW | scripts/verify_suspicious_keys.py | 41 | CODE | |
| LOW | scripts/verify_suspicious_keys.py | 152 | CODE | |
| LOW | scripts/package_windows_conpty.py | 215 | CODE | |
| LOW | scripts/package_windows_conpty.py | 366 | CODE | |
| LOW | scripts/capture_keys.py | 33 | CODE | |
| LOW | scripts/test_ui_hot_path_architecture.py | 46 | CODE | |
| LOW | scripts/test_ui_hot_path_architecture.py | 114 | CODE | |
| LOW | scripts/windows_input/report.py | 166 | CODE | |
| LOW | scripts/windows_input/report.py | 326 | CODE | |
| LOW | scripts/windows_input/report.py | 341 | CODE | |
| LOW | scripts/windows_input/report.py | 543 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/main.rs | 258 | # Set false to let the terminal handle normal clicks, such as Cmd-clicking URLs. | COMMENT |
| LOW | src/main.rs | 263 | # Set false to retain drag or double-click word selection until Ctrl+C, | COMMENT |
| LOW | src/main.rs | 277 | # Set false to reduce visible flashing when switching back to Herdr. | COMMENT |
| LOW | src/main.rs | 288 | # Set false to create tabs immediately with generated names. | COMMENT |
| LOW | src/main.rs | 305 | # Set false to reclaim the scrollbar column and keep it out of terminal-native selections. | COMMENT |
| LOW | src/main.rs | 411 | # Set false to run plain ssh against your ssh config unchanged — this does not | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | crates/ghostty-vt/src/bindings.rs | 1855 | #[doc = " Return a selection snapshot with endpoints ordered as requested.\n\n Use GHOSTTY_SELECTION_ORDER_FORWARD t | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | scripts/test_vendor_libghostty_vt.py | 143 | self.assertIn("if (global.log == null) return;", sys_text) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | src/integration/assets/hermes/__init__.py | 48 | except Exception: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | src/app/api/plugins/mod.rs | 3881 | // ── Platform compatibility tests ───────────────────────────────────────── | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | distribution/latest.json | 401 | "notes": "### Added\n- Added the `vesper` built-in theme. (#71, thanks @nexxeln)\n- Added `herdr --remote <ssh-tar | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | distribution/latest.json | 527 | "notes": "### Changed\n- The expanded sidebar can now be split into resizable workspace and agent sections with a | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | distribution/latest.json | 635 | "notes": "### Added\n- Added a local Unix socket API for controlling running herdr sessions, including workspace a | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/pane.rs | 4459 | ("CLAUDE_CODE_MESSAGING_TOKEN".into(), "fake-token".into()), | CODE |
| LOW | src/remote/attach.rs | 6130 | let path = local_forward_socket_path("user@example.com", "work"); | CODE |