🗃 Open source self-hosted web archiving. Takes URLs/browser history/bookmarks/Pocket/Pinboard/etc., saves HTML, JS, PDFs, media, and more...
This report summarizes scanner evidence for ArchiveBox/ArchiveBox, a Python project with 28,729 GitHub stars. SynthScan examined 212,798 lines of code across 784 source files, recording 2752 pattern matches distributed across 24 syntactic categories. The legacy adjusted pattern signal is 20.3 (Elevated 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.
Can maintainers explain intent, assumptions, and trade-offs? 1996 finding(s).
Are imports declared and package/API names verified? 282 finding(s).
Are wrappers, guards, and repeated structures necessary? 2224 finding(s).
Which changes need focused human review? 2752 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 2752 distinct pattern matches across 24 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 | bin/take_screenshot.js | 67 | async function waitForVisibleCardPreviews(page, timeout = 45000) { | CODE |
| LOW | .github/pages/verify.py | 46 | def verify_screenshot_references(output, canonical): | CODE |
| LOW | archivebox/misc/db.py | 102 | def database_display_location() -> str: | CODE |
| LOW | archivebox/misc/db.py | 177 | def truncate_overlong_charfields(instance=None, **kwargs) -> None: | CODE |
| LOW | archivebox/misc/db.py | 204 | def rebuild_models_from_migration_state(apps, schema_editor, app_label: str, model_names: list[str]) -> None: | CODE |
| LOW | archivebox/misc/util.py | 28 | def filter_queryset_by_uuid_substring(queryset, slug: str, field: str = "id"): | CODE |
| LOW | archivebox/misc/util.py | 163 | def split_comma_separated_urls(url: str): | CODE |
| LOW | archivebox/misc/checks.py | 26 | def _migration_interrupt_message(*, before_apply: bool = False) -> str: | CODE |
| LOW | archivebox/misc/checks.py | 38 | def _exit_on_migration_interrupt(): | CODE |
| LOW⚡ | archivebox/misc/checks.py | 203 | def is_archivebox_source_root(path: Path | str | None = None) -> bool: | CODE |
| LOW⚡ | archivebox/misc/checks.py | 212 | def check_not_inside_source_dir(path: Path | str | None = None) -> None: | CODE |
| LOW⚡ | archivebox/misc/checks.py | 221 | def check_data_dir_permissions(config=None, **config_kwargs): | CODE |
| LOW | archivebox/misc/logging_util.py | 438 | def printable_dependency_version(name: str, dependency: dict) -> str: | CODE |
| LOW | archivebox/misc/serve_static.py | 72 | def add_replay_archive_fallbacks(response: HttpResponse) -> HttpResponse: | CODE |
| LOW | archivebox/misc/serve_static.py | 399 | def _build_directory_zip_response( | CODE |
| LOW | archivebox/misc/serve_static.py | 489 | async def _stream_ranged_file_async(ranged_file: "RangedFileReader"): | CODE |
| LOW | archivebox/misc/serve_static.py | 605 | def _extract_markdown_candidate(text: str) -> str: | CODE |
| LOW | archivebox/misc/serve_static.py | 629 | def _render_text_preview_document(text: str, title: str) -> str: | CODE |
| LOW | archivebox/misc/serve_static.py | 679 | def _render_image_preview_document(image_url: str, title: str) -> str: | CODE |
| LOW | archivebox/misc/serve_static.py | 729 | def _encoded_responses_image_url(image_url: str, page_url: str | None) -> str | None: | CODE |
| LOW | archivebox/misc/serve_static.py | 741 | def _index_responses_paths_for_html_images( | CODE |
| LOW | archivebox/misc/serve_static.py | 794 | def _rewrite_html_image_sources_to_responses( | CODE |
| LOW | archivebox/misc/serve_static.py | 846 | def _rewrite_html_image_sources_for_request( | CODE |
| LOW | archivebox/misc/serve_static.py | 867 | def _apply_transformed_html_preview_style(html_text: str) -> str: | CODE |
| LOW | archivebox/misc/serve_static.py | 875 | def _set_transformed_response_headers( | CODE |
| LOW | archivebox/misc/serve_static.py | 889 | def _render_markdown_document(markdown_text: str) -> str: | CODE |
| LOW | archivebox/misc/serve_static.py | 911 | def _is_risky_replay_document(fullpath: Path, content_type: str) -> bool: | CODE |
| LOW | archivebox/misc/serve_static.py | 929 | def _apply_archive_replay_headers( | CODE |
| LOW | archivebox/misc/serve_static.py | 972 | def serve_static_with_byterange_support(request, path, document_root=None, show_indexes=False, is_archive_replay: bool = | CODE |
| LOW | archivebox/misc/serve_static.py | 348 | def _format_direntry_timestamp(stat_result: os.stat_result) -> str: | STRING |
| LOW | archivebox/core/admin_archiveresults.py | 45 | def build_abx_dl_display_command(result: ArchiveResult) -> str: | CODE |
| LOW | archivebox/core/admin_archiveresults.py | 56 | def build_abx_dl_replay_command(result: ArchiveResult, config=None) -> str: | CODE |
| LOW | archivebox/core/admin_archiveresults.py | 90 | def render_archiveresults_list(archiveresults_qs, limit=50, config=None, can_delete=False): | CODE |
| LOW | archivebox/core/admin_archiveresults.py | 361 | def get_parent_object_from_request(self, request): | STRING |
| LOW | archivebox/core/admin_archiveresults.py | 521 | def get_admin_toolbar_actions(self, request, obj): | STRING |
| LOW⚡ | archivebox/core/models.py | 886 | def get_delete_after_config_value(self): | CODE |
| LOW⚡ | archivebox/core/models.py | 892 | def missing_delete_at_candidates(cls): | CODE |
| LOW⚡ | archivebox/core/models.py | 901 | def is_archivebox_internal_url(cls, url: str, *, config: Mapping[str, Any] | Any | None = None) -> bool: | CODE |
| LOW⚡ | archivebox/core/models.py | 2179 | def move_directory_to_invalid(snapshot_dir: Path): | CODE |
| LOW⚡ | archivebox/core/models.py | 3876 | def get_detail_page_auxiliary_items( | CODE |
| LOW | archivebox/core/models.py | 656 | def crawl_total_and_status_counts(cls, crawl_ids: Iterable[Any], *, status: str) -> dict[str, dict[str, int]]: | CODE |
| LOW | archivebox/core/models.py | 749 | def restore_paused_scheduler_marker(self) -> None: | CODE |
| LOW | archivebox/core/models.py | 763 | def reconcile_parent_lifecycle(self, *, lock_seconds: int = 60) -> bool | None: | CODE |
| LOW | archivebox/core/models.py | 796 | def finalize_completed_upload_results(self) -> int: | CODE |
| LOW | archivebox/core/models.py | 983 | def ensure_permissions_config(self, crawl_permissions: str | None = None) -> bool: | CODE |
| LOW | archivebox/core/models.py | 1003 | def validate_url_for_archiving(self, *, config: Mapping[str, Any] | Any | None = None) -> None: | CODE |
| LOW | archivebox/core/models.py | 1098 | def migrate_filesystem_to_current_version(self, source_dir: Path | None = None, config: "ArchiveBoxBaseConfig | None | CODE |
| LOW | archivebox/core/models.py | 1190 | def hydrate_archiveresult_output_metadata(self, snapshot_dir: Path | None = None) -> int: | CODE |
| LOW | archivebox/core/models.py | 1247 | def copy_file_without_overwriting(source: str, destination: str): | CODE |
| LOW | archivebox/core/models.py | 1322 | def _cleanup_old_migration_dir(self, old_dir: Path, new_dir: Path) -> bool: | CODE |
| LOW | archivebox/core/models.py | 1387 | def get_storage_path_for_version(self, version: str) -> Path: | CODE |
| LOW | archivebox/core/models.py | 1679 | def _detect_fs_version_from_index(data: dict) -> str: | CODE |
| LOW | archivebox/core/models.py | 1765 | def reconcile_with_index_json(self, output_dir: Path | None = None, update_existing_archive_results: bool = True): | CODE |
| LOW | archivebox/core/models.py | 1795 | def _merge_archive_results_from_index(self, index_data: dict, update_existing: bool = True): | CODE |
| LOW | archivebox/core/models.py | 1818 | def _create_archive_result_if_missing( | CODE |
| LOW | archivebox/core/models.py | 2073 | def convert_index_json_to_jsonl(self, output_dir: Path | None = None) -> bool: | CODE |
| LOW | archivebox/core/models.py | 2202 | def find_and_merge_duplicates(cls) -> int: | CODE |
| LOW | archivebox/core/models.py | 2652 | def _normalize_title_candidate(candidate: str | None, *, snapshot_url: str) -> str: | CODE |
| LOW | archivebox/core/models.py | 2811 | def remove_legacy_archive_symlink(self) -> None: | CODE |
| LOW | archivebox/core/models.py | 2826 | def reconcile_filesystem_links(self) -> None: | CODE |
| 1680 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | .github/pages/verify.py | 24 | except (BrokenPipeError, ConnectionResetError): | CODE |
| HIGH | archivebox/misc/system.py | 76 | except OSError: | CODE |
| HIGH | archivebox/misc/util.py | 321 | except (TypeError, ValueError, OSError): | CODE |
| HIGH | archivebox/misc/util.py | 330 | except ValueError: | CODE |
| HIGH | archivebox/misc/util.py | 441 | except Exception: | CODE |
| HIGH | archivebox/misc/util.py | 446 | except Exception: | CODE |
| HIGH | archivebox/misc/util.py | 451 | except Exception: | CODE |
| HIGH | archivebox/misc/checks.py | 49 | except Exception: | CODE |
| HIGH | archivebox/misc/logging_util.py | 79 | except ValueError: | CODE |
| HIGH | archivebox/misc/logging_util.py | 62 | except BaseException: # lgtm [py/catch-base-exception] | CODE |
| HIGH | archivebox/misc/logging_util.py | 70 | except Exception: | CODE |
| HIGH | archivebox/misc/logging_util.py | 76 | except (OSError, BrokenPipeError): | CODE |
| HIGH | archivebox/misc/jsonl.py | 81 | except json.JSONDecodeError: | CODE |
| HIGH | archivebox/misc/jsonl.py | 94 | except ValueError: | CODE |
| HIGH | archivebox/misc/serve_static.py | 275 | except Exception: | CODE |
| HIGH | archivebox/misc/serve_static.py | 1128 | except (OSError, UnicodeDecodeError, ValueError): | CODE |
| HIGH | archivebox/misc/serve_static.py | 1148 | except (OSError, ValueError): | CODE |
| HIGH | archivebox/misc/serve_static.py | 1182 | except (OSError, RuntimeError, ValueError): | CODE |
| HIGH | archivebox/misc/serve_static.py | 1236 | except (OSError, UnicodeDecodeError, ValueError): | CODE |
| HIGH | archivebox/core/models.py | 1241 | except OSError: | CODE |
| HIGH | archivebox/core/models.py | 1440 | except OSError: | CODE |
| HIGH | archivebox/core/models.py | 1446 | except (json.JSONDecodeError, OSError): | CODE |
| HIGH | archivebox/core/models.py | 1539 | except OSError: | CODE |
| HIGH | archivebox/core/models.py | 1545 | except (json.JSONDecodeError, OSError): | CODE |
| HIGH | archivebox/core/models.py | 1842 | except (TypeError, ValueError, OverflowError): | CODE |
| HIGH | archivebox/core/models.py | 1851 | except (TypeError, ValueError, OverflowError): | CODE |
| HIGH | archivebox/core/models.py | 3073 | except Snapshot.DoesNotExist: | CODE |
| HIGH | archivebox/core/models.py | 4255 | except ArchiveResult.DoesNotExist: | CODE |
| HIGH | archivebox/core/models.py | 4351 | except type(self).DoesNotExist: | CODE |
| HIGH | archivebox/core/models.py | 1736 | except (OSError, TypeError, ValueError, json.JSONDecodeError): | CODE |
| HIGH | archivebox/core/models.py | 4719 | except ValueError: | CODE |
| HIGH | archivebox/core/settings_logging.py | 100 | except Exception: | CODE |
| HIGH | archivebox/core/shutdown_util.py | 132 | except (psutil.NoSuchProcess, psutil.TimeoutExpired): | CODE |
| HIGH | archivebox/core/shutdown_util.py | 141 | except psutil.NoSuchProcess: | CODE |
| HIGH | archivebox/core/settings.py | 177 | except ImportError: | CODE |
| HIGH | archivebox/core/settings.py | 600 | except ImportError: | CODE |
| HIGH | archivebox/core/views.py | 1023 | except Http404: | CODE |
| HIGH | archivebox/core/views.py | 1623 | except ValueError: | CODE |
| HIGH | archivebox/core/views.py | 656 | except ValueError: | CODE |
| HIGH | archivebox/config/version.py | 26 | except importlib.metadata.PackageNotFoundError: | CODE |
| HIGH | archivebox/config/version.py | 35 | except FileNotFoundError: | CODE |
| HIGH | archivebox/config/version.py | 62 | except Exception: | CODE |
| HIGH | archivebox/config/version.py | 109 | except Exception: | CODE |
| HIGH | archivebox/config/version.py | 55 | except Exception: | CODE |
| HIGH | archivebox/config/version.py | 68 | except Exception: | CODE |
| HIGH | archivebox/config/paths.py | 48 | except (OSError, FileNotFoundError, PermissionError): | CODE |
| HIGH | archivebox/config/paths.py | 76 | except (OSError, FileNotFoundError, PermissionError): | CODE |
| HIGH | archivebox/config/paths.py | 155 | except OSError: | CODE |
| HIGH | archivebox/config/paths.py | 161 | except OSError: | CODE |
| HIGH | archivebox/config/paths.py | 185 | except (OSError, PermissionError): | CODE |
| HIGH | archivebox/config/paths.py | 231 | except Exception: | CODE |
| HIGH | archivebox/config/paths.py | 245 | except Exception: | CODE |
| HIGH | archivebox/config/paths.py | 272 | except Exception: | CODE |
| HIGH | archivebox/config/collection.py | 326 | except Exception: | CODE |
| HIGH | archivebox/config/permissions.py | 285 | except (FileNotFoundError, PermissionError): | CODE |
| HIGH | archivebox/config/configset.py | 98 | except (TypeError, ValueError): | CODE |
| HIGH | archivebox/config/views.py | 302 | except (ImportError, RuntimeError, TypeError, ValueError): | CODE |
| HIGH | archivebox/config/views.py | 362 | except (RuntimeError, TypeError, ValueError): | CODE |
| HIGH | archivebox/tests/test_misc_checks.py | 112 | except KeyboardInterrupt: | CODE |
| HIGH | archivebox/tests/conftest.py | 713 | except ProcessLookupError: | CODE |
| 87 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | docs/test_codeblocks_manifest.py | 488 | f" (cd {ROOT} && UV_PROJECT_ENVIRONMENT={root_checkout_venv} {current_uv} --no-cache sync --loc | CODE |
| HIGH | .github/pages/verify.py | 82 | return null; | STRING |
| HIGH | archivebox/misc/checks.py | 117 | print(" docker compose pull && docker compose up -d", file=sys.stderr) | CODE |
| HIGH⚡ | archivebox/misc/serve_static.py | 133 | while (rest && urls.length < 64) { | CODE |
| HIGH⚡ | archivebox/misc/serve_static.py | 137 | urls.push(token.replace(/,+$/, "")); | CODE |
| HIGH⚡ | archivebox/misc/serve_static.py | 144 | if (!url.startsWith(prefix)) return null; | CODE |
| HIGH⚡ | archivebox/misc/serve_static.py | 151 | if (response.status !== 404 || request.method !== "GET" || | CODE |
| HIGH⚡ | archivebox/misc/serve_static.py | 157 | const name = this.collections.root || request.url.slice(this.replayPrefix.length).split("/", 1)[0]; | CODE |
| HIGH⚡ | archivebox/misc/serve_static.py | 161 | if (!collection || typeof collection.store?.lookupUrl !== "function" || collection.liveRedirectOnNotFound || | CODE |
| HIGH⚡ | archivebox/misc/serve_static.py | 202 | if (expired || size > 2 * 1024 * 1024) return []; | CODE |
| HIGH⚡ | archivebox/misc/serve_static.py | 212 | let base = referring[2], picture = null; | CODE |
| HIGH⚡ | archivebox/misc/serve_static.py | 216 | if (!/^https?:$/.test(url.protocol) || url.username || url.password) return null; | CODE |
| HIGH⚡ | archivebox/misc/serve_static.py | 216 | if (!/^https?:$/.test(url.protocol) || url.username || url.password) return null; | CODE |
| HIGH⚡ | archivebox/misc/serve_static.py | 219 | } catch {return null;} | CODE |
| HIGH⚡ | archivebox/misc/serve_static.py | 225 | if (/^<\/picture\b/i.test(tag)) {picture = null; continue;} | CODE |
| HIGH⚡ | archivebox/misc/serve_static.py | 227 | if (/^<source\b/i.test(tag)) {if (picture) picture.push(...urls); continue;} | CODE |
| HIGH⚡ | archivebox/misc/serve_static.py | 229 | groups.push([...new Set([...urls, ...(picture || [])])].slice(0, 64)); | CODE |
| HIGH | archivebox/misc/serve_static.py | 111 | if (!replay || typeof replay.handleFetch !== "function" || | CODE |
| HIGH | archivebox/misc/serve_static.py | 113 | replay.proxyOriginMode || replay.topFramePassthrough || replay.__abxArchiveFallbacks) return; | CODE |
| HIGH | archivebox/misc/serve_static.py | 172 | if (!api || new URL(referring[2]).origin !== `https://${api[1]}.com`) return response; | CODE |
| HIGH | archivebox/misc/serve_static.py | 179 | if (expired || !indexed || indexed.url !== url || alternative.status !== 200 || | CODE |
| HIGH⚡ | archivebox/core/widgets.py | 532 | return window.updateHiddenField_id_config || null; | CODE |
| HIGH⚡ | archivebox/core/widgets.py | 532 | return window.updateHiddenField_id_config || null; | CODE |
| HIGH⚡ | archivebox/core/widgets.py | 538 | return null; | CODE |
| HIGH⚡ | archivebox/core/widgets.py | 542 | return keyInput && keyInput.value.trim() === key; | CODE |
| HIGH⚡ | archivebox/core/widgets.py | 544 | return matches.length ? matches[0] : null; | CODE |
| HIGH⚡ | archivebox/core/widgets.py | 551 | return rows ? rows.lastElementChild : null; | CODE |
| HIGH⚡ | archivebox/core/widgets.py | 553 | return null; | CODE |
| HIGH⚡ | archivebox/core/widgets.py | 618 | if (!domain || seen[domain]) {{ | CODE |
| HIGH⚡ | archivebox/core/widgets.py | 623 | domains.push(domain); | CODE |
| HIGH⚡ | archivebox/core/widgets.py | 627 | var hostAndPort = String(parsed.host || parsed.hostname || '').toLowerCase(); | CODE |
| HIGH⚡ | archivebox/core/widgets.py | 629 | if (!hostAndPort || seen[pathKey]) {{ | CODE |
| HIGH⚡ | archivebox/core/widgets.py | 633 | paths.push({{ host: hostAndPort, path: pathname }}); | CODE |
| HIGH | archivebox/core/widgets.py | 134 | onkeypress="if(event.key==='Enter' || event.keyCode===13 || event.key===' ' || event.code==='Space' | | CODE |
| HIGH | archivebox/core/widgets.py | 144 | var autocompleteTimeout_{widget_id} = null; | CODE |
| HIGH | archivebox/core/widgets.py | 181 | if (!(options && options.skipHiddenUpdate)) {{ | CODE |
| HIGH | archivebox/core/widgets.py | 325 | if (isEnter || isSpace || isComma) {{ | CODE |
| HIGH | archivebox/core/widgets.py | 335 | }} else if (event.key === 'Backspace' && !value && currentTags_{widget_id}.length > 0) {{ | CODE |
| HIGH | archivebox/core/widgets.py | 349 | if (!query || query.length < 1) {{ | CODE |
| HIGH | archivebox/core/widgets.py | 471 | if (!trimmed || trimmed.charAt(0) === '#') {{ | CODE |
| HIGH | archivebox/core/widgets.py | 513 | if (!pathname || pathname === '/') {{ | CODE |
| HIGH | archivebox/core/widgets.py | 607 | var seen = Object.create(null); | CODE |
| HIGH | archivebox/core/admin_snapshots.py | 1066 | "this.dataset.fallbacks && this.dataset.fallbacks.length ? " | CODE |
| HIGH | archivebox/tests/test_provider_plugin_replay.py | 100 | if (node.id === 'main-frame') frames.push(node); | CODE |
| HIGH | archivebox/tests/test_provider_plugin_replay.py | 187 | "el => el.tagName.toLowerCase() === 'svg' ? el.getBoundingClientRect().width > 0 : el.complete && el | CODE |
| HIGH | archivebox/tests/test_provider_plugin_replay.py | 213 | assert saved_image.evaluate("el => el.complete && el.naturalWidth > 0") | CODE |
| HIGH | archivebox/tests/test_release_workflow.py | 179 | assert checkout["with"]["token"] == "${{ secrets.RELEASE_GH_TOKEN || github.token }}" | CODE |
| HIGH⚡ | archivebox/tests/test_server_security_browser.py | 38 | finalUrl: null, | CODE |
| HIGH⚡ | archivebox/tests/test_server_security_browser.py | 39 | status: null, | CODE |
| HIGH⚡ | archivebox/tests/test_server_security_browser.py | 40 | error: null, | CODE |
| HIGH⚡ | archivebox/tests/test_server_security_browser.py | 49 | result.status = response ? response.status() : null; | CODE |
| HIGH⚡ | archivebox/tests/test_server_security_browser.py | 95 | consoleMessages.push({type: message.type(), text: message.text()}); | CODE |
| HIGH⚡ | archivebox/tests/test_server_security_browser.py | 98 | consoleMessages.push({type: "pageerror", text: String(error)}); | CODE |
| HIGH⚡ | archivebox/tests/test_server_security_browser.py | 101 | requestFailures.push({ | CODE |
| HIGH⚡ | archivebox/tests/test_server_security_browser.py | 113 | () => window.__dangerousScriptRan !== true || window.__probeResults !== undefined, | CODE |
| HIGH⚡ | archivebox/tests/test_server_security_browser.py | 113 | () => window.__dangerousScriptRan !== true || window.__probeResults !== undefined, | CODE |
| HIGH⚡ | archivebox/tests/test_server_security_browser.py | 120 | probeResults: window.__probeResults || null, | CODE |
| HIGH⚡ | archivebox/tests/test_server_security_browser.py | 120 | probeResults: window.__probeResults || null, | CODE |
| HIGH⚡ | archivebox/tests/test_server_security_browser.py | 128 | status: response ? response.status() : null, | CODE |
| HIGH⚡ | archivebox/tests/test_server_security_browser.py | 130 | contentSecurityPolicy: response ? response.headers()["content-security-policy"] || null : null, | CODE |
| 52 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | archivebox/misc/db.py | 25 | # ============================================================================ | COMMENT |
| MEDIUM | archivebox/misc/db.py | 27 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | archivebox/core/models.py | 2174 | # ========================================================================= | COMMENT |
| MEDIUM⚡ | archivebox/core/models.py | 2176 | # ========================================================================= | COMMENT |
| MEDIUM⚡ | archivebox/core/models.py | 3872 | # ========================================================================= | COMMENT |
| MEDIUM⚡ | archivebox/core/models.py | 3874 | # ========================================================================= | COMMENT |
| MEDIUM | archivebox/core/models.py | 230 | # ========================================================================= | COMMENT |
| MEDIUM | archivebox/core/models.py | 232 | # ========================================================================= | COMMENT |
| MEDIUM | archivebox/core/models.py | 333 | # ========================================================================= | COMMENT |
| MEDIUM | archivebox/core/models.py | 335 | # ========================================================================= | COMMENT |
| MEDIUM | archivebox/core/models.py | 454 | # ========================================================================= | COMMENT |
| MEDIUM | archivebox/core/models.py | 456 | # ========================================================================= | COMMENT |
| MEDIUM | archivebox/core/models.py | 1059 | # ========================================================================= | COMMENT |
| MEDIUM | archivebox/core/models.py | 1061 | # ========================================================================= | COMMENT |
| MEDIUM | archivebox/core/models.py | 1353 | # ========================================================================= | COMMENT |
| MEDIUM | archivebox/core/models.py | 1355 | # ========================================================================= | COMMENT |
| MEDIUM | archivebox/core/models.py | 1411 | # ========================================================================= | COMMENT |
| MEDIUM | archivebox/core/models.py | 1413 | # ========================================================================= | COMMENT |
| MEDIUM | archivebox/core/models.py | 1696 | # ========================================================================= | COMMENT |
| MEDIUM | archivebox/core/models.py | 1698 | # ========================================================================= | COMMENT |
| MEDIUM | archivebox/core/models.py | 2311 | # ========================================================================= | COMMENT |
| MEDIUM | archivebox/core/models.py | 2313 | # ========================================================================= | COMMENT |
| MEDIUM | archivebox/core/models.py | 3279 | # ========================================================================= | COMMENT |
| MEDIUM | archivebox/core/models.py | 3281 | # ========================================================================= | COMMENT |
| MEDIUM | archivebox/core/models.py | 3340 | # ========================================================================= | COMMENT |
| MEDIUM | archivebox/core/models.py | 3342 | # ========================================================================= | COMMENT |
| MEDIUM | archivebox/core/models.py | 3392 | # ========================================================================= | COMMENT |
| MEDIUM | archivebox/core/models.py | 3394 | # ========================================================================= | COMMENT |
| MEDIUM | archivebox/core/models.py | 3568 | # ========================================================================= | COMMENT |
| MEDIUM | archivebox/core/models.py | 3570 | # ========================================================================= | COMMENT |
| MEDIUM | archivebox/tests/conftest.py | 162 | # ============================================================================= | COMMENT |
| MEDIUM | archivebox/tests/conftest.py | 164 | # ============================================================================= | COMMENT |
| MEDIUM | archivebox/tests/conftest.py | 330 | # ============================================================================= | COMMENT |
| MEDIUM | archivebox/tests/conftest.py | 332 | # ============================================================================= | COMMENT |
| MEDIUM | archivebox/tests/conftest.py | 1937 | # ============================================================================= | COMMENT |
| MEDIUM | archivebox/tests/conftest.py | 1939 | # ============================================================================= | COMMENT |
| MEDIUM | archivebox/tests/conftest.py | 1985 | # ============================================================================= | COMMENT |
| MEDIUM | archivebox/tests/conftest.py | 1987 | # ============================================================================= | COMMENT |
| MEDIUM | archivebox/tests/conftest.py | 1219 | # ============================================================================= | STRING |
| MEDIUM | archivebox/tests/conftest.py | 1221 | # ============================================================================= | STRING |
| MEDIUM | archivebox/tests/migrations_helpers.py | 22 | # ============================================================================= | COMMENT |
| MEDIUM | archivebox/tests/migrations_helpers.py | 24 | # ============================================================================= | COMMENT |
| MEDIUM | archivebox/tests/migrations_helpers.py | 506 | # ============================================================================= | STRING |
| MEDIUM | archivebox/tests/migrations_helpers.py | 508 | # ============================================================================= | STRING |
| MEDIUM⚡ | archivebox/tests/migrations_helpers.py | 1229 | # ============================================================================= | STRING |
| MEDIUM⚡ | archivebox/tests/migrations_helpers.py | 1231 | # ============================================================================= | STRING |
| MEDIUM⚡ | archivebox/cli/archivebox_archiveresult.py | 51 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | archivebox/cli/archivebox_archiveresult.py | 53 | # ============================================================================= | COMMENT |
| MEDIUM | archivebox/cli/archivebox_archiveresult.py | 161 | # ============================================================================= | COMMENT |
| MEDIUM | archivebox/cli/archivebox_archiveresult.py | 163 | # ============================================================================= | COMMENT |
| MEDIUM | archivebox/cli/archivebox_archiveresult.py | 216 | # ============================================================================= | COMMENT |
| MEDIUM | archivebox/cli/archivebox_archiveresult.py | 218 | # ============================================================================= | COMMENT |
| MEDIUM | archivebox/cli/archivebox_archiveresult.py | 271 | # ============================================================================= | COMMENT |
| MEDIUM | archivebox/cli/archivebox_archiveresult.py | 273 | # ============================================================================= | COMMENT |
| MEDIUM | archivebox/cli/archivebox_archiveresult.py | 325 | # ============================================================================= | COMMENT |
| MEDIUM | archivebox/cli/archivebox_archiveresult.py | 327 | # ============================================================================= | COMMENT |
| MEDIUM | archivebox/cli/archivebox_process.py | 36 | # ============================================================================= | COMMENT |
| MEDIUM | archivebox/cli/archivebox_process.py | 38 | # ============================================================================= | COMMENT |
| MEDIUM | archivebox/cli/archivebox_process.py | 83 | # ============================================================================= | COMMENT |
| MEDIUM | archivebox/cli/archivebox_process.py | 85 | # ============================================================================= | COMMENT |
| 77 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | archivebox/tests/test_opencode_browser_3.py | 0 | run plugin-owned host integration cases in the archivebox ci matrix. | STRING |
| HIGH | archivebox/tests/test_opencode_agent_2.py | 0 | run plugin-owned host integration cases in the archivebox ci matrix. | STRING |
| HIGH | archivebox/tests/test_opencode_browser_2.py | 0 | run plugin-owned host integration cases in the archivebox ci matrix. | STRING |
| HIGH | archivebox/tests/test_opencode_agent_3.py | 0 | run plugin-owned host integration cases in the archivebox ci matrix. | STRING |
| HIGH | archivebox/tests/test_opencode_browser_1.py | 0 | run plugin-owned host integration cases in the archivebox ci matrix. | STRING |
| HIGH | archivebox/tests/test_opencode_agent_1.py | 0 | run plugin-owned host integration cases in the archivebox ci matrix. | STRING |
| HIGH | archivebox/tests/test_cli_add_3.py | 0 | comprehensive tests for archivebox add command. verify add creates snapshots in db, crawls, source files, and archive di | STRING |
| HIGH | archivebox/tests/test_cli_add_2.py | 0 | comprehensive tests for archivebox add command. verify add creates snapshots in db, crawls, source files, and archive di | STRING |
| HIGH | archivebox/tests/test_cli_add_1.py | 0 | comprehensive tests for archivebox add command. verify add creates snapshots in db, crawls, source files, and archive di | STRING |
| HIGH | archivebox/tests/test_cli_add_4.py | 0 | comprehensive tests for archivebox add command. verify add creates snapshots in db, crawls, source files, and archive di | STRING |
| HIGH | archivebox/tests/test_api_v1_crawls_crawl_crawl_id.py | 0 | from archivebox.workers.supervisord_util import get_existing_supervisord_process, stop_worker supervisor = get_existing_ | STRING |
| HIGH | …hivebox/tests/test_api_v1_core_snapshot_snapshot_id.py | 0 | from archivebox.workers.supervisord_util import get_existing_supervisord_process, stop_worker supervisor = get_existing_ | STRING |
| HIGH | archivebox/tests/test_ui_add_view_runtime.py | 0 | from archivebox.workers.supervisord_util import get_existing_supervisord_process, stop_worker supervisor = get_existing_ | STRING |
| HIGH | archivebox/tests/test_takeover_util_3.py | 0 | takeover utility tests and live command handoff flows. | STRING |
| HIGH | archivebox/tests/test_takeover_util_2.py | 0 | takeover utility tests and live command handoff flows. | STRING |
| HIGH | archivebox/tests/test_takeover_util_1.py | 0 | takeover utility tests and live command handoff flows. | STRING |
| HIGH | archivebox/tests/test_takeover_util_4.py | 0 | takeover utility tests and live command handoff flows. | STRING |
| HIGH | archivebox/tests/test_recursive_crawl_2.py | 0 | integration tests for recursive crawling functionality. | STRING |
| HIGH | archivebox/tests/test_recursive_crawl_3.py | 0 | integration tests for recursive crawling functionality. | STRING |
| HIGH | archivebox/tests/test_recursive_crawl_1.py | 0 | integration tests for recursive crawling functionality. | STRING |
| HIGH | archivebox/tests/test_cli_run_3.py | 0 | tests for archivebox run cli command. tests cover: - run with stdin jsonl (crawl, snapshot, archiveresult) - create-or-u | STRING |
| HIGH | archivebox/tests/test_cli_run_2.py | 0 | tests for archivebox run cli command. tests cover: - run with stdin jsonl (crawl, snapshot, archiveresult) - create-or-u | STRING |
| HIGH | archivebox/tests/test_cli_run_1.py | 0 | tests for archivebox run cli command. tests cover: - run with stdin jsonl (crawl, snapshot, archiveresult) - create-or-u | STRING |
| HIGH | archivebox/tests/test_cli_run_4.py | 0 | tests for archivebox run cli command. tests cover: - run with stdin jsonl (crawl, snapshot, archiveresult) - create-or-u | STRING |
| HIGH | archivebox/tests/test_api_v1_cli_add.py | 0 | <?xml version="1.0" encoding="utf-8"?> <rss version="2.0"> <channel> <title>archivebox rss import fixture</title> <link> | STRING |
| HIGH | archivebox/tests/test_cli_add_1.py | 0 | <?xml version="1.0" encoding="utf-8"?> <rss version="2.0"> <channel> <title>archivebox rss import fixture</title> <link> | STRING |
| HIGH | archivebox/tests/test_ui_add_view_runtime.py | 0 | <?xml version="1.0" encoding="utf-8"?> <rss version="2.0"> <channel> <title>archivebox rss import fixture</title> <link> | STRING |
| HIGH | archivebox/tests/test_api_v1_cli_add.py | 0 | <!doctype netscape-bookmark-file-1> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>bookmarks | STRING |
| HIGH | archivebox/tests/test_cli_add_1.py | 0 | <!doctype netscape-bookmark-file-1> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>bookmarks | STRING |
| HIGH | archivebox/tests/test_ui_add_view_runtime.py | 0 | <!doctype netscape-bookmark-file-1> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>bookmarks | STRING |
| HIGH | archivebox/tests/test_api_v1_cli_add.py | 0 | <!doctype html> <html> <head><title>dom import fixture</title></head> <body> <a href="{urls["dom"]}">iana example domain | STRING |
| HIGH | archivebox/tests/test_cli_add_1.py | 0 | <!doctype html> <html> <head><title>dom import fixture</title></head> <body> <a href="{urls["dom"]}">iana example domain | STRING |
| HIGH | archivebox/tests/test_ui_add_view_runtime.py | 0 | <!doctype html> <html> <head><title>dom import fixture</title></head> <body> <a href="{urls["dom"]}">iana example domain | STRING |
| HIGH | archivebox/tests/test_api_v1_cli_add.py | 0 | <?xml version="1.0"?> <!doctype rss [ <!entity localfile system "file:///etc/hosts"> ]> <rss version="2.0" xmlns:xi="htt | STRING |
| HIGH | archivebox/tests/test_cli_add_1.py | 0 | <?xml version="1.0"?> <!doctype rss [ <!entity localfile system "file:///etc/hosts"> ]> <rss version="2.0" xmlns:xi="htt | STRING |
| HIGH | archivebox/tests/test_ui_add_view_runtime.py | 0 | <?xml version="1.0"?> <!doctype rss [ <!entity localfile system "file:///etc/hosts"> ]> <rss version="2.0" xmlns:xi="htt | STRING |
| HIGH | archivebox/cli/archivebox_archiveresult.py | 0 | list personas as jsonl with optional filters. exit codes: 0: success (even if no results) | STRING |
| HIGH | archivebox/cli/archivebox_process.py | 0 | list personas as jsonl with optional filters. exit codes: 0: success (even if no results) | STRING |
| HIGH | archivebox/cli/archivebox_tag.py | 0 | list personas as jsonl with optional filters. exit codes: 0: success (even if no results) | STRING |
| HIGH | archivebox/cli/archivebox_binary.py | 0 | list personas as jsonl with optional filters. exit codes: 0: success (even if no results) | STRING |
| HIGH | archivebox/cli/archivebox_snapshot.py | 0 | list personas as jsonl with optional filters. exit codes: 0: success (even if no results) | STRING |
| HIGH | archivebox/cli/archivebox_machine.py | 0 | list personas as jsonl with optional filters. exit codes: 0: success (even if no results) | STRING |
| HIGH | archivebox/cli/archivebox_crawl.py | 0 | list personas as jsonl with optional filters. exit codes: 0: success (even if no results) | STRING |
| HIGH | archivebox/cli/archivebox_persona.py | 0 | list personas as jsonl with optional filters. exit codes: 0: success (even if no results) | STRING |
| HIGH | archivebox/cli/archivebox_archiveresult.py | 0 | update personas from stdin jsonl. reads persona records from stdin and applies updates. uses patch semantics - only spec | STRING |
| HIGH | archivebox/cli/archivebox_tag.py | 0 | update personas from stdin jsonl. reads persona records from stdin and applies updates. uses patch semantics - only spec | STRING |
| HIGH | archivebox/cli/archivebox_binary.py | 0 | update personas from stdin jsonl. reads persona records from stdin and applies updates. uses patch semantics - only spec | STRING |
| HIGH | archivebox/cli/archivebox_snapshot.py | 0 | update personas from stdin jsonl. reads persona records from stdin and applies updates. uses patch semantics - only spec | STRING |
| HIGH | archivebox/cli/archivebox_crawl.py | 0 | update personas from stdin jsonl. reads persona records from stdin and applies updates. uses patch semantics - only spec | STRING |
| HIGH | archivebox/cli/archivebox_persona.py | 0 | update personas from stdin jsonl. reads persona records from stdin and applies updates. uses patch semantics - only spec | STRING |
| HIGH | archivebox/cli/archivebox_archiveresult.py | 0 | delete personas from stdin jsonl. requires --yes flag to confirm deletion. exit codes: 0: success 1: no input or missing | STRING |
| HIGH | archivebox/cli/archivebox_tag.py | 0 | delete personas from stdin jsonl. requires --yes flag to confirm deletion. exit codes: 0: success 1: no input or missing | STRING |
| HIGH | archivebox/cli/archivebox_binary.py | 0 | delete personas from stdin jsonl. requires --yes flag to confirm deletion. exit codes: 0: success 1: no input or missing | STRING |
| HIGH | archivebox/cli/archivebox_snapshot.py | 0 | delete personas from stdin jsonl. requires --yes flag to confirm deletion. exit codes: 0: success 1: no input or missing | STRING |
| HIGH | archivebox/cli/archivebox_crawl.py | 0 | delete personas from stdin jsonl. requires --yes flag to confirm deletion. exit codes: 0: success 1: no input or missing | STRING |
| HIGH | archivebox/cli/archivebox_persona.py | 0 | delete personas from stdin jsonl. requires --yes flag to confirm deletion. exit codes: 0: success 1: no input or missing | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | bin/check-staging-deployment.py | 18 | CODE | |
| LOW | bin/release-source-fingerprint.py | 23 | CODE | |
| LOW | bin/generate_ui_screenshot_gallery.py | 220 | CODE | |
| LOW | docs/conf.py | 425 | CODE | |
| LOW | docs/check_links.py | 27 | CODE | |
| LOW | docs/test_codeblocks_manifest.py | 205 | CODE | |
| LOW | docs/test_codeblocks_manifest.py | 353 | CODE | |
| LOW | docs/test_codeblocks_manifest.py | 591 | CODE | |
| LOW | .github/pages/verify.py | 88 | CODE | |
| LOW | archivebox/misc/db.py | 143 | CODE | |
| LOW | archivebox/misc/db.py | 338 | CODE | |
| LOW | archivebox/misc/db.py | 369 | CODE | |
| LOW | archivebox/misc/system.py | 19 | CODE | |
| LOW | archivebox/misc/system.py | 56 | CODE | |
| LOW | archivebox/misc/util.py | 414 | CODE | |
| LOW | archivebox/misc/checks.py | 102 | CODE | |
| LOW | archivebox/misc/logging_util.py | 259 | CODE | |
| LOW | archivebox/misc/serve_static.py | 501 | CODE | |
| LOW | archivebox/misc/serve_static.py | 741 | CODE | |
| LOW | archivebox/misc/serve_static.py | 972 | CODE | |
| LOW | archivebox/core/admin_archiveresults.py | 90 | CODE | |
| LOW | archivebox/core/models.py | 199 | CODE | |
| LOW | archivebox/core/models.py | 1199 | CODE | |
| LOW | archivebox/core/models.py | 1294 | CODE | |
| LOW | archivebox/core/models.py | 1358 | CODE | |
| LOW | archivebox/core/models.py | 1416 | CODE | |
| LOW | archivebox/core/models.py | 1516 | CODE | |
| LOW | archivebox/core/models.py | 1700 | CODE | |
| LOW | archivebox/core/models.py | 1795 | CODE | |
| LOW | archivebox/core/models.py | 2032 | CODE | |
| LOW | archivebox/core/models.py | 2073 | CODE | |
| LOW | archivebox/core/models.py | 2229 | CODE | |
| LOW | archivebox/core/models.py | 2373 | CODE | |
| LOW | archivebox/core/models.py | 2710 | CODE | |
| LOW | archivebox/core/models.py | 3015 | CODE | |
| LOW | archivebox/core/models.py | 4276 | CODE | |
| LOW | archivebox/core/models.py | 4637 | CODE | |
| LOW | archivebox/core/models.py | 4694 | CODE | |
| LOW | archivebox/core/models.py | 2381 | CODE | |
| LOW | archivebox/core/widgets.py | 63 | CODE | |
| LOW | archivebox/core/widgets.py | 686 | CODE | |
| LOW | archivebox/core/forms.py | 36 | CODE | |
| LOW | archivebox/core/tag_util.py | 60 | CODE | |
| LOW | archivebox/core/admin_site.py | 102 | CODE | |
| LOW | archivebox/core/takeover_util.py | 270 | CODE | |
| LOW | archivebox/core/middleware.py | 127 | CODE | |
| LOW | archivebox/core/middleware.py | 130 | CODE | |
| LOW | archivebox/core/views.py | 383 | CODE | |
| LOW | archivebox/core/views.py | 603 | CODE | |
| LOW | archivebox/core/views.py | 1367 | CODE | |
| LOW | archivebox/core/templatetags/core_tags.py | 211 | CODE | |
| LOW | archivebox/core/templatetags/core_tags.py | 931 | CODE | |
| LOW | archivebox/core/sqlite_backend/base.py | 25 | CODE | |
| LOW | archivebox/importers/service.py | 71 | CODE | |
| LOW | archivebox/importers/forms.py | 23 | CODE | |
| LOW | archivebox/importers/views.py | 63 | CODE | |
| LOW | archivebox/importers/views.py | 125 | CODE | |
| LOW | archivebox/config/django.py | 33 | CODE | |
| LOW | archivebox/config/paths.py | 43 | CODE | |
| LOW | archivebox/config/common.py | 579 | CODE | |
| 112 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docs/conf.py | 60 | except Exception: | CODE |
| LOW | docs/test_codeblocks_manifest.py | 288 | except Exception as error: | CODE |
| LOW | archivebox/misc/db.py | 98 | except Exception: | CODE |
| LOW | archivebox/misc/db.py | 172 | except Exception: | CODE |
| LOW | archivebox/misc/db.py | 272 | except Exception: | CODE |
| LOW | archivebox/misc/db.py | 550 | except Exception as err: | CODE |
| LOW⚡ | archivebox/misc/util.py | 441 | except Exception: | CODE |
| LOW⚡ | archivebox/misc/util.py | 446 | except Exception: | CODE |
| LOW⚡ | archivebox/misc/util.py | 451 | except Exception: | CODE |
| LOW | archivebox/misc/checks.py | 49 | except Exception: | CODE |
| LOW | archivebox/misc/checks.py | 272 | except Exception: | CODE |
| LOW | archivebox/misc/checks.py | 277 | except Exception: | CODE |
| LOW | archivebox/misc/checks.py | 325 | except Exception as e: | CODE |
| LOW | archivebox/misc/checks.py | 378 | except Exception as e: | CODE |
| MEDIUM | archivebox/misc/checks.py | 46 | def handle_shutdown(_signum, _frame): | CODE |
| LOW | archivebox/misc/logging_util.py | 70 | except Exception: | CODE |
| LOW | archivebox/misc/toml_util.py | 15 | except Exception: | CODE |
| LOW | archivebox/misc/serve_static.py | 275 | except Exception: | STRING |
| LOW | archivebox/core/settings_logging.py | 100 | except Exception: | CODE |
| LOW | archivebox/core/admin_snapshots.py | 574 | except Exception as e: | CODE |
| LOW | archivebox/core/admin_snapshots.py | 1424 | except Exception: | CODE |
| MEDIUM | archivebox/core/admin_snapshots.py | 1388 | def _get_expected_hook_total(self, obj) -> int: | CODE |
| LOW | archivebox/core/takeover_util.py | 283 | except Exception: | CODE |
| LOW | archivebox/core/templatetags/core_tags.py | 95 | except Exception: | CODE |
| LOW⚡ | archivebox/config/version.py | 55 | except Exception: | CODE |
| LOW⚡ | archivebox/config/version.py | 62 | except Exception: | CODE |
| LOW⚡ | archivebox/config/version.py | 68 | except Exception: | CODE |
| LOW⚡ | archivebox/config/version.py | 73 | except Exception: | CODE |
| LOW | archivebox/config/version.py | 109 | except Exception: | CODE |
| LOW | archivebox/config/paths.py | 56 | except Exception: | CODE |
| LOW | archivebox/config/paths.py | 163 | except Exception as e: | CODE |
| LOW | archivebox/config/paths.py | 231 | except Exception: | CODE |
| LOW | archivebox/config/paths.py | 245 | except Exception: | CODE |
| LOW | archivebox/config/paths.py | 272 | except Exception: | CODE |
| LOW | archivebox/config/paths.py | 309 | except Exception: | CODE |
| LOW | archivebox/config/paths.py | 385 | except Exception: | CODE |
| LOW | archivebox/config/collection.py | 226 | except Exception: | CODE |
| LOW | archivebox/config/collection.py | 326 | except Exception: | CODE |
| LOW | archivebox/plugins/forms.py | 385 | except Exception: | CODE |
| LOW | archivebox/crawls/models.py | 559 | except Exception: | CODE |
| LOW⚡ | archivebox/cli/archivebox_binary.py | 101 | except Exception as e: | CODE |
| LOW | archivebox/cli/archivebox_snapshot.py | 212 | except Exception as e: | CODE |
| LOW | archivebox/cli/archivebox_update.py | 568 | except Exception as e: | CODE |
| LOW | archivebox/cli/archivebox_update.py | 608 | except Exception as e: | CODE |
| LOW | archivebox/cli/archivebox_update.py | 781 | except Exception as e: | CODE |
| LOW⚡ | archivebox/cli/archivebox_crawl.py | 164 | except Exception as e: | CODE |
| LOW | archivebox/cli/__init__.py | 184 | except Exception as e: | CODE |
| LOW | archivebox/cli/archivebox_version.py | 30 | except Exception: | CODE |
| LOW | archivebox/cli/archivebox_version.py | 95 | except Exception: | CODE |
| LOW | archivebox/cli/archivebox_version.py | 153 | except Exception: | CODE |
| LOW | archivebox/cli/archivebox_version.py | 165 | except Exception: | CODE |
| LOW | archivebox/cli/archivebox_version.py | 242 | except Exception as e: | CODE |
| LOW | archivebox/cli/archivebox_version.py | 274 | except Exception as e: | CODE |
| LOW⚡ | archivebox/cli/archivebox_version.py | 450 | except Exception as e: | CODE |
| LOW⚡ | archivebox/cli/archivebox_version.py | 460 | except Exception as e: | CODE |
| LOW⚡ | archivebox/cli/archivebox_version.py | 467 | except Exception: | CODE |
| MEDIUM | archivebox/cli/archivebox_version.py | 320 | def resolve_declared_binaries() -> dict[str, BinaryEvent | None]: | CODE |
| LOW | archivebox/cli/archivebox_add.py | 295 | except Exception: | CODE |
| LOW | archivebox/cli/archivebox_add.py | 314 | except Exception: | CODE |
| LOW | archivebox/cli/archivebox_add.py | 331 | except Exception: | CODE |
| 60 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | pdm_build.py | 1 | CODE | |
| LOW | bin/release-source-fingerprint.py | 4 | CODE | |
| LOW | docs/test_codeblocks_manifest.py | 8 | CODE | |
| LOW | archivebox/__main__.py | 6 | CODE | |
| LOW | archivebox/misc/shell_welcome_message.py | 6 | CODE | |
| LOW | archivebox/misc/shell_welcome_message.py | 7 | CODE | |
| LOW | archivebox/misc/shell_welcome_message.py | 8 | CODE | |
| LOW | archivebox/misc/shell_welcome_message.py | 9 | CODE | |
| LOW | archivebox/misc/shell_welcome_message.py | 10 | CODE | |
| LOW | archivebox/misc/shell_welcome_message.py | 11 | CODE | |
| LOW | archivebox/misc/shell_welcome_message.py | 12 | CODE | |
| LOW | archivebox/misc/shell_welcome_message.py | 13 | CODE | |
| LOW | archivebox/misc/shell_welcome_message.py | 14 | CODE | |
| LOW | archivebox/misc/shell_welcome_message.py | 16 | CODE | |
| LOW | archivebox/misc/shell_welcome_message.py | 17 | CODE | |
| LOW | archivebox/misc/shell_welcome_message.py | 17 | CODE | |
| LOW | archivebox/misc/shell_welcome_message.py | 19 | CODE | |
| LOW | archivebox/misc/shell_welcome_message.py | 20 | CODE | |
| LOW | archivebox/misc/shell_welcome_message.py | 22 | CODE | |
| LOW | archivebox/core/models.py | 61 | CODE | |
| LOW | archivebox/core/routes_util.py | 1 | CODE | |
| LOW | archivebox/core/tag_util.py | 1 | CODE | |
| LOW | archivebox/core/shutdown_util.py | 26 | CODE | |
| LOW | archivebox/core/admin_site.py | 32 | CODE | |
| LOW | archivebox/core/admin_site.py | 33 | CODE | |
| LOW | archivebox/core/admin_site.py | 35 | CODE | |
| LOW | archivebox/core/admin_site.py | 35 | CODE | |
| LOW | archivebox/core/settings.py | 565 | CODE | |
| LOW | archivebox/core/settings.py | 599 | CODE | |
| LOW | archivebox/core/permissions.py | 1 | CODE | |
| LOW | archivebox/core/recovery_util.py | 1 | CODE | |
| LOW | archivebox/core/takeover_util.py | 15 | CODE | |
| LOW | archivebox/core/wsgi.py | 10 | CODE | |
| LOW | archivebox/core/sqlite_backend/base.py | 1 | CODE | |
| LOW | archivebox/config/django.py | 55 | CODE | |
| LOW | archivebox/config/paths.py | 16 | CODE | |
| LOW | archivebox/config/common.py | 1 | CODE | |
| LOW | archivebox/plugins/hooks.py | 7 | CODE | |
| LOW | archivebox/tests/test_opencode_browser_3.py | 3 | CODE | |
| LOW | archivebox/tests/test_opencode_browser_3.py | 3 | CODE | |
| LOW | archivebox/tests/test_opencode_browser_3.py | 3 | CODE | |
| LOW | archivebox/tests/test_opencode_agent_2.py | 3 | CODE | |
| LOW | archivebox/tests/test_opencode_agent_2.py | 3 | CODE | |
| LOW | archivebox/tests/test_opencode_agent_2.py | 3 | CODE | |
| LOW | archivebox/tests/test_opencode_agent_2.py | 3 | CODE | |
| LOW | archivebox/tests/test_opencode_agent_2.py | 3 | CODE | |
| LOW | archivebox/tests/test_opencode_agent_2.py | 3 | CODE | |
| LOW | archivebox/tests/test_opencode_agent_2.py | 3 | CODE | |
| LOW | archivebox/tests/test_opencode_agent_2.py | 3 | CODE | |
| LOW | archivebox/tests/test_cli_add_3.py | 34 | CODE | |
| LOW | archivebox/tests/test_cli_add_3.py | 34 | CODE | |
| LOW | archivebox/tests/test_cli_add_3.py | 34 | CODE | |
| LOW | archivebox/tests/conftest.py | 26 | CODE | |
| LOW | archivebox/tests/conftest.py | 26 | CODE | |
| LOW | archivebox/tests/conftest.py | 26 | CODE | |
| LOW | archivebox/tests/conftest.py | 26 | CODE | |
| LOW | archivebox/tests/test_takeover_util_3.py | 31 | CODE | |
| LOW | archivebox/tests/test_takeover_util_2.py | 34 | CODE | |
| LOW | archivebox/tests/test_takeover_util_2.py | 34 | CODE | |
| LOW | archivebox/tests/test_opencode_browser_2.py | 3 | CODE | |
| 66 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | archivebox/tests/test_snapshot_url_length.py | 9 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | archivebox/tests/test_frozen_crawl_config.py | 162 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | archivebox/crawls/models.py | 17 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | archivebox/cli/rescan.py | 10 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | archivebox/personas/models.py | 22 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | archivebox/api/v1_core.py | 18 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | archivebox/api/v1_personas.py | 8 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | archivebox/templates/static/jquery-3.7.1.slim.min.js | 2 | !function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):f | CODE |
| CRITICAL | archivebox/templates/static/jquery.min.js | 2 | !function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):f | CODE |
| CRITICAL | archivebox/services/runner.py | 21 | from django.core.exceptions import ValidationError | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | archivebox/misc/logging_util.py | 353 | # Create a Rich Text object for proper formatting | COMMENT |
| MEDIUM | archivebox/core/templatetags/core_tags.py | 966 | # Create a mini template and render it with context | COMMENT |
| MEDIUM | archivebox/config/collection.py | 20 | "# This file is kept in sync 1:1 with the current Machine.config in the DB —\n" | CODE |
| MEDIUM⚡ | archivebox/tests/test_cli_status.py | 76 | # Create an orphaned directory | COMMENT |
| MEDIUM | archivebox/tests/test_cli_crawl.py | 233 | # Create a crawl | COMMENT |
| MEDIUM | archivebox/tests/migrations_helpers.py | 763 | # Create a user | COMMENT |
| MEDIUM | archivebox/tests/migrations_helpers.py | 934 | # Create a user | COMMENT |
| MEDIUM | archivebox/tests/test_cli_archiveresult.py | 34 | # Create a snapshot first | COMMENT |
| MEDIUM | archivebox/cli/archivebox_update.py | 577 | # Create a new crawl (created_by will default to system user) | COMMENT |
| MEDIUM | archivebox/cli/archivebox_persona.py | 16 | # Create a new persona | STRING |
| MEDIUM | archivebox/machine/models.py | 823 | # Create the derived convenience bin dir if it doesn't exist. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docs/Web-Archiving-Community.md | 218 | - [ReadableWebProxy](https://github.com/fake-name/ReadableWebProxy) A proxying archiver that downloads content from site | CODE |
| LOW | archivebox/core/admin_tags.py | 47 | "placeholder": "research, receipts, product-design...", | CODE |
| LOW | archivebox/core/forms.py | 103 | "placeholder": ( | CODE |
| LOW | archivebox/core/forms.py | 135 | "placeholder": "0 = unlimited", | CODE |
| LOW | archivebox/core/forms.py | 145 | "placeholder": "0 = unlimited, or e.g. 45mb / 1gb", | CODE |
| LOW | archivebox/core/forms.py | 157 | "placeholder": "0, 300, 1.5m, or 1hr", | CODE |
| LOW⚡ | archivebox/core/forms.py | 168 | "placeholder": "60, 1.5m, or 1hr", | CODE |
| LOW⚡ | archivebox/core/forms.py | 178 | "placeholder": "0 = unlimited, or e.g. 45mb / 1gb", | CODE |
| LOW⚡ | archivebox/core/forms.py | 188 | "placeholder": "0 = keep forever, or e.g. 1d / 6mo", | CODE |
| LOW | archivebox/core/forms.py | 209 | "placeholder": "Optional notes about this crawl", | CODE |
| LOW | archivebox/core/forms.py | 270 | "placeholder": "e.g., daily, weekly, 0 */6 * * * (every 6 hours)", | CODE |
| LOW | archivebox/importers/forms.py | 38 | self.fields["schedule"].widget.attrs["placeholder"] = "e.g. daily" | CODE |
| LOW | archivebox/tests/test_cli_manage.py | 69 | "admin@example.com", | CODE |
| LOW | archivebox/tests/test_server_security_browser.py | 407 | defaults={"email": "admin@example.com", "is_staff": True, "is_superuser": True}, | CODE |
| LOW | archivebox/tests/migrations_helpers.py | 768 | 'admin@example.com', 1, 1, datetime('now')) | CODE |
| LOW | archivebox/tests/migrations_helpers.py | 939 | 'admin@example.com', 1, 1, datetime('now')) | CODE |
| LOW | archivebox/tests/test_ui_add_view.py | 71 | placeholder = form.fields["url"].widget.attrs["placeholder"] | CODE |
| LOW | archivebox/tests/test_urls.py | 302 | defaults={"email": "admin@example.com", "is_staff": True, "is_superuser": True}, | STRING |
| LOW | archivebox/crawls/admin.py | 432 | "placeholder": "https://example.com\nhttps://example2.com\n# Comments start with #", | CODE |
| LOW | archivebox/personas/forms.py | 65 | "placeholder": "/Users/alice/Library/Application Support/Google/Chrome or http://127.0.0.1:9222 or w | CODE |
| LOW | archivebox/personas/forms.py | 76 | "placeholder": "Default or Profile 1", | CODE |
| LOW | …onitor/templates/progressmonitor/progress_monitor.html | 1192 | preview.classList.add('placeholder'); | CODE |
| LOW | …onitor/templates/progressmonitor/progress_monitor.html | 1272 | type: 'placeholder', | CODE |
| LOW | …onitor/templates/progressmonitor/progress_monitor.html | 1293 | type: 'placeholder', | CODE |
| LOW | …onitor/templates/progressmonitor/progress_monitor.html | 1305 | type: 'placeholder', | CODE |
| LOW | …onitor/templates/progressmonitor/progress_monitor.html | 1344 | type: 'placeholder', | CODE |
| LOW | …onitor/templates/progressmonitor/progress_monitor.html | 1351 | if (target.type === 'placeholder') { | CODE |
| LOW | …onitor/templates/progressmonitor/progress_monitor.html | 1365 | if (screencastPanel.dataset.mode === 'placeholder' && screencastPanel.dataset.key === placeholderKey) { | CODE |
| LOW | …onitor/templates/progressmonitor/progress_monitor.html | 1368 | screencastPanel.dataset.mode = 'placeholder'; | CODE |
| LOW | archivebox/templates/static/select2.min.js | 2 | !function(n){"function"==typeof define&&define.amd?define(["jquery"],n):"object"==typeof module&&module.exports?module.e | CODE |
| LOW | archivebox/templates/static/jquery.dataTables.min.js | 41 | g):j+g,b=h("<div/>",{id:!f.f?c+"_filter":null,"class":b.sFilter}).append(h("<label/>").append(j)),f=function(){var b=!th | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docker-compose.yml | 1 | # Usage | COMMENT |
| LOW | docker-compose.yml | 41 | COMMENT | |
| LOW | docker-compose.yml | 61 | # build: https://github.com/ArchiveBox/archivebox-chat-bot.git#main | COMMENT |
| LOW | docker-compose.yml | 81 | # environment: | COMMENT |
| LOW | docker-compose.yml | 101 | # - net_admin | COMMENT |
| LOW | docker-compose.yml | 121 | # https://github.com/ArchiveBox/ArchiveBox/wiki/Setting-Up-Storage | COMMENT |
| LOW | bin/export_browser_history.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | bin/docker_entrypoint.sh | 1 | #!/bin/bash | COMMENT |
| LOW | docs/.readthedocs.yaml | 1 | # Read the Docs configuration file for ArchiveBox docs | COMMENT |
| LOW | archivebox/misc/db.py | 401 | # upgraded incrementally through 0.8.x → 0.9.x dev rcs accumulate rows for | COMMENT |
| LOW | archivebox/core/models.py | 1041 | # Snapshots can be created by parser hook side-effect records, | COMMENT |
| LOW | archivebox/core/models.py | 4301 | # Skip ModelWithOutputDir.save() to avoid creating index.json in plugin directories | COMMENT |
| LOW | archivebox/core/settings.py | 301 | }, | COMMENT |
| LOW | archivebox/core/settings.py | 321 | ### Security Settings | COMMENT |
| LOW | archivebox/core/settings.py | 381 | CSRF_TRUSTED_ORIGINS.append(https_endpoint) | COMMENT |
| LOW | archivebox/machine/detect.py | 161 | hw_product += " " + line.split(":", 1)[-1].strip() | COMMENT |
| LOW | archivebox/machine/detect.py | 401 | # 'guid': '1cd2dd279f8a854...6943f2384437991a', | COMMENT |
| LOW | archivebox/machine/detect.py | 421 | # }, | COMMENT |
| LOW | archivebox/machine/detect.py | 441 | # } | COMMENT |
| LOW | archivebox/templates/admin/base.html | 281 | font-size: 13px; | COMMENT |
| LOW | archivebox/templates/static/setup_wizard.css | 1 | #archivebox-setup-wizard { position:fixed; inset:0; z-index:2147483647; display:flex; align-items:center; justify-conten | COMMENT |
| LOW | archivebox/templates/static/setup_wizard.css | 21 | #archivebox-setup-wizard .abx-url-comparison { display:grid; gap:4px; margin-top:10px; padding:10px 12px; border-radius: | COMMENT |
| LOW | archivebox/templates/static/setup_wizard.css | 41 | #archivebox-setup-wizard .abx-check input { width:18px; height:18px; margin-top:2px; } | COMMENT |
| LOW | archivebox/templates/static/setup_wizard.css | 61 | #archivebox-setup-wizard code { padding:1px 4px; border-radius:4px; background:#eef2f7; color:#334155; } | COMMENT |
| LOW | archivebox/workers/supervisord_util.py | 1221 | # The reader temporarily restores immediate SIGINT so a | COMMENT |
| LOW | archivebox/workers/supervisord_util.py | 1761 | # A standby parent must never tear down the replacement | COMMENT |
| LOW | archivebox/base_models/admin.py | 921 | path("<hexuuid:object_id>/change/", self.admin_site.admin_view(self.change_view), name="{}_{}_change".format | COMMENT |
| LOW | archivebox/services/runner.py | 361 | # stop descendants and finalize the ledger. SIGINT uses the same shared | COMMENT |
| LOW | archivebox/services/runner.py | 421 | self._run_task = asyncio.current_task() | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | bin/docker_entrypoint.sh | 105 | # Check if user attempted to run it in the root of their home folder or hard drive (common mistake) | COMMENT |
| LOW | archivebox/core/models.py | 3249 | # Check if sealed | COMMENT |
| LOW | archivebox/crawls/models.py | 496 | # Check if crawl already exists by ID | COMMENT |
| LOW | archivebox/crawls/models.py | 952 | # Check if already in urls (parse existing JSONL entries) | COMMENT |
| LOW | archivebox/crawls/models.py | 1291 | # Check if any snapshots exist for this crawl | COMMENT |
| LOW | archivebox/cli/archivebox_update.py | 593 | # Check if needs migration (0.8.x → 0.9.x) | COMMENT |
| LOW | archivebox/cli/archivebox_version.py | 130 | # Check if LDAP is enabled (simple config lookup) | COMMENT |
| LOW⚡ | archivebox/cli/archivebox_persona.py | 99 | # Check if resolved_path is a child of personas_dir | COMMENT |
| LOW | archivebox/progressmonitor/views.py | 791 | # Check if crawl can start (for debugging stuck crawls) | COMMENT |
| LOW | archivebox/progressmonitor/views.py | 807 | # Check if retry_at is in the future (would prevent worker from claiming) | COMMENT |
| LOW | archivebox/machine/models.py | 848 | # Check if it's already pointing to the right place | COMMENT |
| LOW | archivebox/machine/models.py | 1646 | # Check if too old (PID definitely reused) | COMMENT |
| LOW | archivebox/machine/models.py | 1650 | # Check if OS process still exists with matching start time | COMMENT |
| LOW | archivebox/machine/models.py | 2369 | # Check if process exited | COMMENT |
| LOW | archivebox/workers/supervisord_util.py | 1482 | # Check if the monitored process has exited | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | docs/Change-Detection.md | 32 | json://192.168.1.43:5797/api/v1/cli/add?+X-ArchiveBox-API-Key=YOUR_API_KEY | CODE |
| HIGH | docs/Change-Detection.md | 35 | Replace the host, port, and `YOUR_API_KEY` with yours. Use an address reachable from the container, not `localhost`. For | CODE |
| HIGH | docs/Change-Detection.md | 94 | Keep the rest of the service configuration and use `json://archivebox:5797/api/v1/cli/add?+X-ArchiveBox-API-Key=YOUR_API | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | archivebox/uuid_compat.py | 52 | __all__ = ["CompactUUID", "CompactUUIDField", "compact_uuid", "uuid7"] | CODE |
| LOW | archivebox/core/settings.py | 31 | logger = logging.getLogger(__name__) | CODE |
| LOW | archivebox/importers/catalog.py | 9 | logger = logging.getLogger(__name__) | CODE |
| LOW | archivebox/importers/service.py | 27 | logger = logging.getLogger(__name__) | CODE |
| LOW | archivebox/tests/conftest.py | 97 | def _set_test_source_pythonpath(env: dict[str, str]) -> None: | CODE |
| LOW | archivebox/tests/conftest.py | 2065 | def _set_archivebox_config(data_dir: Path, *values: str, env: dict[str, str] | None = None) -> None: | CODE |
| LOW | archivebox/tests/test_crawl_runner.py | 726 | async def update_config_between_snapshots(event: SnapshotCompletedEvent) -> None: | CODE |
| LOW | archivebox/tests/test_urls.py | 389 | def _setup_data_dir(self, real_archive_with_example: Path) -> None: | CODE |
| LOW | archivebox/tests/test_urls.py | 412 | def _set_config(self, *settings: str) -> None: | CODE |
| LOW | archivebox/crawls/models.py | 651 | def set_url_filters(self, allowlist, denylist) -> None: | CODE |
| LOW⚡ | archivebox/cli/__init__.py | 94 | def _setup_django_for_lazy_import(cls, cmd_name: str) -> None: | CODE |
| LOW | archivebox/api/webhooks.py | 14 | logger = logging.getLogger(__name__) | CODE |
| LOW | archivebox/workers/models.py | 34 | logger = logging.getLogger(__name__) | CODE |
| LOW | archivebox/services/__init__.py | 10 | __all__ = [ | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | bin/fuzz_test.sh | 4 | # This is intentionally not a test harness: it does not assert success/failure. | COMMENT |
| LOW | archivebox/misc/util.py | 379 | # if response is non-test (e.g. image or other binary files), just return the filename instead | COMMENT |
| MEDIUM | archivebox/core/models.py | 4770 | # these properties provide seamless access to Process data through ArchiveResult | COMMENT |
| LOW | archivebox/core/views.py | 1597 | # We can't just call request.build_absolute_uri in the template, because it would include query parameters | COMMENT |
| MEDIUM | archivebox/tests/test_importer_host_command.py | 49 | # This progress event occurs only after browser-harness has created | COMMENT |
| LOW | archivebox/cli/archivebox_archiveresult.py | 112 | # If no id, we could create it, but for now just pass through | COMMENT |
| LOW | archivebox/cli/archivebox_crawl.py | 94 | # Handle existing Crawl records (just pass through with id) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | archivebox/core/models.py | 3626 | CODE | |
| LOW | archivebox/core/tag_util.py | 285 | CODE | |
| LOW | archivebox/config/common.py | 1115 | CODE | |
| LOW | archivebox/tests/conftest.py | 217 | CODE | |
| LOW | archivebox/tests/test_cli_status.py | 24 | CODE | |
| LOW | archivebox/cli/archivebox_schedule.py | 12 | CODE | |
| LOW | archivebox/cli/archivebox_update.py | 150 | CODE | |
| LOW | archivebox/cli/archivebox_remove.py | 29 | CODE | |
| LOW | archivebox/cli/archivebox_add.py | 54 | CODE | |
| LOW | archivebox/workers/supervisord_util.py | 1677 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | archivebox/machine/models.py | 2216 | Wait for process to exit, polling periodically. Args: timeout: Max seconds to wait (None = | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | bin/export_browser_history.sh | 4 | # Usage: | COMMENT |
| LOW | archivebox/machine/detect.py | 389 | # Example usage | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | archivebox/machine/models.py | 2273 | # Step 1: Send SIGTERM for graceful shutdown | COMMENT |
| LOW⚡ | archivebox/machine/models.py | 2276 | # Step 2: Wait for graceful exit | COMMENT |
| LOW | archivebox/machine/models.py | 2289 | # Step 3: Force kill with SIGKILL | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | archivebox/machine/models.py | 2273 | # Step 1: Send SIGTERM for graceful shutdown | COMMENT |
| LOW⚡ | archivebox/machine/models.py | 2276 | # Step 2: Wait for graceful exit | COMMENT |
| LOW | archivebox/machine/models.py | 2289 | # Step 3: Force kill with SIGKILL | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | docs/Setting-up-Search.md | 225 | - [#1139 Feature Request: Add AI-assisted summarization, tagging, search, and more using LLMs / RAG](https://github.com/ | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | pyproject.toml | 95 | # to use sonic make sure you have a sonic server running in docker (archivebox/sonic) or locally: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | archivebox/mcp/server.py | 502 | def handle_request(self, request: dict) -> dict | None: | CODE |