An open-source long-horizon SuperAgent harness that researches, codes, and creates. With the help of sandboxes, memories, tools, skill, subagents and message gateway, it handles different levels of tasks that could take minutes to hours.
This report summarizes scanner evidence for bytedance/deer-flow, a Python project with 83,658 GitHub stars. SynthScan examined 1,055,458 lines of code across 3519 source files, recording 29646 pattern matches distributed across 26 syntactic categories. The legacy adjusted pattern signal is 33.0 (High 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? 23137 finding(s).
Are imports declared and package/API names verified? 2161 finding(s).
Are wrappers, guards, and repeated structures necessary? 25950 finding(s).
Which changes need focused human review? 29646 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 29646 distinct pattern matches across 26 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 | docker/provisioner/app.py | 174 | def _host_base_dir_for_extra_mounts() -> str: | CODE |
| LOW | docker/provisioner/app.py | 195 | def _normalize_skills_container_path(container_path: str) -> str: | CODE |
| LOW | docker/provisioner/app.py | 218 | def _managed_skill_category_mount_paths( | CODE |
| LOW | docker/provisioner/app.py | 225 | def _normalize_extra_mount_container_path( | CODE |
| LOW | docker/provisioner/app.py | 284 | def _lark_cli_runtime_enabled(provision_lark_cli_runtime: bool) -> bool: | CODE |
| LOW | docker/provisioner/app.py | 294 | def _validate_lark_provisioning_request(runtime: bool, broker: bool) -> None: | CODE |
| LOW | docker/provisioner/app.py | 313 | def _runtime_provided_extra_mounts( | CODE |
| LOW | docker/provisioner/app.py | 346 | def _lark_broker_credential_mounts( | CODE |
| LOW | docker/provisioner/app.py | 371 | def _extra_mount_pvc_sub_path(host_path: str) -> str: | CODE |
| LOW | docker/provisioner/app.py | 592 | def _build_extra_volume_mounts( | CODE |
| LOW | docker/provisioner/app.py | 882 | def _build_lark_cli_init_containers( | CODE |
| LOW | docker/provisioner/app.py | 929 | def _build_lark_cli_broker_sidecars( | CODE |
| LOW | frontend/tests/unit/core/streamdown-plugins.test.ts | 35 | function renderMemorySummaryMarkdown(content: string) { | CODE |
| LOW | frontend/tests/unit/core/memory/fixtures.ts | 4 | export function legacyMemoryWithoutCognitiveStyle(): Omit< | CODE |
| LOW | frontend/tests/unit/core/memory/fixtures.ts | 35 | export function legacyMemoryWithIncompleteFacts() { | CODE |
| LOW | …it/core/threads/native-reconnect-recovery.dom.test.tsx | 41 | return function NativeReconnectTestWrapper({ | CODE |
| LOW | …tests/unit/core/threads/active-run-rejoin.dom.test.tsx | 71 | return function ActiveRunRejoinTestWrapper({ | CODE |
| LOW | …tests/unit/core/threads/active-run-rejoin.dom.test.tsx | 120 | function failActiveRecoveredStream() { | CODE |
| LOW | frontend/tests/unit/core/threads/stream-options.test.ts | 3 | async function captureThreadStreamOptions(assistantId?: string) { | CODE |
| LOW | …tests/unit/core/voice-input/speech-recognition.test.ts | 289 | function makeSpeechRecognitionConstructor(): SpeechRecognitionConstructor { | CODE |
| LOW | …t/components/workspace/model-selector-overflow.test.ts | 14 | function selectedModelWrapperClasses(relativePath: string) { | CODE |
| LOW | frontend/tests/unit/hooks/use-global-shortcuts.test.ts | 5 | async function loadHookWithCapturedHandler() { | CODE |
| LOW | frontend/tests/e2e/thread-ordering.spec.ts | 168 | async function expectGroupIndicesAscending(page: Page) { | CODE |
| LOW | frontend/tests/e2e/artifact-viewer-window.spec.ts | 12 | async function stubUnmockedThreadEndpoints(page: Page, threadId: string) { | CODE |
| LOW | frontend/tests/e2e/subtask-card.spec.ts | 105 | async function startRunningSubtaskStream() { | CODE |
| LOW | frontend/tests/e2e/sidecar-chat.spec.ts | 71 | async function clickSelectionToolbarButton(page: Page, label: string) { | CODE |
| LOW | frontend/tests/e2e/sidecar-chat.spec.ts | 89 | async function selectTextAndClickToolbarButton( | CODE |
| LOW | frontend/tests/e2e/sidecar-chat.spec.ts | 108 | async function expectSidecarSelectionToolbarActions(page: Page, text: string) { | CODE |
| LOW | frontend/tests/e2e/sidecar-chat.spec.ts | 134 | async function expectComposerHeightsEqual(page: Page) { | CODE |
| LOW | frontend/tests/e2e/sidecar-chat.spec.ts | 163 | async function expectSidecarModelPinnedToSubmit(page: Page) { | CODE |
| LOW | frontend/tests/e2e/sidecar-chat.spec.ts | 239 | async function expectSidecarModelHiddenWhenCompact(page: Page) { | CODE |
| LOW | frontend/tests/e2e/sidecar-chat.spec.ts | 289 | async function expectSidecarScrollDoesNotAnimateAfterOpen(page: Page) { | CODE |
| LOW | frontend/tests/e2e/sidecar-chat.spec.ts | 325 | async function openSidecarAndExpectNoAnimatedScroll(page: Page) { | CODE |
| LOW | frontend/tests/e2e/streaming-reasoning-order.spec.ts | 223 | async function startHeldOpenStreamServer( | CODE |
| LOW | frontend/tests/e2e/artifact-batched-stream.spec.ts | 21 | function batchedWriteFileStreamFrames() { | CODE |
| LOW | frontend/tests/e2e/artifact-batched-stream.spec.ts | 107 | async function startBatchedWriteFileStreamServer() { | CODE |
| LOW | frontend/tests/e2e/utils/mock-api.ts | 247 | function scheduledTaskEventResponse(event: MockScheduledTaskEvent) { | CODE |
| LOW | frontend/src/core/clipboard.ts | 76 | async function readPlainTextFromClipboardItem( | CODE |
| LOW | frontend/src/core/clipboard.ts | 103 | function canDefineNavigatorClipboard( | CODE |
| LOW | frontend/src/core/workspace-changes/summary.ts | 19 | export function getWorkspaceChangeBadgeLabel(summary: WorkspaceChangeSummary) { | CODE |
| LOW | frontend/src/core/workspace-changes/summary.ts | 24 | export function getWorkspaceChangeLineClass( | CODE |
| LOW | frontend/src/core/settings/store.ts | 97 | function ensureStorageListenerRegistered() { | CODE |
| LOW | frontend/src/core/artifacts/loader.ts | 118 | export function loadArtifactContentFromToolCall({ | CODE |
| LOW | frontend/src/core/artifacts/utils.ts | 32 | export function buildWriteFileArtifactURL({ | CODE |
| LOW | frontend/src/core/artifacts/utils.ts | 52 | function decodeRelativeArtifactPath(filepath: string) { | CODE |
| LOW | frontend/src/core/artifacts/utils.ts | 88 | export function extractArtifactsFromThread(thread: { | CODE |
| LOW | frontend/src/core/artifacts/utils.ts | 101 | export function resolveMarkdownArtifactURL(src: string, threadId: string) { | CODE |
| LOW | frontend/src/core/artifacts/api.ts | 91 | export async function getArtifactArchiveManifest({ | CODE |
| LOW | frontend/src/core/artifacts/viewer.ts | 24 | export function resolveStoredArtifactLanguage(filepath: string) { | CODE |
| LOW | frontend/src/core/artifacts/viewer.ts | 77 | export function parseArtifactViewerParams( | CODE |
| LOW | frontend/src/core/artifacts/viewer.ts | 135 | export function requiresAuthenticatedViewer(target: ArtifactViewerTarget) { | CODE |
| LOW | frontend/src/core/artifacts/hooks.ts | 87 | export function useStandaloneArtifactContent({ | CODE |
| LOW | frontend/src/core/artifacts/preview.ts | 87 | export function buildWriteFileDraftContent({ | CODE |
| LOW | frontend/src/core/artifacts/preview.ts | 173 | export function appendHtmlPreviewBaseHref( | CODE |
| LOW | frontend/src/core/artifacts/preview.ts | 221 | export function createHtmlPreviewScrollKey(value: string) { | CODE |
| LOW | frontend/src/core/artifacts/preview.ts | 237 | function htmlScrollRestorationScript(messageKey: string) { | CODE |
| LOW | frontend/src/core/artifacts/preview.ts | 280 | export function appendHtmlPreviewScrollRestoration( | CODE |
| LOW | frontend/src/core/background-tasks/types.ts | 55 | export function shouldPollBackgroundTaskDetail( | CODE |
| LOW | frontend/src/core/tasks/presentation.ts | 5 | export function resolveSubtaskDescription( | CODE |
| LOW | frontend/src/core/tasks/subtask-result.ts | 198 | export function derivePendingSubtaskStatus( | CODE |
| 21486 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | config.example.yaml | 81 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 83 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 89 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 91 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 98 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 100 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 825 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 827 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 837 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 839 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 1382 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 1384 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 1452 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 1454 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 1463 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 1465 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 1622 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 1624 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 2136 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 2138 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 2154 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 2156 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 2165 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 2167 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 2532 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 2534 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 2540 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 2542 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 2549 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 2551 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 3175 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 3177 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 3243 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 3245 | # ============================================================================ | COMMENT |
| MEDIUM | config.example.yaml | 18 | # ============================================================================ | COMMENT |
| MEDIUM | config.example.yaml | 20 | # ============================================================================ | COMMENT |
| MEDIUM | config.example.yaml | 42 | # ============================================================================ | COMMENT |
| MEDIUM | config.example.yaml | 44 | # ============================================================================ | COMMENT |
| MEDIUM | config.example.yaml | 57 | # ============================================================================ | COMMENT |
| MEDIUM | config.example.yaml | 59 | # ============================================================================ | COMMENT |
| MEDIUM | config.example.yaml | 113 | # ============================================================================ | COMMENT |
| MEDIUM | config.example.yaml | 115 | # ============================================================================ | COMMENT |
| MEDIUM | config.example.yaml | 127 | # ============================================================================ | COMMENT |
| MEDIUM | config.example.yaml | 129 | # ============================================================================ | COMMENT |
| MEDIUM | config.example.yaml | 850 | # ============================================================================ | COMMENT |
| MEDIUM | config.example.yaml | 852 | # ============================================================================ | COMMENT |
| MEDIUM | config.example.yaml | 1366 | # ============================================================================ | COMMENT |
| MEDIUM | config.example.yaml | 1368 | # ============================================================================ | COMMENT |
| MEDIUM | config.example.yaml | 1431 | # ============================================================================ | COMMENT |
| MEDIUM | config.example.yaml | 1433 | # ============================================================================ | COMMENT |
| MEDIUM | config.example.yaml | 1477 | # ============================================================================ | COMMENT |
| MEDIUM | config.example.yaml | 1479 | # ============================================================================ | COMMENT |
| MEDIUM | config.example.yaml | 1501 | # ============================================================================ | COMMENT |
| MEDIUM | config.example.yaml | 1503 | # ============================================================================ | COMMENT |
| MEDIUM | config.example.yaml | 1531 | # ============================================================================ | COMMENT |
| MEDIUM | config.example.yaml | 1533 | # ============================================================================ | COMMENT |
| MEDIUM | config.example.yaml | 1556 | # ============================================================================ | COMMENT |
| MEDIUM | config.example.yaml | 1558 | # ============================================================================ | COMMENT |
| MEDIUM | config.example.yaml | 1576 | # ============================================================================ | COMMENT |
| MEDIUM | config.example.yaml | 1578 | # ============================================================================ | COMMENT |
| 2145 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docker/provisioner/app.py | 31 | CODE | |
| LOW | backend/app/subagent_batches/service.py | 3 | CODE | |
| LOW | backend/app/subagent_batches/__init__.py | 1 | CODE | |
| LOW | backend/app/scheduler/notification_delivery.py | 12 | CODE | |
| LOW | backend/app/scheduler/notification_delivery.py | 23 | CODE | |
| LOW | backend/app/scheduler/service.py | 1 | CODE | |
| LOW | backend/app/scheduler/notification_text.py | 26 | CODE | |
| LOW | backend/app/scheduler/__init__.py | 1 | CODE | |
| LOW | backend/app/mcp_tasks/service.py | 1 | CODE | |
| LOW | backend/app/mcp_tasks/__init__.py | 1 | CODE | |
| LOW | backend/app/gateway/browser_capability.py | 3 | CODE | |
| LOW | backend/app/gateway/scheduled_task_access.py | 10 | CODE | |
| LOW | backend/app/gateway/upload_ingestion.py | 29 | CODE | |
| LOW | backend/app/gateway/deps.py | 18 | CODE | |
| LOW | backend/app/gateway/services.py | 8 | CODE | |
| LOW | backend/app/gateway/run_origin.py | 15 | CODE | |
| LOW | backend/app/gateway/skill_export.py | 3 | CODE | |
| LOW | backend/app/gateway/context_usage.py | 3 | CODE | |
| LOW | backend/app/gateway/health.py | 40 | CODE | |
| LOW | backend/app/gateway/conversation_reader.py | 8 | CODE | |
| LOW | backend/app/gateway/sse_headers.py | 10 | CODE | |
| LOW | backend/app/gateway/__init__.py | 1 | CODE | |
| LOW | backend/app/gateway/__init__.py | 1 | CODE | |
| LOW | backend/app/gateway/auth_disabled.py | 3 | CODE | |
| LOW | backend/app/gateway/checkpoint_retention.py | 42 | CODE | |
| LOW | backend/app/gateway/internal_auth.py | 3 | CODE | |
| LOW | backend/app/gateway/extension_agent_runs.py | 3 | CODE | |
| LOW | backend/app/gateway/conversation_access.py | 3 | CODE | |
| LOW | backend/app/gateway/scheduled_task_errors.py | 12 | CODE | |
| LOW | backend/app/gateway/knowledge_scope_admission.py | 3 | CODE | |
| LOW | backend/app/gateway/pagination.py | 3 | CODE | |
| LOW | backend/app/gateway/run_models.py | 3 | CODE | |
| LOW | backend/app/gateway/checkpoint_lineage.py | 3 | CODE | |
| LOW | backend/app/gateway/authz.py | 34 | CODE | |
| LOW | backend/app/gateway/artifact_archive.py | 3 | CODE | |
| LOW | backend/app/gateway/trace_middleware.py | 3 | CODE | |
| LOW | backend/app/gateway/routers/subagents.py | 3 | CODE | |
| LOW | backend/app/gateway/routers/thread_runs.py | 12 | CODE | |
| LOW | backend/app/gateway/routers/admin_users.py | 16 | CODE | |
| LOW | backend/app/gateway/routers/scheduled_tasks.py | 1 | CODE | |
| LOW | backend/app/gateway/routers/feedback.py | 7 | CODE | |
| LOW | backend/app/gateway/routers/channel_connections.py | 3 | CODE | |
| LOW | backend/app/gateway/routers/project_documents.py | 12 | CODE | |
| LOW | backend/app/gateway/routers/__init__.py | 1 | CODE | |
| LOW | backend/app/gateway/routers/__init__.py | 1 | CODE | |
| LOW | backend/app/gateway/routers/__init__.py | 1 | CODE | |
| LOW | backend/app/gateway/routers/__init__.py | 1 | CODE | |
| LOW | backend/app/gateway/routers/__init__.py | 1 | CODE | |
| LOW | backend/app/gateway/routers/__init__.py | 1 | CODE | |
| LOW | backend/app/gateway/routers/__init__.py | 1 | CODE | |
| LOW | backend/app/gateway/routers/__init__.py | 1 | CODE | |
| LOW | backend/app/gateway/routers/__init__.py | 1 | CODE | |
| LOW | backend/app/gateway/routers/__init__.py | 1 | CODE | |
| LOW | backend/app/gateway/routers/__init__.py | 1 | CODE | |
| LOW | backend/app/gateway/routers/__init__.py | 1 | CODE | |
| LOW | backend/app/gateway/routers/__init__.py | 1 | CODE | |
| LOW | backend/app/gateway/routers/trash.py | 15 | CODE | |
| LOW | backend/app/gateway/routers/assistants_compat.py | 10 | CODE | |
| LOW | backend/app/gateway/routers/subagent_batches.py | 3 | CODE | |
| LOW | backend/app/gateway/routers/threads.py | 13 | CODE | |
| 1848 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docker/provisioner/app.py | 400 | except Exception as exc: | CODE |
| LOW | docker/provisioner/app.py | 406 | except Exception as exc: | CODE |
| LOW | backend/debug.py | 92 | except Exception as e: | CODE |
| LOW | backend/debug.py | 163 | except Exception as e: | CODE |
| LOW | backend/app/scheduler/notification_delivery.py | 125 | except Exception: | CODE |
| LOW | backend/app/scheduler/notification_delivery.py | 133 | except Exception: | CODE |
| LOW | backend/app/scheduler/notification_delivery.py | 147 | except Exception: | CODE |
| LOW | backend/app/scheduler/notification_delivery.py | 166 | except Exception: | CODE |
| LOW | backend/app/scheduler/notification_delivery.py | 195 | except Exception: | CODE |
| LOW | backend/app/scheduler/notification_delivery.py | 281 | except Exception as exc: | CODE |
| LOW | backend/app/scheduler/notification_delivery.py | 290 | except Exception: | CODE |
| LOW | backend/app/scheduler/service.py | 265 | except Exception: | CODE |
| LOW | backend/app/scheduler/service.py | 687 | except Exception as exc: | CODE |
| LOW | backend/app/scheduler/service.py | 721 | except Exception: | CODE |
| LOW | backend/app/scheduler/service.py | 748 | except Exception: | CODE |
| LOW | backend/app/scheduler/service.py | 801 | except Exception: | CODE |
| LOW | backend/app/scheduler/service.py | 1002 | except Exception: | CODE |
| LOW | backend/app/scheduler/service.py | 1012 | except Exception: | CODE |
| LOW | backend/app/scheduler/service.py | 1028 | except Exception: | CODE |
| LOW | backend/app/scheduler/service.py | 1038 | except Exception: | CODE |
| LOW | backend/app/scheduler/service.py | 1052 | except Exception: | CODE |
| LOW | backend/app/mcp_tasks/service.py | 289 | except Exception: | CODE |
| LOW | backend/app/mcp_tasks/service.py | 362 | except Exception: | CODE |
| LOW | backend/app/mcp_tasks/service.py | 516 | except Exception: | CODE |
| LOW | backend/app/mcp_tasks/service.py | 549 | except Exception: | CODE |
| LOW | backend/app/mcp_tasks/service.py | 820 | except Exception as exc: # noqa: BLE001 - remote cancellation is retryable | CODE |
| LOW | backend/app/mcp_tasks/service.py | 863 | except Exception as exc: # noqa: BLE001 - isolate one notification from its claimed siblings | CODE |
| LOW | backend/app/mcp_tasks/service.py | 1034 | except Exception as exc: # noqa: BLE001 - retry the same idempotency key | CODE |
| LOW | backend/app/mcp_tasks/service.py | 1142 | except Exception: | CODE |
| LOW | backend/app/mcp_tasks/service.py | 1188 | except Exception as exc: # noqa: BLE001 - claim recovery is best-effort | CODE |
| LOW | backend/app/mcp_tasks/service.py | 1221 | except Exception: # noqa: BLE001 - release every record in the claimed batch | CODE |
| LOW | backend/app/mcp_tasks/service.py | 1279 | except Exception: # noqa: BLE001 - retain the task-scoped failure | CODE |
| LOW | backend/app/mcp_tasks/service.py | 1370 | except Exception as exc: # noqa: BLE001 - driver boundary; retry on the next poll | CODE |
| LOW | backend/app/mcp_tasks/service.py | 1558 | except Exception: | CODE |
| LOW | backend/app/gateway/upload_ingestion.py | 357 | except Exception: | CODE |
| LOW | backend/app/gateway/upload_ingestion.py | 431 | except Exception: | CODE |
| MEDIUM | backend/app/gateway/deps.py | 688 | def reset_notify_loop_safely() -> None: | CODE |
| LOW⚡ | backend/app/gateway/deps.py | 408 | except Exception: | CODE |
| LOW⚡ | backend/app/gateway/deps.py | 418 | except Exception: | CODE |
| LOW⚡ | backend/app/gateway/deps.py | 424 | except Exception: | CODE |
| LOW⚡ | backend/app/gateway/deps.py | 468 | except Exception: | CODE |
| LOW⚡ | backend/app/gateway/deps.py | 482 | except Exception: | CODE |
| LOW⚡ | backend/app/gateway/deps.py | 555 | except Exception: | CODE |
| LOW⚡ | backend/app/gateway/deps.py | 562 | except Exception: | CODE |
| LOW⚡ | backend/app/gateway/deps.py | 684 | except Exception: | CODE |
| LOW⚡ | backend/app/gateway/deps.py | 691 | except Exception: | CODE |
| LOW⚡ | backend/app/gateway/deps.py | 699 | except Exception: | CODE |
| LOW | backend/app/gateway/deps.py | 444 | except Exception: | CODE |
| LOW | backend/app/gateway/deps.py | 448 | except Exception: | CODE |
| LOW | backend/app/gateway/deps.py | 613 | except Exception as exc: # noqa: BLE001 - request boundary: log and degrade gracefully | CODE |
| LOW⚡ | backend/app/gateway/services.py | 291 | except Exception: | CODE |
| LOW⚡ | backend/app/gateway/services.py | 856 | except Exception: | CODE |
| LOW⚡ | backend/app/gateway/services.py | 985 | except Exception: | CODE |
| LOW⚡ | backend/app/gateway/services.py | 1003 | except Exception: | CODE |
| LOW⚡ | backend/app/gateway/services.py | 1269 | except Exception: | CODE |
| LOW | backend/app/gateway/services.py | 229 | except Exception: | CODE |
| LOW | backend/app/gateway/services.py | 1036 | except Exception: | CODE |
| LOW | backend/app/gateway/services.py | 1403 | except Exception: | CODE |
| LOW | backend/app/gateway/services.py | 1471 | except Exception: | CODE |
| LOW | backend/app/gateway/services.py | 1573 | except Exception as exc: | CODE |
| 1266 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | backend/debug.py | 10 | cd backend && PYTHONPATH=. uv run python debug.py | STRING |
| HIGH | backend/app/gateway/scheduled_task_errors.py | 112 | message = f"The end time {exc.end_at} has passed. Set a later end_at or clear it (end_at: null) in the same requ | CODE |
| HIGH | backend/app/gateway/scheduled_task_errors.py | 114 | message = f"All {exc.max_runs} automatic runs are used. Raise max_runs above {exc.used} or clear it (max_runs: n | CODE |
| HIGH | backend/app/gateway/routers/models.py | 128 | "reasoning": {"thinking": "unsupported", "effort": null, "history": null, "source": "legacy"} | STRING |
| HIGH | backend/app/gateway/routers/models.py | 137 | "reasoning": {"thinking": "optional", "effort": null, "history": null, "source": "legacy"} | STRING |
| HIGH | backend/app/gateway/routers/scheduled_tasks.py | 137 | # Sent as null, these four clear the field (model_fields_set). | COMMENT |
| HIGH | backend/app/channels/discord.py | 165 | logger.error("discord.py is not installed. The Discord channel needs the 'discord' extra: run `cd backend && | CODE |
| HIGH | backend/tests/test_dev_multi_instance_script.py | 504 | *state-dir*) cat "$state/$1/deerflow.harness.state-dir" 2>/dev/null; echo ;; | COMMENT |
| HIGH | backend/tests/test_dev_multi_instance_script.py | 505 | *deerflow.harness*) cat "$state/$1/deerflow.harness" 2>/dev/null; echo ;; | COMMENT |
| HIGH | backend/tests/test_dev_multi_instance_script.py | 586 | count=$(( $(cat "$dir/lsof-count-$port" 2>/dev/null || echo 0) + 1 )) | CODE |
| HIGH⚡ | backend/tests/test_sandbox_tools_security.py | 724 | ("ls /mnt/user-data && pwd", "ls /tmp/deer-flow/threads/t1/user-data && pwd"), | CODE |
| HIGH⚡ | backend/tests/test_sandbox_tools_security.py | 758 | "cd /mnt/user-data/workspace && git clone https://github.com/CherryHQ/cherry-studio.git", | CODE |
| HIGH⚡ | backend/tests/test_sandbox_tools_security.py | 773 | "/bin/echo ok > /mnt/user-data/workspace/out.txt && cat /dev/null", | CODE |
| HIGH⚡ | backend/tests/test_sandbox_tools_security.py | 823 | validate_local_bash_command_paths("cd $HOME && cat .ssh/id_rsa", _THREAD_DATA) | CODE |
| HIGH⚡ | backend/tests/test_sandbox_tools_security.py | 828 | validate_local_bash_command_paths("echo ok\ncd $HOME && cat .ssh/id_rsa", _THREAD_DATA) | CODE |
| HIGH⚡ | backend/tests/test_sandbox_tools_security.py | 835 | "builtin cd $HOME && cat .ssh/id_rsa", | CODE |
| HIGH⚡ | backend/tests/test_sandbox_tools_security.py | 838 | 'echo "$(cd $HOME && cat .ssh/id_rsa)"', | CODE |
| HIGH⚡ | backend/tests/test_sandbox_tools_security.py | 850 | "ln -s / root && cat root/etc/passwd", | CODE |
| HIGH⚡ | backend/tests/test_sandbox_tools_security.py | 872 | "mkdir -p reports && python script.py data/input.csv > reports/out.txt", | CODE |
| HIGH⚡ | backend/tests/test_sandbox_tools_security.py | 879 | "cd /mnt/user-data/workspace && cat data/input.csv > reports/out.txt", | CODE |
| HIGH⚡ | backend/tests/test_scheduled_task_router_behavior.py | 1578 | assert detail["message"] == "All 2 automatic runs are used. Raise max_runs above 2 or clear it (max_runs: null) in t | CODE |
| HIGH⚡ | backend/tests/test_scheduled_task_router_behavior.py | 1612 | assert detail["message"].startswith("The end time ") and detail["message"].endswith("has passed. Set a later end_at | CODE |
| HIGH⚡ | backend/tests/test_tool_result_meta.py | 345 | content = '{"error": null, "query": "test"}' | CODE |
| HIGH | backend/tests/test_verify_versions_lockfile.py | 12 | $ cd backend && uv sync --locked --extra redis --extra postgres | STRING |
| HIGH | backend/tests/test_json_integer_matching.py | 55 | {"id": "null", "data": '{"x": null}'}, | CODE |
| HIGH⚡ | backend/tests/test_run_worker_rollback.py | 420 | assert batcher.push((first, {})) == [] | CODE |
| HIGH⚡ | backend/tests/test_run_worker_rollback.py | 421 | published = batcher.push((continuation, {})) | CODE |
| HIGH⚡ | backend/tests/test_run_worker_rollback.py | 458 | assert batcher.push((visible_text, {})) == [(visible_text, {})] | CODE |
| HIGH⚡ | backend/tests/test_run_worker_rollback.py | 459 | assert batcher.push((search_tool, {})) == [(search_tool, {})] | CODE |
| HIGH⚡ | backend/tests/test_run_worker_rollback.py | 460 | visible_reasoning = batcher.push((write_with_reasoning, {})) | CODE |
| HIGH⚡ | backend/tests/test_run_worker_rollback.py | 484 | assert batcher.push((first, {"langgraph_checkpoint_ns": "task-a"})) == [] | CODE |
| HIGH⚡ | backend/tests/test_run_worker_rollback.py | 485 | published = batcher.push((second, {"langgraph_checkpoint_ns": "task-b"})) | CODE |
| HIGH⚡ | backend/tests/test_run_worker_rollback.py | 556 | assert batcher.push((name_prefix, {})) == [(name_prefix, {})] | CODE |
| HIGH⚡ | backend/tests/test_run_worker_rollback.py | 558 | assert len(batcher.push((name_suffix, {}))) == 1 | CODE |
| HIGH⚡ | backend/tests/test_run_worker_rollback.py | 582 | assert len(batcher.push((first, {}))) == 1 | CODE |
| HIGH⚡ | backend/tests/test_run_worker_rollback.py | 583 | assert len(batcher.push((continuation, {}))) == 1 | CODE |
| HIGH | backend/tests/test_run_worker_rollback.py | 508 | published = batcher.push((message, metadata)) | CODE |
| HIGH | backend/tests/test_run_worker_rollback.py | 532 | assert batcher.push((message, {})) == [(message, {})] | CODE |
| HIGH⚡ | backend/tests/test_acceptance_checks.py | 838 | executions = [_bash_execution("cd backend && make test", output_tail="3 passed")] | CODE |
| HIGH⚡ | backend/tests/test_acceptance_checks.py | 844 | executions = [_bash_execution("cd backend && make test", output_tail="3 passed")] | CODE |
| HIGH⚡ | backend/tests/test_acceptance_checks.py | 845 | verdict = check_acceptance_criteria(["tests_passed:cd backend && make test"], bash_executions=executions) | CODE |
| HIGH⚡ | backend/tests/test_acceptance_checks.py | 1050 | verdict = check_acceptance_criteria(["tests_passed:cd backend && make test"], bash_executions=executions) | CODE |
| HIGH⚡ | backend/tests/test_acceptance_checks.py | 1101 | executions = [_bash_execution("false && pytest tests/x.py; echo '3 passed'", output_tail="3 passed")] | CODE |
| HIGH⚡ | backend/tests/test_acceptance_checks.py | 1125 | executions = [_bash_execution("cd backend && make test", status="error", output_tail="")] | CODE |
| HIGH⚡ | backend/tests/test_acceptance_checks.py | 1135 | executions = [_bash_execution("false || make test", status="error", output_tail="2 failed")] | CODE |
| HIGH⚡ | backend/tests/test_acceptance_checks.py | 1148 | verdict = check_acceptance_criteria(["tests_passed:cd missing && pytest tests/test_auth.py"], bash_executions=ex | CODE |
| HIGH⚡ | backend/tests/test_acceptance_checks.py | 1158 | executions = [_bash_execution("cd backend && make test", output_tail="3 passed")] | CODE |
| HIGH⚡ | backend/tests/test_acceptance_checks.py | 1270 | executions = [_bash_execution('cd foo";"bar && pytest tests/', output_tail="3 passed")] | CODE |
| HIGH⚡ | backend/tests/test_acceptance_checks.py | 1343 | executions = [_bash_execution("cd /tmp/fake && pytest tests/", output_tail="3 passed")] | CODE |
| HIGH⚡ | backend/tests/test_acceptance_checks.py | 1349 | executions = [_bash_execution("cd ../../tmp/fake && pytest tests/", output_tail="3 passed")] | CODE |
| HIGH⚡ | backend/tests/test_acceptance_checks.py | 1435 | executions = [_bash_execution("cd D:/tmp/fake && pytest tests/", output_tail="3 passed")] | CODE |
| HIGH⚡ | backend/tests/test_acceptance_checks.py | 1480 | executions = [_bash_execution("cd d:/WS/thread/user-data/workspace/project && pytest tests/", output_tail="3 pas | CODE |
| HIGH⚡ | backend/tests/test_acceptance_checks.py | 1487 | executions = [_bash_execution("cd d:/WS/STRASSE/workspace/fake && pytest tests/", output_tail="3 passed")] | CODE |
| HIGH⚡ | backend/tests/test_acceptance_checks.py | 1494 | executions = [_bash_execution("cd d:/project && pytest tests/", output_tail="3 passed")] | CODE |
| HIGH⚡ | backend/tests/test_acceptance_checks.py | 1503 | "cd && pytest tests/", # bare cd goes HOME | CODE |
| HIGH⚡ | backend/tests/test_acceptance_checks.py | 1505 | "cd backend/../../x && pytest tests/", # lexical walk-out | CODE |
| HIGH⚡ | backend/tests/test_acceptance_checks.py | 1506 | "cd linked/../safe && pytest tests/", # ``..`` can cross a directory symlink | CODE |
| HIGH⚡ | backend/tests/test_acceptance_checks.py | 1507 | "cd /mnt/user-data/../etc && pytest tests/", # normalized escape | CODE |
| HIGH⚡ | backend/tests/test_acceptance_checks.py | 1508 | "cd /ws/thread/user-data/workspace2 && pytest tests/", # sibling of an allowed root | CODE |
| HIGH⚡ | backend/tests/test_acceptance_checks.py | 1520 | "cd backend && pytest tests/", # relative, stays inside | CODE |
| 105 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | docker/provisioner/app.py | 1347 | except ApiException: | CODE |
| HIGH | backend/app/scheduler/notification_delivery.py | 113 | except asyncio.CancelledError: | CODE |
| HIGH | backend/app/mcp_tasks/service.py | 547 | except asyncio.CancelledError: | CODE |
| HIGH | backend/app/mcp_tasks/service.py | 549 | except Exception: | CODE |
| HIGH | backend/app/gateway/services.py | 2167 | except asyncio.CancelledError: | CODE |
| HIGH | backend/app/gateway/services.py | 2191 | except asyncio.CancelledError: | CODE |
| HIGH | backend/app/gateway/skill_export.py | 127 | except BaseException: | CODE |
| HIGH | backend/app/gateway/checkpoint_retention.py | 173 | except Exception: | CODE |
| HIGH | backend/app/gateway/routers/thread_runs.py | 143 | except ValueError: | CODE |
| HIGH | backend/app/gateway/routers/thread_runs.py | 1305 | except asyncio.CancelledError: | CODE |
| HIGH | backend/app/gateway/routers/thread_runs.py | 1411 | except (asyncio.CancelledError, Exception): | CODE |
| HIGH | backend/app/gateway/routers/thread_runs.py | 1714 | except Exception: | CODE |
| HIGH | backend/app/gateway/routers/channel_connections.py | 407 | except ValueError: | CODE |
| HIGH | backend/app/gateway/routers/browser.py | 510 | except WebSocketDisconnect: | CODE |
| HIGH | backend/app/gateway/routers/browser.py | 529 | except Exception: | CODE |
| HIGH | backend/app/gateway/routers/threads.py | 895 | except ImportError: | CODE |
| HIGH | backend/app/gateway/routers/artifacts.py | 149 | except FileNotFoundError: | CODE |
| HIGH | backend/app/gateway/routers/uploads.py | 320 | except FileNotFoundError: | CODE |
| HIGH | backend/app/gateway/routers/uploads.py | 190 | except FileNotFoundError: | CODE |
| HIGH | backend/app/gateway/routers/uploads.py | 229 | except OSError: | CODE |
| HIGH | backend/app/gateway/routers/uploads.py | 233 | except FileNotFoundError: | CODE |
| HIGH | backend/app/gateway/routers/uploads.py | 277 | except FileNotFoundError: | CODE |
| HIGH | backend/app/gateway/auth/oidc.py | 214 | except Exception: | CODE |
| HIGH | backend/app/channels/telegram.py | 246 | except RuntimeError: | CODE |
| HIGH | backend/app/channels/discord.py | 448 | except asyncio.CancelledError: | CODE |
| HIGH | backend/app/channels/wechat.py | 377 | except asyncio.CancelledError: | CODE |
| HIGH | backend/app/channels/wechat.py | 1391 | except ValueError: | CODE |
| HIGH | backend/app/channels/feishu.py | 1363 | except Exception: | CODE |
| HIGH | backend/app/channels/slack.py | 239 | except Exception: | CODE |
| HIGH | backend/app/channels/wecom.py | 30 | except Exception: # pragma: no cover - absent only when the SDK itself is missing | CODE |
| HIGH | backend/app/channels/wecom.py | 583 | except Exception: | CODE |
| HIGH | backend/tests/test_task_tool_core_logic.py | 2430 | except asyncio.CancelledError: | CODE |
| HIGH | backend/tests/test_task_tool_core_logic.py | 1951 | except Exception: | CODE |
| HIGH | backend/tests/test_task_tool_core_logic.py | 2038 | except Exception: | CODE |
| HIGH | backend/tests/test_task_tool_core_logic.py | 2244 | except Exception: | CODE |
| HIGH | backend/tests/test_task_tool_core_logic.py | 2390 | except Exception: | CODE |
| HIGH | backend/tests/test_dev_multi_instance_script.py | 640 | except (ValueError, ProcessLookupError): | CODE |
| HIGH | backend/tests/test_multi_worker_run_ownership.py | 1076 | except asyncio.CancelledError: | CODE |
| HIGH | backend/tests/test_stream_cleanup.py | 247 | except asyncio.CancelledError: | CODE |
| HIGH | backend/tests/test_sandbox_search_tools.py | 405 | except re.error: | CODE |
| HIGH | backend/tests/test_sandbox_search_tools.py | 488 | except NotADirectoryError: | CODE |
| HIGH | backend/tests/test_memory_manager_interface.py | 376 | except NotImplementedError: | CODE |
| HIGH | backend/tests/test_sse_observer_disconnect.py | 223 | except asyncio.CancelledError: | CODE |
| HIGH | backend/tests/test_scanner_text_cache_atomic.py | 77 | except OSError: | CODE |
| HIGH | backend/tests/test_scheduled_goal_slow_rollback.py | 160 | except ConflictError: | CODE |
| HIGH | backend/tests/test_mcp_session_pool.py | 2503 | except BaseException: | CODE |
| HIGH | backend/tests/test_mcp_session_pool.py | 2238 | except BaseException: | CODE |
| HIGH | backend/tests/test_mcp_session_pool.py | 2329 | except BaseException: | CODE |
| HIGH | backend/tests/test_mcp_session_pool.py | 2559 | except asyncio.CancelledError: | CODE |
| HIGH | backend/tests/test_lark_cli_integration.py | 786 | except RuntimeError: | CODE |
| HIGH | backend/tests/test_channels.py | 9442 | except asyncio.CancelledError: | CODE |
| HIGH | backend/tests/test_aio_sandbox_provider.py | 1336 | except asyncio.CancelledError: | CODE |
| HIGH | backend/tests/test_aio_sandbox_provider.py | 1378 | except asyncio.CancelledError: | CODE |
| HIGH | backend/tests/test_pat_auth.py | 786 | except Exception: | CODE |
| HIGH | backend/tests/test_gateway_run_drain_shutdown.py | 384 | except asyncio.CancelledError: | CODE |
| HIGH | backend/tests/test_sandbox_lease_rebind_cancellation.py | 105 | except asyncio.CancelledError: | CODE |
| HIGH | backend/tests/test_executor_starvation.py | 60 | except TimeoutError: | CODE |
| HIGH | backend/tests/test_extension_model_invocation.py | 450 | except asyncio.CancelledError: | CODE |
| HIGH | backend/tests/test_admin_users_router.py | 299 | except LastAdminRemainsError: | CODE |
| HIGH | backend/tests/test_admin_users_router.py | 539 | except LastActiveAdminError: | CODE |
| 131 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docker/provisioner/app.py | 52 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/debug.py | 40 | def _setup_logging(log_level: int = logging.INFO) -> None: | CODE |
| LOW | backend/app/subagent_batches/service.py | 5 | __all__ = ["SubagentBatchService"] | CODE |
| LOW | backend/app/subagent_batches/__init__.py | 3 | __all__ = ["SubagentBatchService"] | CODE |
| LOW | backend/app/scheduler/notification_delivery.py | 25 | __all__ = ["NotificationDeliveryWorker", "redact_egress_text", "render_notification_text"] | CODE |
| LOW | backend/app/scheduler/notification_delivery.py | 27 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/scheduler/service.py | 33 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/scheduler/__init__.py | 3 | __all__ = ["ScheduledTaskService"] | CODE |
| LOW | backend/app/mcp_tasks/service.py | 33 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/mcp_tasks/__init__.py | 3 | __all__ = ["McpTaskService"] | CODE |
| LOW | backend/app/gateway/upload_ingestion.py | 53 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/gateway/deps.py | 42 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/gateway/services.py | 113 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/gateway/run_origin.py | 35 | __all__ = ["resolve_request_origin"] | CODE |
| LOW | backend/app/gateway/langgraph_studio.py | 22 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | backend/app/gateway/context_usage.py | 14 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/gateway/health.py | 60 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/gateway/conversation_reader.py | 18 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/gateway/__init__.py | 3 | __all__ = ["app", "create_app", "GatewayConfig", "get_gateway_config"] | CODE |
| LOW⚡ | backend/app/gateway/auth_disabled.py | 23 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/gateway/checkpoint_retention.py | 58 | __all__ = ["RetentionPolicy", "RetentionReport", "enforce_thread_retention"] | CODE |
| LOW | backend/app/gateway/persistent_writes.py | 15 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/gateway/conversation_access.py | 24 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/gateway/app.py | 78 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/gateway/authz.py | 59 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/gateway/auth_middleware.py | 34 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/gateway/routers/plugins.py | 16 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | backend/app/gateway/routers/auth.py | 160 | def _set_session_cookie(response: Response, token: str, request: Request, *, remember_me: bool | None = None) -> None: | CODE |
| LOW | backend/app/gateway/routers/auth.py | 45 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/gateway/routers/auth.py | 876 | def _set_csrf_cookie(response: Response, request: Request) -> None: | CODE |
| LOW⚡ | backend/app/gateway/routers/console.py | 31 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/gateway/routers/suggestions.py | 15 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/gateway/routers/models.py | 19 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/gateway/routers/skills.py | 58 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/gateway/routers/thread_runs.py | 82 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | backend/app/gateway/routers/feedback.py | 19 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/gateway/routers/channel_connections.py | 31 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/gateway/routers/project_documents.py | 49 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/gateway/routers/__init__.py | 17 | __all__ = [ | CODE |
| LOW | backend/app/gateway/routers/agents.py | 31 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/gateway/routers/agents.py | 617 | def _update_agent() -> None: | CODE |
| LOW | backend/app/gateway/routers/browser.py | 17 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/gateway/routers/trash.py | 32 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/gateway/routers/assistants_compat.py | 20 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/gateway/routers/threads.py | 87 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/gateway/routers/mcp.py | 43 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/gateway/routers/channels.py | 12 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/gateway/routers/artifacts.py | 32 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/gateway/routers/uploads.py | 44 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/gateway/routers/uploads.py | 54 | __all__ = [ | CODE |
| LOW | backend/app/gateway/routers/projects.py | 16 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/gateway/routers/project_thread_files.py | 32 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/gateway/routers/github_webhooks.py | 40 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/gateway/routers/runs.py | 30 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/gateway/routers/knowledge.py | 31 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/gateway/routers/integrations.py | 35 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/gateway/routers/input_polish.py | 12 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/gateway/routers/managed_models.py | 16 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/gateway/auth/local_provider.py | 10 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/gateway/auth/oidc.py | 21 | logger = logging.getLogger(__name__) | CODE |
| 471 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | backend/debug.py | 66 | CODE | |
| LOW | backend/app/scheduler/notification_text.py | 257 | CODE | |
| LOW | backend/app/mcp_tasks/service.py | 872 | CODE | |
| LOW | backend/app/gateway/deps.py | 428 | CODE | |
| LOW | backend/app/gateway/services.py | 492 | CODE | |
| LOW | backend/app/gateway/services.py | 1056 | CODE | |
| LOW | backend/app/gateway/services.py | 1823 | CODE | |
| LOW | backend/app/gateway/services.py | 2145 | CODE | |
| LOW | backend/app/gateway/skill_export.py | 108 | CODE | |
| LOW | backend/app/gateway/conversation_reader.py | 78 | CODE | |
| LOW | backend/app/gateway/langgraph_auth.py | 296 | CODE | |
| LOW | backend/app/gateway/checkpoint_lineage.py | 340 | CODE | |
| LOW | backend/app/gateway/auth_middleware.py | 93 | CODE | |
| LOW | backend/app/gateway/artifact_archive.py | 145 | CODE | |
| LOW | backend/app/gateway/routers/plugins.py | 71 | CODE | |
| LOW | backend/app/gateway/routers/auth.py | 751 | CODE | |
| LOW | backend/app/gateway/routers/console.py | 441 | CODE | |
| LOW | backend/app/gateway/routers/models.py | 101 | CODE | |
| LOW | backend/app/gateway/routers/skills.py | 211 | CODE | |
| LOW | backend/app/gateway/routers/skills.py | 343 | CODE | |
| LOW | backend/app/gateway/routers/thread_runs.py | 1269 | CODE | |
| LOW | backend/app/gateway/routers/personal_mcp.py | 52 | CODE | |
| LOW | backend/app/gateway/routers/browser.py | 118 | CODE | |
| LOW | backend/app/gateway/routers/browser.py | 215 | CODE | |
| LOW | backend/app/gateway/routers/browser.py | 401 | CODE | |
| LOW | backend/app/gateway/routers/browser.py | 455 | CODE | |
| LOW | backend/app/gateway/routers/threads.py | 1775 | CODE | |
| LOW | backend/app/gateway/routers/threads.py | 1831 | CODE | |
| LOW | backend/app/gateway/routers/mcp.py | 895 | CODE | |
| LOW | backend/app/gateway/routers/artifacts.py | 260 | CODE | |
| LOW | backend/app/gateway/routers/github_webhooks.py | 174 | CODE | |
| LOW | backend/app/gateway/github/triggers.py | 82 | CODE | |
| LOW | backend/app/gateway/github/registry.py | 75 | CODE | |
| LOW | backend/app/gateway/github/identity.py | 62 | CODE | |
| LOW | backend/app/channels/wechat_qr_login.py | 121 | CODE | |
| LOW | backend/app/channels/dingtalk.py | 107 | CODE | |
| LOW | backend/app/channels/dingtalk.py | 396 | CODE | |
| LOW | backend/app/channels/dingtalk.py | 535 | CODE | |
| LOW | backend/app/channels/telegram.py | 219 | CODE | |
| LOW | backend/app/channels/discord.py | 198 | CODE | |
| LOW | backend/app/channels/discord.py | 267 | CODE | |
| LOW | backend/app/channels/discord.py | 620 | CODE | |
| LOW | backend/app/channels/qq.py | 209 | CODE | |
| LOW | backend/app/channels/qq.py | 299 | CODE | |
| LOW | backend/app/channels/wechat.py | 635 | CODE | |
| LOW | backend/app/channels/wechat.py | 1198 | CODE | |
| LOW | backend/app/channels/buzz_seen_events.py | 105 | CODE | |
| LOW | backend/app/channels/buzz_seen_events.py | 259 | CODE | |
| LOW | backend/app/channels/feishu.py | 462 | CODE | |
| LOW | backend/app/channels/feishu.py | 784 | CODE | |
| LOW | backend/app/channels/feishu.py | 961 | CODE | |
| LOW | backend/app/channels/feishu.py | 1090 | CODE | |
| LOW | backend/app/channels/feishu.py | 1425 | CODE | |
| LOW | backend/app/channels/feishu.py | 1522 | CODE | |
| LOW | backend/app/channels/buzz.py | 327 | CODE | |
| LOW | backend/app/channels/buzz.py | 924 | CODE | |
| LOW | backend/app/channels/manager.py | 660 | CODE | |
| LOW | backend/app/channels/manager.py | 739 | CODE | |
| LOW | backend/app/channels/manager.py | 780 | CODE | |
| LOW | backend/app/channels/manager.py | 952 | CODE | |
| 491 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | backend/app/gateway/routers/trash.py | 0 | projects config, falling back to defaults when the app config is unavailable. | STRING |
| HIGH | backend/app/gateway/routers/projects.py | 0 | projects config, falling back to defaults when the app config is unavailable. | STRING |
| HIGH | backend/packages/harness/deerflow/projects/context.py | 0 | projects config, falling back to defaults when the app config is unavailable. | STRING |
| HIGH | backend/tests/test_memory_prescreen.py | 0 | fake system one endpoint that records every request it receives. | STRING |
| HIGH | backend/tests/test_typesafe_client.py | 0 | fake system one endpoint that records every request it receives. | STRING |
| HIGH | backend/tests/test_typesafe_config.py | 0 | fake system one endpoint that records every request it receives. | STRING |
| HIGH | backend/tests/test_subagent_executor.py | 0 | async stand-in for subagentexecutor._create_agent (the real one is async). | STRING |
| HIGH | backend/tests/test_extension_subagent_lifecycle.py | 0 | async stand-in for subagentexecutor._create_agent (the real one is async). | STRING |
| HIGH | backend/tests/test_extension_task_store_runtime.py | 0 | async stand-in for subagentexecutor._create_agent (the real one is async). | STRING |
| HIGH | backend/tests/test_tool_call_args.py | 0 | review on #5374: an interrupted write must not inherit the blocked result of a later call that reused its id. | STRING |
| HIGH | backend/tests/test_tool_output_budget_middleware.py | 0 | review on #5374: an interrupted write must not inherit the blocked result of a later call that reused its id. | STRING |
| HIGH | backend/tests/test_read_before_write_middleware.py | 0 | review on #5374: an interrupted write must not inherit the blocked result of a later call that reused its id. | STRING |
| HIGH | backend/tests/test_browser_automation.py | 0 | keep mocked tool calls offline while exercising the real url safety check. | STRING |
| HIGH | backend/tests/test_crawl4ai_tools.py | 0 | keep mocked tool calls offline while exercising the real url safety check. | STRING |
| HIGH | backend/tests/test_fastcrw_tools.py | 0 | keep mocked tool calls offline while exercising the real url safety check. | STRING |
| HIGH | backend/tests/test_firecrawl_tools.py | 0 | keep mocked tool calls offline while exercising the real url safety check. | STRING |
| HIGH | backend/tests/test_unbrowse_tools.py | 0 | reset the module-level warning flag before each test. | STRING |
| HIGH | backend/tests/test_sofya_tools.py | 0 | reset the module-level warning flag before each test. | STRING |
| HIGH | backend/tests/test_serper_tools.py | 0 | reset the module-level warning flag before each test. | STRING |
| HIGH | backend/tests/test_brave_tools.py | 0 | reset the module-level warning flag before each test. | STRING |
| HIGH | backend/tests/test_serply_tools.py | 0 | reset the module-level warning flag before each test. | STRING |
| HIGH | backend/tests/test_sofya_tools.py | 0 | tool accepts max_results as a call parameter when config does not override it. | STRING |
| HIGH | backend/tests/test_serper_tools.py | 0 | tool accepts max_results as a call parameter when config does not override it. | STRING |
| HIGH | backend/tests/test_brave_tools.py | 0 | tool accepts max_results as a call parameter when config does not override it. | STRING |
| HIGH | backend/tests/test_crawl4ai_tools.py | 0 | fail-closed delegated-backend ssrf guard (issue #5970). | STRING |
| HIGH | backend/tests/test_fastcrw_tools.py | 0 | fail-closed delegated-backend ssrf guard (issue #5970). | STRING |
| HIGH | backend/tests/test_browserless_client.py | 0 | fail-closed delegated-backend ssrf guard (issue #5970). | STRING |
| HIGH | backend/tests/test_firecrawl_tools.py | 0 | fail-closed delegated-backend ssrf guard (issue #5970). | STRING |
| HIGH | backend/tests/test_helm_provisioner_api_key.py | 0 | ``helm template`` never sees ``lookup`` results, so pin the preservation in the source. | STRING |
| HIGH | backend/tests/test_helm_credentials_key.py | 0 | ``helm template`` never sees ``lookup`` results, so pin the preservation in the source. | STRING |
| HIGH | backend/tests/test_helm_multi_replica_prereqs.py | 0 | ``helm template`` never sees ``lookup`` results, so pin the preservation in the source. | STRING |
| HIGH | backend/tests/test_serper_tools.py | 0 | a yaml `.inf` max_results must fall back to the default, not crash. | STRING |
| HIGH | backend/tests/test_groundroute_tools.py | 0 | a yaml `.inf` max_results must fall back to the default, not crash. | STRING |
| HIGH | backend/tests/test_brave_tools.py | 0 | a yaml `.inf` max_results must fall back to the default, not crash. | STRING |
| HIGH | backend/tests/test_serply_tools.py | 0 | a yaml `.inf` max_results must fall back to the default, not crash. | STRING |
| HIGH | backend/tests/test_project_documents_promotion.py | 0 | stamp a fake authcontext and set the user contextvar per request. | STRING |
| HIGH | backend/tests/test_project_documents_router.py | 0 | stamp a fake authcontext and set the user contextvar per request. | STRING |
| HIGH | backend/tests/test_trash_router.py | 0 | stamp a fake authcontext and set the user contextvar per request. | STRING |
| HIGH | backend/tests/test_token_budget_middleware.py | 0 | a call that raises is retried by llmerrorhandlingmiddleware through this wrap; the hint must still be sent. | STRING |
| HIGH | backend/tests/test_todo_middleware.py | 0 | a call that raises is retried by llmerrorhandlingmiddleware through this wrap; the hint must still be sent. | STRING |
| HIGH | backend/tests/test_tool_progress_middleware.py | 0 | a call that raises is retried by llmerrorhandlingmiddleware through this wrap; the hint must still be sent. | STRING |
| HIGH | backend/tests/test_dynamic_context_middleware.py | 0 | minimal modelrequest stand-in for the wrap_model_call hooks. | STRING |
| HIGH | backend/tests/test_run_events_endpoint.py | 0 | minimal modelrequest stand-in for the wrap_model_call hooks. | STRING |
| HIGH | …d/tests/blocking_io/test_dynamic_context_middleware.py | 0 | minimal modelrequest stand-in for the wrap_model_call hooks. | STRING |
| HIGH | backend/tests/blocking_io/test_uploads_middleware.py | 0 | fakemessageslistchatmodel with a no-op ``bind_tools`` for create_agent. | STRING |
| HIGH | …d/tests/blocking_io/test_dynamic_context_middleware.py | 0 | fakemessageslistchatmodel with a no-op ``bind_tools`` for create_agent. | STRING |
| HIGH | …s/blocking_io/test_subagent_date_context_middleware.py | 0 | fakemessageslistchatmodel with a no-op ``bind_tools`` for create_agent. | STRING |
| HIGH | …ages/harness/deerflow/runtime/checkpointer/provider.py | 0 | create the configured schema before langgraph creates its store tables. | STRING |
| HIGH | …arness/deerflow/runtime/checkpointer/async_provider.py | 0 | create the configured schema before langgraph creates its store tables. | STRING |
| HIGH | …nd/packages/harness/deerflow/runtime/store/provider.py | 0 | create the configured schema before langgraph creates its store tables. | STRING |
| HIGH | …kages/harness/deerflow/runtime/store/async_provider.py | 0 | create the configured schema before langgraph creates its store tables. | STRING |
| HIGH | …/packages/harness/deerflow/community/unbrowse/tools.py | 0 | fetch the contents of a web page at a given url via groundroute. only fetch exact urls that have been provided directly | STRING |
| HIGH | …/packages/harness/deerflow/community/crawl4ai/tools.py | 0 | fetch the contents of a web page at a given url via groundroute. only fetch exact urls that have been provided directly | STRING |
| HIGH | …end/packages/harness/deerflow/community/sofya/tools.py | 0 | fetch the contents of a web page at a given url via groundroute. only fetch exact urls that have been provided directly | STRING |
| HIGH | …packages/harness/deerflow/community/firecrawl/tools.py | 0 | fetch the contents of a web page at a given url via groundroute. only fetch exact urls that have been provided directly | STRING |
| HIGH | …d/packages/harness/deerflow/community/fastcrw/tools.py | 0 | fetch the contents of a web page at a given url via groundroute. only fetch exact urls that have been provided directly | STRING |
| HIGH | …ckend/packages/harness/deerflow/community/exa/tools.py | 0 | fetch the contents of a web page at a given url via groundroute. only fetch exact urls that have been provided directly | STRING |
| HIGH | …d/packages/harness/deerflow/community/jina_ai/tools.py | 0 | fetch the contents of a web page at a given url via groundroute. only fetch exact urls that have been provided directly | STRING |
| HIGH | …nd/packages/harness/deerflow/community/tavily/tools.py | 0 | fetch the contents of a web page at a given url via groundroute. only fetch exact urls that have been provided directly | STRING |
| HIGH | …packages/harness/deerflow/community/infoquest/tools.py | 0 | fetch the contents of a web page at a given url via groundroute. only fetch exact urls that have been provided directly | STRING |
| 13 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | config.example.yaml | 1 | # Configuration for the DeerFlow application | COMMENT |
| LOW | config.example.yaml | 21 | # Bump this number when the config schema changes. | COMMENT |
| LOW | config.example.yaml | 41 | COMMENT | |
| LOW | config.example.yaml | 61 | # middleware chains after built-in runtime middlewares, but before the | COMMENT |
| LOW | config.example.yaml | 81 | # ============================================================================ | COMMENT |
| LOW | config.example.yaml | 121 | # The Gateway never trusts a configured or client-supplied value above this | COMMENT |
| LOW | config.example.yaml | 141 | # Leave `context_window` unset if the provider limit is unknown; the percentage | COMMENT |
| LOW | config.example.yaml | 161 | # model: doubao-seed-1-8-251228 | COMMENT |
| LOW | config.example.yaml | 181 | # Doubao, GLM, DeepSeek, Kimi, and MiniMax with a single API key. | COMMENT |
| LOW | config.example.yaml | 201 | # thinking: | COMMENT |
| LOW | config.example.yaml | 221 | # thinking: | COMMENT |
| LOW | config.example.yaml | 241 | # # vllm_chat_template | ollama | none | COMMENT |
| LOW | config.example.yaml | 261 | # Profiles without `reasoning:` behave exactly as before. | COMMENT |
| LOW | config.example.yaml | 281 | # top_p: 0.95 | COMMENT |
| LOW | config.example.yaml | 301 | # display_name: GPT-4 | COMMENT |
| LOW | config.example.yaml | 321 | # output_version: responses/v1 | COMMENT |
| LOW | config.example.yaml | 341 | # - name: qwen3-local | COMMENT |
| LOW | config.example.yaml | 361 | # context_window: 32768 | COMMENT |
| LOW | config.example.yaml | 381 | # - name: qwen-llamacpp | COMMENT |
| LOW | config.example.yaml | 401 | # (no server default; min 1024; must be less than max_tokens). | COMMENT |
| LOW | config.example.yaml | 421 | # Example: Google Gemini model (native SDK, no thinking support) | COMMENT |
| LOW | config.example.yaml | 441 | # - name: gemini-3.1-pro-preview | COMMENT |
| LOW | config.example.yaml | 461 | # conversations. Use PatchedChatMiMo instead of plain ChatOpenAI. | COMMENT |
| LOW | config.example.yaml | 481 | # when_thinking_enabled: | COMMENT |
| LOW | config.example.yaml | 501 | # when_thinking_enabled: | COMMENT |
| LOW | config.example.yaml | 521 | # supports_vision: true # Check your specific model's capabilities | COMMENT |
| LOW | config.example.yaml | 541 | # max_retries: 2 | COMMENT |
| LOW | config.example.yaml | 561 | # Docs: https://platform.stepfun.com/docs/api-reference/chat-completions | COMMENT |
| LOW | config.example.yaml | 581 | # Example: MiniMax (OpenAI-compatible) - International Edition | COMMENT |
| LOW | config.example.yaml | 601 | # # names differ with "user name must be consistent (2013)". Declare the | COMMENT |
| LOW | config.example.yaml | 621 | # display_name: MiniMax M2.7 | COMMENT |
| LOW | config.example.yaml | 641 | # max_tokens: 4096 | COMMENT |
| LOW | config.example.yaml | 661 | # # PatchedChatMiniMax is the MiniMax adapter: it enables reasoning_split and | COMMENT |
| LOW | config.example.yaml | 681 | # follow-up-suggestions endpoint strips inline <think> defensively regardless. | COMMENT |
| LOW | config.example.yaml | 701 | # model: MiniMax-M2.7-highspeed | COMMENT |
| LOW | config.example.yaml | 721 | # max_tokens: 8192 | COMMENT |
| LOW | config.example.yaml | 741 | # For reasoning models on Atlas Cloud (e.g. a Qwen3 *-thinking id), use the | COMMENT |
| LOW | config.example.yaml | 761 | # thinking: | COMMENT |
| LOW | config.example.yaml | 781 | # DeerFlow's vLLM provider preserves vLLM reasoning across tool-call turns and | COMMENT |
| LOW | config.example.yaml | 801 | # chat_template_kwargs: | COMMENT |
| LOW | config.example.yaml | 821 | # connect_timeout: 30.0 | COMMENT |
| LOW | config.example.yaml | 861 | COMMENT | |
| LOW | config.example.yaml | 881 | # vector_similarity_weight: 0.3 | COMMENT |
| LOW | config.example.yaml | 901 | # use: deerflow.community.lightrag.tools:knowledge_search_tool | COMMENT |
| LOW | config.example.yaml | 921 | # SearXNG is a free internet metasearch engine which aggregates results from | COMMENT |
| LOW | config.example.yaml | 941 | # include_domains: [] # Optional domain-only lists, at most 10 entries each | COMMENT |
| LOW | config.example.yaml | 961 | # use: deerflow.community.webz.tools:web_search_tool | COMMENT |
| LOW | config.example.yaml | 981 | # # include_domains: | COMMENT |
| LOW | config.example.yaml | 1001 | # max_results: 5 # 1-50; values above 10 request Tencent's Cnt option | COMMENT |
| LOW | config.example.yaml | 1021 | # # base_url: http://<host>:3002 # optional: self-hosted Firecrawl; no cloud API key needed | COMMENT |
| LOW | config.example.yaml | 1041 | # # api_key: $CRW_API_KEY | COMMENT |
| LOW | config.example.yaml | 1061 | # NOTE: Only one web_fetch provider can be active at a time. | COMMENT |
| LOW | config.example.yaml | 1081 | # # # comma-separated string. Regexes containing | COMMENT |
| LOW | config.example.yaml | 1101 | # token: $CRAWL4AI_TOKEN # Bearer token; required by Crawl4AI >= 0.9 | COMMENT |
| LOW | config.example.yaml | 1121 | # timeout_s: 30 # Request timeout in seconds (`timeout` also accepted) | COMMENT |
| LOW | config.example.yaml | 1141 | # pages, fill forms, and follow multi-step flows. Elements are addressed by the | COMMENT |
| LOW | config.example.yaml | 1161 | # # allow_unguarded_cdp: false # REQUIRED true with cdp_url: attaching to an | COMMENT |
| LOW | config.example.yaml | 1181 | # group: browser | COMMENT |
| LOW | config.example.yaml | 1201 | # NOTE: Only one web_fetch provider can be active at a time. | COMMENT |
| LOW | config.example.yaml | 1221 | # Web fetch tool (uses InfoQuest) | COMMENT |
| 439 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | config.example.yaml | 339 | # Install: cd backend && uv pip install 'deerflow-harness[ollama]' | COMMENT |
| MEDIUM | config.example.yaml | 1908 | # cold start. Requires the optional SDK: pip install "deerflow-harness[tenki]". | COMMENT |
| MEDIUM | config.example.yaml | 1931 | # the optional SDK: pip install "deerflow-harness[opensandbox]". | COMMENT |
| MEDIUM | docker/dev-entrypoint.sh | 13 | # workspace member extras (deerflow-harness's | COMMENT |
| MEDIUM | docker/lark-cli-broker/entrypoint.sh | 11 | # no third-party dependencies, so no harness install is needed in this image. | COMMENT |
| MEDIUM | docker/lark-cli-init/build-runtime.sh | 69 | # backend/packages/harness/deerflow/integrations/lark_cli.py | COMMENT |
| LOW⚡ | …reads/4f3e55ee-f853-43db-bfb3-7d1a411f03cb/thread.json | 168 | "content": "---\nname: video-generation\ndescription: Use this skill when the user requests to generate, create, | CODE |
| LOW⚡ | …reads/4f3e55ee-f853-43db-bfb3-7d1a411f03cb/thread.json | 365 | "content": "---\nname: image-generation\ndescription: Use this skill when the user requests to generate, create, | CODE |
| MEDIUM | …reads/7cfa5f8f-a2f8-47ad-acbd-da7137baf990/thread.json | 307 | "content": "[\n {\n \"title\": \"Startup Industry Trends in 2026 - Qubit Capital\",\n \"url\": \"https:// | CODE |
| MEDIUM⚡ | …reads/7cfa5f8f-a2f8-47ad-acbd-da7137baf990/thread.json | 383 | "content": "# The AI advantage dilemma: Security risks and opportunities that lie ahead\n\nEscalating the AI arm | CODE |
| MEDIUM | …reads/7cfa5f8f-a2f8-47ad-acbd-da7137baf990/thread.json | 483 | "content": "Based on current research and expert predictions, 2026 appears to be a pivotal year shaped by accele | CODE |
| MEDIUM | …reads/7cfa5f8f-a2f8-47ad-acbd-da7137baf990/thread.json | 483 | "content": "Based on current research and expert predictions, 2026 appears to be a pivotal year shaped by accele | CODE |
| MEDIUM | …reads/7cfa5f8f-a2f8-47ad-acbd-da7137baf990/thread.json | 550 | "content": "---\nname: frontend-design\ndescription: Create distinctive, production-grade frontend interfaces wi | CODE |
| MEDIUM⚡ | …reads/7cfa5f8f-a2f8-47ad-acbd-da7137baf990/thread.json | 753 | "content": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <meta charset=\"UTF-8\">\n <meta name=\"vi | CODE |
| MEDIUM⚡ | …reads/7cfa5f8f-a2f8-47ad-acbd-da7137baf990/thread.json | 753 | "content": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <meta charset=\"UTF-8\">\n <meta name=\"vi | CODE |
| MEDIUM⚡ | …reads/7cfa5f8f-a2f8-47ad-acbd-da7137baf990/thread.json | 753 | "content": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <meta charset=\"UTF-8\">\n <meta name=\"vi | CODE |
| MEDIUM⚡ | …reads/7cfa5f8f-a2f8-47ad-acbd-da7137baf990/thread.json | 753 | "content": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <meta charset=\"UTF-8\">\n <meta name=\"vi | CODE |
| MEDIUM | …reads/7cfa5f8f-a2f8-47ad-acbd-da7137baf990/thread.json | 1376 | "content": "I've created a modern, minimalist website showcasing the 2026 trends and opportunities analysis. The | CODE |
| MEDIUM⚡ | …reads/3823e443-4e2b-4679-b496-a9506eae462b/thread.json | 563 | "content": "[\n {\n \"title\": \"Fei-Fei Li on spatial intelligence and human-centered AI - IMDb\",\n \"u | CODE |
| MEDIUM⚡ | …reads/3823e443-4e2b-4679-b496-a9506eae462b/thread.json | 563 | "content": "[\n {\n \"title\": \"Fei-Fei Li on spatial intelligence and human-centered AI - IMDb\",\n \"u | CODE |
| MEDIUM⚡ | …reads/d3e5adaf-084c-4dd5-9d29-94f1d6bccd98/thread.json | 53 | "content": "# Tips For Technical Startup Founders | Startup School\n\n# Tips For Technical Startup Founders | St | CODE |
| LOW⚡ | …reads/d3e5adaf-084c-4dd5-9d29-94f1d6bccd98/thread.json | 53 | "content": "# Tips For Technical Startup Founders | Startup School\n\n# Tips For Technical Startup Founders | St | CODE |
| MEDIUM⚡ | …reads/d3e5adaf-084c-4dd5-9d29-94f1d6bccd98/thread.json | 53 | "content": "# Tips For Technical Startup Founders | Startup School\n\n# Tips For Technical Startup Founders | St | CODE |
| MEDIUM | …reads/d3e5adaf-084c-4dd5-9d29-94f1d6bccd98/thread.json | 225 | "content": "[\n {\n \"title\": \"Diana Hu - Partner at Y Combinator | LinkedIn\",\n \"url\": \"https://ww | CODE |
| MEDIUM | …reads/d3e5adaf-084c-4dd5-9d29-94f1d6bccd98/thread.json | 1173 | "content": "I've thoroughly analyzed Diana Hu's Y Combinator talk and conducted deep research on her background | CODE |
| MEDIUM | …reads/b83fbb2a-4e36-4d82-9de0-7b2a02c2092a/thread.json | 53 | "content": "---\nname: frontend-design\ndescription: Create distinctive, production-grade frontend interfaces wi | CODE |
| LOW⚡ | …reads/b83fbb2a-4e36-4d82-9de0-7b2a02c2092a/thread.json | 64 | "content": "---\nname: image-generation\ndescription: Use this skill when the user requests to generate, create, | CODE |
| MEDIUM | …reads/f4125791-0128-402a-8ca9-50e0947557e4/thread.json | 52 | "content": "---\nname: frontend-design\ndescription: Create distinctive, production-grade frontend interfaces wi | CODE |
| MEDIUM⚡ | …reads/fe3f7974-1bcb-4a01-a950-79673baafefd/thread.json | 313 | "content": "# 🦌 DeerFlow\n\n[](https://www.py | CODE |
| MEDIUM⚡ | …reads/fe3f7974-1bcb-4a01-a950-79673baafefd/thread.json | 313 | "content": "# 🦌 DeerFlow\n\n[](https://www.py | CODE |
| MEDIUM⚡ | …reads/fe3f7974-1bcb-4a01-a950-79673baafefd/thread.json | 313 | "content": "# 🦌 DeerFlow\n\n[](https://www.py | CODE |
| MEDIUM⚡ | …reads/fe3f7974-1bcb-4a01-a950-79673baafefd/thread.json | 313 | "content": "# 🦌 DeerFlow\n\n[](https://www.py | CODE |
| MEDIUM⚡ | …reads/fe3f7974-1bcb-4a01-a950-79673baafefd/thread.json | 694 | "content": "[\n {\n \"title\": \"fanqingsong/deer-flow - GitHub\",\n \"url\": \"https://github.com/fanqin | CODE |
| MEDIUM⚡ | …reads/fe3f7974-1bcb-4a01-a950-79673baafefd/thread.json | 694 | "content": "[\n {\n \"title\": \"fanqingsong/deer-flow - GitHub\",\n \"url\": \"https://github.com/fanqin | CODE |
| MEDIUM⚡ | …reads/fe3f7974-1bcb-4a01-a950-79673baafefd/thread.json | 732 | "content": "# DeerFlow: A Game-Changer for Automated Research and Content Creation | by heavendai | Medium\n\n[S | CODE |
| MEDIUM⚡ | …reads/fe3f7974-1bcb-4a01-a950-79673baafefd/thread.json | 732 | "content": "# DeerFlow: A Game-Changer for Automated Research and Content Creation | by heavendai | Medium\n\n[S | CODE |
| MEDIUM⚡ | …reads/fe3f7974-1bcb-4a01-a950-79673baafefd/thread.json | 1406 | "content": "# DeerFlow Deep Research Report\n\n- **Research Date:** 2026-02-01\n- **Timestamp:** 2026-02-0 | CODE |
| MEDIUM⚡ | …reads/fe3f7974-1bcb-4a01-a950-79673baafefd/thread.json | 1406 | "content": "# DeerFlow Deep Research Report\n\n- **Research Date:** 2026-02-01\n- **Timestamp:** 2026-02-0 | CODE |
| MEDIUM⚡ | …reads/fe3f7974-1bcb-4a01-a950-79673baafefd/thread.json | 1406 | "content": "# DeerFlow Deep Research Report\n\n- **Research Date:** 2026-02-01\n- **Timestamp:** 2026-02-0 | CODE |
| MEDIUM⚡ | …reads/fe3f7974-1bcb-4a01-a950-79673baafefd/thread.json | 1406 | "content": "# DeerFlow Deep Research Report\n\n- **Research Date:** 2026-02-01\n- **Timestamp:** 2026-02-0 | CODE |
| MEDIUM⚡ | …reads/fe3f7974-1bcb-4a01-a950-79673baafefd/thread.json | 1406 | "content": "# DeerFlow Deep Research Report\n\n- **Research Date:** 2026-02-01\n- **Timestamp:** 2026-02-0 | CODE |
| MEDIUM⚡ | …reads/fe3f7974-1bcb-4a01-a950-79673baafefd/thread.json | 1667 | "content": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <meta charset=\"UTF-8\">\n <meta name=\"vi | CODE |
| MEDIUM⚡ | …reads/fe3f7974-1bcb-4a01-a950-79673baafefd/thread.json | 1667 | "content": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <meta charset=\"UTF-8\">\n <meta name=\"vi | CODE |
| MEDIUM⚡ | …reads/fe3f7974-1bcb-4a01-a950-79673baafefd/thread.json | 1667 | "content": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <meta charset=\"UTF-8\">\n <meta name=\"vi | CODE |
| MEDIUM⚡ | …reads/fe3f7974-1bcb-4a01-a950-79673baafefd/thread.json | 1667 | "content": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <meta charset=\"UTF-8\">\n <meta name=\"vi | CODE |
| MEDIUM | …reads/fe3f7974-1bcb-4a01-a950-79673baafefd/thread.json | 46 | "content": "---\nname: github-deep-research\ndescription: Conduct multi-round deep research on any GitHub Repo. | CODE |
| MEDIUM | …reads/fe3f7974-1bcb-4a01-a950-79673baafefd/thread.json | 883 | "content": "# 🦌 DeerFlow\n\n# Deep Researchat Your Fingertipsat Your Fingertips\n\nMeet DeerFlow, your personal | CODE |
| MEDIUM | …reads/fe3f7974-1bcb-4a01-a950-79673baafefd/thread.json | 1637 | "content": "---\nname: frontend-design\ndescription: Create distinctive, production-grade frontend interfaces wi | CODE |
| MEDIUM | …reads/5aa47db1-d0cb-4eb9-aea5-3dac1b371c5a/thread.json | 204 | "content": "---\nname: frontend-design\ndescription: Create distinctive, production-grade frontend interfaces wi | CODE |
| LOW⚡ | …reads/7f9dc56c-e49c-4671-a3d2-c492ff4dce0c/thread.json | 54 | "content": "---\nname: image-generation\ndescription: Use this skill when the user requests to generate, create, | CODE |
| LOW⚡ | …reads/90040b36-7eba-4b97-ba89-02c3ad47a8b9/thread.json | 54 | "content": "---\nname: image-generation\ndescription: Use this skill when the user requests to generate, create, | CODE |
| LOW⚡ | …reads/21cfea46-34bd-4aa6-9e1f-3009452fbeb9/thread.json | 186 | "content": "---\nname: image-generation\ndescription: Use this skill when the user requests to generate, create, | CODE |
| MEDIUM | …reads/c02bb4d5-4202-490e-ae8f-ff4864fc0d2e/thread.json | 52 | "content": "---\nname: frontend-design\ndescription: Create distinctive, production-grade frontend interfaces wi | CODE |
| MEDIUM | deploy/helm/deer-flow/values.yaml | 406 | # resolved by the harness before the config is instantiated. | COMMENT |
| MEDIUM | deploy/helm/deer-flow/templates/gateway-deployment.yaml | 168 | # harness refuses to start when a referenced variable is unset, so | COMMENT |
| MEDIUM | backend/pyproject.toml | 9 | # Direct dependency on purpose, even though deerflow-harness already pulls | COMMENT |
| MEDIUM | backend/pyproject.toml | 14 | # app declares them rather than relying on the harness to keep supplying it. | COMMENT |
| MEDIUM⚡ | backend/pyproject.toml | 71 | # Monocle tracer (also the deerflow-harness[monocle] extra); kept in the dev | COMMENT |
| MEDIUM⚡ | backend/pyproject.toml | 74 | # redis is an optional runtime extra (deerflow-harness[redis]); pin it in the | COMMENT |
| MEDIUM⚡ | backend/pyproject.toml | 78 | # TUI runtime dep (also declared as the deerflow-harness[tui] extra); kept in | COMMENT |
| 62 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | backend/CONTRIBUTING.md | 131 | Create a chat model instance from configuration. Args: name: The model name as defined in config.yaml | STRING |
| HIGH | backend/app/gateway/path_utils.py | 17 | Resolve a virtual path to the actual filesystem path under thread user-data. Args: thread_id: The thread ID | STRING |
| HIGH | backend/app/gateway/routers/models.py | 192 | Get a specific model by name. Args: model_name: The unique name of the model to retrieve. Returns: | STRING |
| HIGH | backend/app/gateway/routers/agents.py | 321 | Check whether an agent name is valid and not yet taken. Args: name: The agent name to check. Returns: | STRING |
| HIGH | backend/app/gateway/routers/agents.py | 437 | Get a specific custom agent by name. Args: name: The agent name. Returns: Agent details includ | STRING |
| HIGH | backend/app/gateway/routers/agents.py | 476 | Create a new custom agent. Args: body: The agent creation request. request: The FastAPI request (us | STRING |
| HIGH | backend/app/gateway/routers/agents.py | 511 | Update an existing custom agent. Args: name: The agent name. body: The update request (all fields o | STRING |
| HIGH | backend/app/gateway/routers/mcp_tasks.py | 141 | Return the full record for one MCP task owned by the thread. Args: thread_id: Thread that owns the task. | STRING |
| HIGH | backend/app/gateway/routers/mcp_tasks.py | 183 | Request cancellation of a running MCP task. Args: thread_id: Thread that owns the task. task_id: Id | STRING |
| HIGH | backend/app/gateway/routers/mcp.py | 1578 | Update the MCP configuration. This will: 1. Save the new configuration to the mcp_config.json file 2. Reloa | STRING |
| HIGH | backend/app/gateway/routers/artifacts.py | 401 | Get an artifact file by its path. The endpoint automatically detects file types and returns appropriate content typ | STRING |
| HIGH | backend/app/gateway/auth/repositories/base.py | 46 | Create a new user. Args: user: User object to create Returns: Created User wit | STRING |
| HIGH | backend/app/gateway/auth/repositories/base.py | 132 | Update an existing user. Args: user: User object with updated fields Returns: | STRING |
| HIGH | backend/packages/harness/deerflow/client.py | 1443 | Update MCP server configurations. Writes to extensions_config.json and reloads the cache. Args: | STRING |
| HIGH | backend/packages/harness/deerflow/client.py | 1503 | Update a skill's enabled status. Args: name: Skill name. enabled: New enabled status. | STRING |
| HIGH | backend/packages/harness/deerflow/client.py | 1589 | Install a skill from a .skill archive (ZIP). Args: skill_path: Path to the .skill file. Re | STRING |
| HIGH | backend/packages/harness/deerflow/client.py | 1707 | Upload local files into a thread's uploads directory. For PDF, PPT, Excel, and Word files, they are also conver | STRING |
| HIGH | backend/packages/harness/deerflow/client.py | 1869 | Delete a file from a thread's uploads directory. Args: thread_id: Thread ID. filename: | STRING |
| HIGH | backend/packages/harness/deerflow/client.py | 1893 | Read an artifact file produced by the agent. Args: thread_id: Thread ID. path: Virtual | STRING |
| HIGH | backend/packages/harness/deerflow/tools/sync.py | 39 | Build a synchronous wrapper for an asynchronous tool coroutine. Args: coro: Async callable backing a LangCh | STRING |
| HIGH | …kend/packages/harness/deerflow/config/agents_config.py | 324 | Load the custom or default agent's config. Dispatches to the configured agent store (``agent_storage.backend``): th | STRING |
| HIGH | backend/packages/harness/deerflow/config/paths.py | 498 | Resolve a sandbox virtual path to the actual host filesystem path. Args: thread_id: The thread ID. | STRING |
| HIGH | …/packages/harness/deerflow/config/extensions_config.py | 443 | Resolve the extensions config file path. Priority: 1. If provided `config_path` argument, use it. | STRING |
| HIGH | backend/packages/harness/deerflow/uploads/manager.py | 56 | Sanitize a filename by extracting its basename. Strips any directory components and rejects traversal patterns. | STRING |
| HIGH | backend/packages/harness/deerflow/uploads/manager.py | 525 | Delete a file inside *base_dir* after path-traversal validation. Only the requested file is removed. A converted do | STRING |
| HIGH | backend/packages/harness/deerflow/utils/network.py | 59 | Allocate an available port in a thread-safe manner. This method is thread-safe. It finds an available port, mar | STRING |
| HIGH | backend/packages/harness/deerflow/utils/network.py | 115 | Get a free port in a thread-safe manner. This function uses a global port allocator to ensure that concurrent calls | STRING |
| HIGH | backend/packages/harness/deerflow/sandbox/tools.py | 327 | Resolve a virtual skills path to a host filesystem path. WARNING: For per-user custom skills (``/mnt/skills/custom/ | STRING |
| HIGH | backend/packages/harness/deerflow/sandbox/tools.py | 504 | Resolve a virtual ACP workspace path to a host filesystem path. Args: path: Virtual path (e.g. /mnt/acp-wor | STRING |
| HIGH | backend/packages/harness/deerflow/sandbox/tools.py | 1665 | Ensure sandbox is initialized, acquiring lazily if needed. On first call, acquires a sandbox from the provider and | STRING |
| HIGH | backend/packages/harness/deerflow/sandbox/sandbox.py | 94 | Execute bash command in sandbox. Args: command: The command to execute. env: Optional p | STRING |
| HIGH | backend/packages/harness/deerflow/sandbox/sandbox.py | 166 | Download the binary content of a file. Args: path: The absolute path of the file to download. | STRING |
| HIGH | backend/packages/harness/deerflow/sandbox/sandbox.py | 185 | List the contents of a directory. Args: path: The absolute path of the directory to list. | STRING |
| HIGH | …nd/packages/harness/deerflow/sandbox/local/list_dir.py | 7 | List files and directories up to max_depth levels deep. Args: path: The root directory path to list. | STRING |
| HIGH | …arness/deerflow/community/aio_sandbox/local_backend.py | 951 | Start a new container and return its connection info. Args: thread_id: Thread ID for which the sand | STRING |
| HIGH | …arness/deerflow/community/aio_sandbox/local_backend.py | 1924 | Start a new container. Args: container_name: Name for the container. port: Host port to | STRING |
| HIGH | …deerflow/community/aio_sandbox/aio_sandbox_provider.py | 2548 | Create a new sandbox via the backend. Args: thread_id: Optional thread ID. sandbox_id: | STRING |
| HIGH | …rness/deerflow/community/aio_sandbox/ownership/base.py | 112 | Take ownership of *sandbox_id* only if it is unowned or already ours. Exclusive: succeeds only when the contain | STRING |
| HIGH | …kend/packages/harness/deerflow/reflection/resolvers.py | 29 | Resolve a variable from a path. Args: variable_path: The path to the variable (e.g. "parent_package_name.su | STRING |
| HIGH | …kend/packages/harness/deerflow/reflection/resolvers.py | 74 | Resolve a class from a module path and class name. Args: class_path: The path to the class (e.g. "langchain | STRING |
| HIGH | docs/SKILL_NAME_CONFLICT_FIX.md | 214 | Find a skill by name, optionally filtered by category. Args: skills: List of all skills skill_n | STRING |
| HIGH | skills/public/code-documentation/SKILL.md | 273 | Process data from the given file path. Reads the input file, applies transformations based on the provided opti | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | …reads/4f3e55ee-f853-43db-bfb3-7d1a411f03cb/thread.json | 168 | "content": "---\nname: video-generation\ndescription: Use this skill when the user requests to generate, create, | CODE |
| LOW⚡ | …reads/4f3e55ee-f853-43db-bfb3-7d1a411f03cb/thread.json | 365 | "content": "---\nname: image-generation\ndescription: Use this skill when the user requests to generate, create, | CODE |
| LOW⚡ | …reads/b83fbb2a-4e36-4d82-9de0-7b2a02c2092a/thread.json | 64 | "content": "---\nname: image-generation\ndescription: Use this skill when the user requests to generate, create, | CODE |
| LOW⚡ | …reads/7f9dc56c-e49c-4671-a3d2-c492ff4dce0c/thread.json | 54 | "content": "---\nname: image-generation\ndescription: Use this skill when the user requests to generate, create, | CODE |
| LOW⚡ | …reads/90040b36-7eba-4b97-ba89-02c3ad47a8b9/thread.json | 54 | "content": "---\nname: image-generation\ndescription: Use this skill when the user requests to generate, create, | CODE |
| LOW⚡ | …reads/21cfea46-34bd-4aa6-9e1f-3009452fbeb9/thread.json | 186 | "content": "---\nname: image-generation\ndescription: Use this skill when the user requests to generate, create, | CODE |
| LOW⚡ | backend/tests/test_multi_worker_run_ownership.py | 2568 | # Step 1: cancel(action=rollback) flips running → interrupted | COMMENT |
| LOW⚡ | backend/tests/test_multi_worker_run_ownership.py | 2574 | # Step 2: worker.py finalize path — task raises CancelledError, then | COMMENT |
| LOW | backend/tests/test_sandbox_orphan_reconciliation_e2e.py | 82 | # Step 1: Start a container (simulating previous process lifecycle) | COMMENT |
| LOW | backend/tests/test_sandbox_orphan_reconciliation_e2e.py | 94 | # Step 2: Create backend and list running containers | COMMENT |
| LOW⚡ | backend/tests/test_sandbox_orphan_reconciliation_e2e.py | 105 | # Step 3: list_running should find our container | COMMENT |
| LOW⚡ | backend/tests/test_sandbox_orphan_reconciliation_e2e.py | 110 | # Step 4: Simulate reconciliation — this container's created_at is recent, | COMMENT |
| LOW⚡ | backend/tests/test_client_e2e.py | 166 | # Step 2: Basic streaming (requires LLM) | COMMENT |
| LOW⚡ | backend/tests/test_client_e2e.py | 227 | # Step 3: Tool call flow (requires LLM) | COMMENT |
| LOW⚡ | backend/tests/test_client_e2e.py | 263 | # Step 4: File upload integration (no LLM needed for most) | COMMENT |
| LOW⚡ | backend/tests/test_client_e2e.py | 347 | # Step 5: Lifecycle and configuration (no LLM needed) | COMMENT |
| LOW⚡ | backend/tests/test_client_e2e.py | 404 | # Step 6: Middleware chain verification (requires LLM) | COMMENT |
| LOW⚡ | backend/tests/test_client_e2e.py | 442 | # Step 7: Error and boundary conditions | COMMENT |
| LOW⚡ | backend/tests/test_client_e2e.py | 487 | # Step 8: Artifact access (no LLM needed) | COMMENT |
| LOW⚡ | backend/tests/test_client_e2e.py | 542 | # Step 9: Skill installation (no LLM needed) | COMMENT |
| LOW⚡ | backend/tests/test_client_e2e.py | 639 | # Step 10: Configuration management (no LLM needed) | COMMENT |
| LOW⚡ | backend/tests/test_client_e2e.py | 776 | # Step 11: Memory access (no LLM needed) | COMMENT |
| LOW⚡ | backend/tests/test_client.py | 3501 | # Step 2: List | COMMENT |
| LOW⚡ | backend/tests/test_client.py | 3506 | # Step 3: Delete one | COMMENT |
| LOW⚡ | backend/tests/test_client.py | 3510 | # Step 4: Verify deletion | COMMENT |
| LOW | backend/tests/test_client.py | 3489 | # Step 1: Upload | COMMENT |
| LOW | backend/tests/test_client.py | 3914 | # Step 1: Install | COMMENT |
| LOW | backend/tests/test_client.py | 3926 | # Step 2: List and find it | COMMENT |
| LOW | backend/tests/test_client.py | 3938 | # Step 3: Disable it | COMMENT |
| LOW⚡ | backend/tests/test_mcp_config_secrets.py | 685 | # Step 1: Server returns masked config (simulates GET response) | COMMENT |
| LOW⚡ | backend/tests/test_mcp_config_secrets.py | 690 | # Step 2: Frontend toggles enabled and sends back (simulates PUT request) | COMMENT |
| LOW⚡ | backend/tests/test_mcp_config_secrets.py | 693 | # Step 3: Server merges with existing secrets (simulates PUT handler) | COMMENT |
| LOW | backend/docs/SSO.md | 56 | ### Step 1: Enable OIDC in `config.yaml` | COMMENT |
| LOW | backend/docs/SSO.md | 76 | ### Step 2: Set the client secret as an environment variable | COMMENT |
| LOW | backend/docs/SSO.md | 88 | ### Step 3: Restart the backend | COMMENT |
| LOW⚡ | backend/packages/harness/deerflow/subagents/registry.py | 122 | # Step 1: Look up built-in, then fall back to custom_agents | COMMENT |
| LOW⚡ | backend/packages/harness/deerflow/subagents/registry.py | 131 | # Step 2: Apply per-agent overrides from config.yaml agents section. | COMMENT |
| LOW | …arness/deerflow/community/aio_sandbox/local_backend.py | 1555 | # Step 1: enumerate container names via docker ps | COMMENT |
| LOW | …arness/deerflow/community/aio_sandbox/local_backend.py | 1592 | # Step 2: inspect candidate containers before deriving any paired | COMMENT |
| LOW | …owers/plans/2026-06-08-minimax-generation-providers.md | 1430 | ### Step 1: Understand Requirements | COMMENT |
| LOW | …owers/plans/2026-06-08-minimax-generation-providers.md | 1435 | ### Step 2: Create the Spec JSON | COMMENT |
| LOW | …owers/plans/2026-06-08-minimax-generation-providers.md | 1459 | ### Step 3: Execute Generation | COMMENT |
| LOW | skills/public/music-generation/SKILL.md | 16 | ### Step 1: Understand Requirements | COMMENT |
| LOW | skills/public/music-generation/SKILL.md | 21 | ### Step 2: Create the Spec JSON | COMMENT |
| LOW | skills/public/music-generation/SKILL.md | 45 | ### Step 3: Execute Generation | COMMENT |
| LOW⚡ | skills/public/image-generation/SKILL.md | 21 | ### Step 1: Understand Requirements | COMMENT |
| LOW⚡ | skills/public/image-generation/SKILL.md | 31 | ### Step 2: Create Structured Prompt | COMMENT |
| LOW⚡ | skills/public/image-generation/SKILL.md | 35 | ### Step 3: Execute Generation | COMMENT |
| LOW | skills/public/surprise-me/SKILL.md | 12 | ### Step 1: Discover Available Skills | COMMENT |
| LOW | skills/public/surprise-me/SKILL.md | 16 | ### Step 2: Plan the Surprise | COMMENT |
| LOW⚡ | skills/public/surprise-me/SKILL.md | 33 | ### Step 3: Fallback — No Other Skills Available | COMMENT |
| LOW⚡ | skills/public/surprise-me/SKILL.md | 41 | ### Step 4: Execute | COMMENT |
| LOW⚡ | skills/public/surprise-me/SKILL.md | 48 | ### Step 5: Reveal | COMMENT |
| LOW | skills/public/find-skills/SKILL.md | 35 | ### Step 1: Understand What They Need | COMMENT |
| LOW | skills/public/find-skills/SKILL.md | 43 | ### Step 2: Search for Skills | COMMENT |
| LOW | skills/public/find-skills/SKILL.md | 66 | ### Step 3: Present Options to the User | COMMENT |
| LOW | skills/public/find-skills/SKILL.md | 86 | ### Step 4: Install the Skill | COMMENT |
| LOW⚡ | skills/public/find-skills/scripts/install-skill.sh | 49 | # Step 1: Install the skill using npx | COMMENT |
| LOW⚡ | skills/public/find-skills/scripts/install-skill.sh | 52 | # Step 2: Verify installation | COMMENT |
| LOW⚡ | skills/public/find-skills/scripts/install-skill.sh | 58 | # Step 3: Create symlink | COMMENT |
| 60 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | CHANGELOG.md | 610 | #### Auth & guardrails | COMMENT |
| MEDIUM | CHANGELOG.md | 5297 | #### Auth & guardrails | COMMENT |
| MEDIUM | README.md | 93 | - [Agentic Browser Control](#agentic-browser-control) | CODE |
| MEDIUM | README.md | 1206 | DeerFlow also supports [Monocle](https://github.com/monocle2ai/monocle), an OpenTelemetry-based tracer for agentic appli | CODE |
| MEDIUM | README.md | 1216 | Each run writes one trace file to `.monocle/`; open it in the [Monocle VS Code extension](https://marketplace.visualstud | CODE |
| MEDIUM | README_zh.md | 75 | - [Agentic Browser Control](#agentic-browser-control) | CODE |
| MEDIUM⚡ | config.example.yaml | 1385 | # Prevents oversized tool results from blowing the model context window. | COMMENT |
| MEDIUM⚡ | config.example.yaml | 1632 | # guardrails / models / tools). The built-in set covers OpenAI-compatible | COMMENT |
| MEDIUM⚡ | config.example.yaml | 3187 | # guardrails: | COMMENT |
| MEDIUM⚡ | config.example.yaml | 3190 | # use: deerflow.guardrails.builtin:AllowlistProvider | COMMENT |
| MEDIUM⚡ | config.example.yaml | 3197 | # pip install aport-agent-guardrails && aport setup --framework deerflow | COMMENT |
| MEDIUM⚡ | config.example.yaml | 3198 | # guardrails: | COMMENT |
| MEDIUM⚡ | config.example.yaml | 3204 | # guardrails: | COMMENT |
| MEDIUM⚡ | config.example.yaml | 3220 | # risky work instead of narrowing the gate. Pointing `guardrails.provider` at | COMMENT |
| MEDIUM⚡ | config.example.yaml | 3224 | # guardrails: | COMMENT |
| MEDIUM⚡ | config.example.yaml | 3228 | # use: deerflow.guardrails.typesafe:TypeSafeGuardrailProvider | COMMENT |
| MEDIUM⚡ | config.example.yaml | 3247 | # (guardrails.provider.config) and, once enabled, memory pre-screening and | COMMENT |
| MEDIUM | config.example.yaml | 582 | # MiniMax provides high-performance models with 512K context window and 128K max output | COMMENT |
| MEDIUM | config.example.yaml | 647 | # MiniMax provides high-performance models with 512K context window and 128K max output | COMMENT |
| MEDIUM | config.example.yaml | 866 | # embedding model and retrieved with at most four groups in parallel. Group | COMMENT |
| MEDIUM | AGENTS.md | 49 | ├── Makefile # Root orchestration: drives the full stack (dev/start/stop, docker, setup) | CODE |
| MEDIUM | AGENTS.md | 65 | ├── scripts/ # Root orchestration scripts invoked by the Makefile (check, configure, doctor, supp | CODE |
| MEDIUM⚡ | …reads/7cfa5f8f-a2f8-47ad-acbd-da7137baf990/thread.json | 104 | "content": "[\n {\n \"title\": \"The Most Impactful Business Technology Trends To Watch In 2026\",\n \"ur | CODE |
| MEDIUM⚡ | …reads/7cfa5f8f-a2f8-47ad-acbd-da7137baf990/thread.json | 104 | "content": "[\n {\n \"title\": \"The Most Impactful Business Technology Trends To Watch In 2026\",\n \"ur | CODE |
| MEDIUM⚡ | …reads/7cfa5f8f-a2f8-47ad-acbd-da7137baf990/thread.json | 104 | "content": "[\n {\n \"title\": \"The Most Impactful Business Technology Trends To Watch In 2026\",\n \"ur | CODE |
| MEDIUM | …reads/7cfa5f8f-a2f8-47ad-acbd-da7137baf990/thread.json | 269 | "content": "[\n {\n \"title\": \"Top Technology Trends to Watch in 2026: AI, Quantum Computing ...\",\n \ | CODE |
| MEDIUM⚡ | …reads/7cfa5f8f-a2f8-47ad-acbd-da7137baf990/thread.json | 383 | "content": "# The AI advantage dilemma: Security risks and opportunities that lie ahead\n\nEscalating the AI arm | CODE |
| MEDIUM⚡ | …reads/7cfa5f8f-a2f8-47ad-acbd-da7137baf990/thread.json | 383 | "content": "# The AI advantage dilemma: Security risks and opportunities that lie ahead\n\nEscalating the AI arm | CODE |
| MEDIUM⚡ | …reads/7cfa5f8f-a2f8-47ad-acbd-da7137baf990/thread.json | 753 | "content": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <meta charset=\"UTF-8\">\n <meta name=\"vi | CODE |
| MEDIUM⚡ | …reads/7cfa5f8f-a2f8-47ad-acbd-da7137baf990/thread.json | 753 | "content": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <meta charset=\"UTF-8\">\n <meta name=\"vi | CODE |
| MEDIUM⚡ | …reads/3823e443-4e2b-4679-b496-a9506eae462b/thread.json | 563 | "content": "[\n {\n \"title\": \"Fei-Fei Li on spatial intelligence and human-centered AI - IMDb\",\n \"u | CODE |
| MEDIUM⚡ | …reads/3823e443-4e2b-4679-b496-a9506eae462b/thread.json | 563 | "content": "[\n {\n \"title\": \"Fei-Fei Li on spatial intelligence and human-centered AI - IMDb\",\n \"u | CODE |
| MEDIUM⚡ | …reads/fe3f7974-1bcb-4a01-a950-79673baafefd/thread.json | 313 | "content": "# 🦌 DeerFlow\n\n[](https://www.py | CODE |
| MEDIUM⚡ | …reads/fe3f7974-1bcb-4a01-a950-79673baafefd/thread.json | 313 | "content": "# 🦌 DeerFlow\n\n[](https://www.py | CODE |
| MEDIUM⚡ | …reads/fe3f7974-1bcb-4a01-a950-79673baafefd/thread.json | 313 | "content": "# 🦌 DeerFlow\n\n[](https://www.py | CODE |
| MEDIUM⚡ | …reads/fe3f7974-1bcb-4a01-a950-79673baafefd/thread.json | 694 | "content": "[\n {\n \"title\": \"fanqingsong/deer-flow - GitHub\",\n \"url\": \"https://github.com/fanqin | CODE |
| MEDIUM⚡ | …reads/fe3f7974-1bcb-4a01-a950-79673baafefd/thread.json | 732 | "content": "# DeerFlow: A Game-Changer for Automated Research and Content Creation | by heavendai | Medium\n\n[S | CODE |
| MEDIUM⚡ | …reads/fe3f7974-1bcb-4a01-a950-79673baafefd/thread.json | 1406 | "content": "# DeerFlow Deep Research Report\n\n- **Research Date:** 2026-02-01\n- **Timestamp:** 2026-02-0 | CODE |
| MEDIUM⚡ | …reads/fe3f7974-1bcb-4a01-a950-79673baafefd/thread.json | 1406 | "content": "# DeerFlow Deep Research Report\n\n- **Research Date:** 2026-02-01\n- **Timestamp:** 2026-02-0 | CODE |
| MEDIUM⚡ | …reads/fe3f7974-1bcb-4a01-a950-79673baafefd/thread.json | 1406 | "content": "# DeerFlow Deep Research Report\n\n- **Research Date:** 2026-02-01\n- **Timestamp:** 2026-02-0 | CODE |
| MEDIUM⚡ | …reads/fe3f7974-1bcb-4a01-a950-79673baafefd/thread.json | 1667 | "content": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <meta charset=\"UTF-8\">\n <meta name=\"vi | CODE |
| MEDIUM⚡ | …reads/fe3f7974-1bcb-4a01-a950-79673baafefd/thread.json | 1667 | "content": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <meta charset=\"UTF-8\">\n <meta name=\"vi | CODE |
| MEDIUM | …reads/fe3f7974-1bcb-4a01-a950-79673baafefd/thread.json | 199 | "content": "{\n \"name\": \"bytedance/deer-flow\",\n \"description\": \"DeerFlow is a community-driven Deep Re | CODE |
| MEDIUM | …reads/fe3f7974-1bcb-4a01-a950-79673baafefd/thread.json | 618 | "content": "[\n {\n \"title\": \"Create Your Own Deep Research Agent with DeerFlow\",\n \"url\": \"https: | CODE |
| MEDIUM | …reads/fe3f7974-1bcb-4a01-a950-79673baafefd/thread.json | 656 | "content": "# The Sequence Engineering #661: Create Your Own Deep Research Agent with DeerFlow\n\n[![TheSequence | CODE |
| MEDIUM | …reads/fe3f7974-1bcb-4a01-a950-79673baafefd/thread.json | 656 | "content": "# The Sequence Engineering #661: Create Your Own Deep Research Agent with DeerFlow\n\n[![TheSequence | CODE |
| MEDIUM | …reads/fe3f7974-1bcb-4a01-a950-79673baafefd/thread.json | 1149 | "content": "[\n {\n \"title\": \"[Up-to-date] Awesome Agentic Deep Research Resources - GitHub\",\n \"url | CODE |
| MEDIUM | …reads/fe3f7974-1bcb-4a01-a950-79673baafefd/thread.json | 1226 | "content": "[\n {\n \"title\": \"DeerFlow\",\n \"url\": \"https://deerflow.tech/\",\n \"snippet\": \"M | CODE |
| MEDIUM | …reads/fe3f7974-1bcb-4a01-a950-79673baafefd/thread.json | 1765 | "content": "I've created a **stylish, production-grade webpage** based on the DeerFlow research report. Here's w | CODE |
| MEDIUM | deploy/helm/deer-flow/values.yaml | 484 | # datasets are grouped by embedding model with up to four parallel retrieval | COMMENT |
| MEDIUM | backend/app/channels/AGENTS.md | 31 | - WeChat iLink inbound image/file downloads stream with an in-flight cap derived from `channels.wechat.max_inbound_im | CODE |
| MEDIUM | backend/tests/test_aio_sandbox_local_backend.py | 1878 | # Docker 29 lowercases the client-side scaffolding; the near-miss and | COMMENT |
| MEDIUM | backend/tests/test_aio_sandbox_local_backend.py | 1911 | # Docker CLI v29 lowercases the client-side error scaffolding | COMMENT |
| MEDIUM | backend/tests/test_aio_sandbox_local_backend.py | 2266 | # Docker CLI v29 lowercases client-side error scaffolding; the daemon-side | COMMENT |
| MEDIUM | backend/tests/test_aio_sandbox_local_backend.py | 2318 | # Docker 29 lowercases the client-side scaffolding. | COMMENT |
| MEDIUM | backend/tests/test_lark_cli_integration.py | 2452 | # Record-only: this is an orchestration contract (the CLI writes files then | COMMENT |
| MEDIUM⚡ | backend/tests/test_suggestions_router.py | 69 | # MiniMax-M3 inlines its chain-of-thought as <think>...</think> in content | COMMENT |
| MEDIUM⚡ | …kend/tests/monocle/traces/web_research_ev_battery.json | 74 | "{\"system\": \"\\n<role>\\nYou are DeerFlow 2.0, an open-source super agent.\\n</role>\\n\\nUser in | CODE |
| MEDIUM⚡ | …kend/tests/monocle/traces/web_research_ev_battery.json | 236 | "{\"system\": \"\\n<role>\\nYou are DeerFlow 2.0, an open-source super agent.\\n</role>\\n\\nUser in | CODE |
| MEDIUM⚡ | …kend/tests/monocle/traces/web_research_ev_battery.json | 510 | "{\"system\": \"\\n<role>\\nYou are DeerFlow 2.0, an open-source super agent.\\n</role>\\n\\nUser in | CODE |
| 19 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | config.example.yaml | 995 | # Create a service API key in the Tencent Cloud WSA console, then set | COMMENT |
| MEDIUM | …reads/ad76c455-5bf9-4335-8517-fc03834ab828/thread.json | 202 | "content": "import pandas as pd\nimport numpy as np\nimport matplotlib.pyplot as plt\nimport seaborn as sn | CODE |
| MEDIUM | backend/app/gateway/auth/credential_file.py | 38 | f"# DeerFlow admin {label} credentials\n# This file is generated on first boot or password reset.\n# Change the | CODE |
| MEDIUM | backend/app/channels/manager.py | 3224 | # Create a new thread through Gateway | COMMENT |
| MEDIUM | backend/tests/test_multi_worker_run_ownership.py | 605 | # Create a live local run | COMMENT |
| MEDIUM | backend/tests/test_multi_worker_run_ownership.py | 1103 | # Create a run owned by a different worker | COMMENT |
| MEDIUM | backend/tests/test_multi_worker_run_ownership.py | 1405 | # Create an active run with an expired lease (simulating a crashed worker) | COMMENT |
| MEDIUM | backend/tests/test_multi_worker_run_ownership.py | 2492 | # Create a run that this worker owns | COMMENT |
| MEDIUM | backend/tests/test_sandbox_search_tools.py | 728 | # Create a sandbox with PathMappings that use user-abc's directory | COMMENT |
| MEDIUM⚡ | backend/tests/test_client_e2e.py | 502 | # Create an output file in the thread's outputs directory | COMMENT |
| MEDIUM | backend/tests/test_task_continuity.py | 572 | # Create the schema before exercising competing transactions. | COMMENT |
| MEDIUM⚡ | backend/tests/test_channel_file_attachments.py | 112 | # Create the directory structure: threads/{thread_id}/user-data/outputs/ | COMMENT |
| MEDIUM | backend/tests/test_run_manager.py | 1452 | # Create a run and let it complete (will be in both memory and store) | COMMENT |
| MEDIUM | backend/tests/test_custom_agent.py | 464 | # Create the agents dir with a file (not a dir) | COMMENT |
| MEDIUM | backend/tests/test_custom_agent.py | 902 | # Create an agent through the API, then hand-author a github: block | COMMENT |
| MEDIUM⚡ | backend/tests/test_client.py | 2922 | # Create a source file | COMMENT |
| MEDIUM⚡ | backend/tests/test_client.py | 4311 | # Create a small archive that claims huge uncompressed size. | COMMENT |
| MEDIUM⚡ | backend/tests/test_client.py | 4854 | # Create a target file outside uploads dir. | COMMENT |
| MEDIUM⚡ | backend/tests/test_client.py | 4858 | # Create a symlink inside uploads dir pointing to outside file. | COMMENT |
| MEDIUM | backend/tests/test_client.py | 2725 | # Create a valid .skill archive | COMMENT |
| MEDIUM⚡ | backend/tests/test_skills_custom_router.py | 1316 | # Create a public skill | COMMENT |
| MEDIUM⚡ | backend/tests/test_skills_custom_router.py | 1321 | # Create a global custom skill (LEGACY fallback for users without per-user dir) | COMMENT |
| MEDIUM⚡ | backend/tests/test_skills_custom_router.py | 1326 | # Create a per-user custom skill | COMMENT |
| MEDIUM | backend/tests/test_skills_custom_router.py | 467 | # Create a skill in user-level custom dir | COMMENT |
| MEDIUM | backend/packages/harness/deerflow/subagents/executor.py | 1619 | # Create a new result for synchronous execution | COMMENT |
| MEDIUM | backend/packages/harness/deerflow/subagents/executor.py | 2117 | # Create a result with error if we don't have one | COMMENT |
| MEDIUM | …eerflow/agents/middlewares/clarification_middleware.py | 503 | # Create a ToolMessage with the formatted question | COMMENT |
| MEDIUM | backend/packages/harness/deerflow/mcp/tools.py | 1007 | # Create the multi-server MCP client | COMMENT |
| MEDIUM | backend/packages/harness/deerflow/sandbox/tools.py | 1014 | # Creating a non-portable name is rejected. Reading, and editing a file | COMMENT |
| MEDIUM | backend/packages/harness/deerflow/sandbox/tools.py | 1940 | # Create the three directories | COMMENT |
| MEDIUM | scripts/deploy.sh | 180 | # Create a minimal empty config so the gateway doesn't fail on startup | COMMENT |
| MEDIUM | .github/labels.yml | 3 | # This file is the single source of truth for repository labels used by the | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | frontend/tests/unit/core/auth/remember-login.test.ts | 42 | email: "admin@example.com", | CODE |
| LOW⚡ | frontend/tests/unit/core/auth/remember-login.test.ts | 48 | "admin@example.com", | CODE |
| LOW⚡ | frontend/tests/unit/core/auth/remember-login.test.ts | 56 | "deerflow.auth.remembered_email": "admin@example.com", | CODE |
| LOW⚡ | frontend/tests/unit/core/auth/remember-login.test.ts | 61 | email: "admin@example.com", | CODE |
| LOW | frontend/tests/unit/core/auth/remember-login.test.ts | 88 | email: "admin@example.com", | CODE |
| LOW | frontend/tests/unit/core/threads/export.test.ts | 209 | const message = ai("placeholder", { | CODE |
| LOW | frontend/tests/unit/core/threads/export.test.ts | 315 | const message = ai("placeholder", { | CODE |
| LOW | …nents/workspace/gateway-offline-banner-helpers.test.ts | 14 | email: "user@example.com", | CODE |
| LOW | frontend/tests/e2e/sidecar-chat.spec.ts | 138 | (element) => pattern.test(element.getAttribute("placeholder") ?? ""), | CODE |
| LOW | frontend/tests/e2e/sidecar-chat.spec.ts | 168 | placeholderPattern.test(element.getAttribute("placeholder") ?? ""), | CODE |
| LOW | frontend/tests/e2e/sidecar-chat.spec.ts | 243 | /deeper follow-up/i.test(element.getAttribute("placeholder") ?? ""), | CODE |
| LOW | backend/tests/test_subagent_executor.py | 1678 | fallback_message = AIMessage(content="placeholder").model_copy( | CODE |
| LOW | backend/tests/test_auth_me_permissions.py | 116 | json={"email": "admin@example.com", "password": "Str0ng!Pass99"}, | CODE |
| LOW⚡ | backend/tests/test_clarification_middleware.py | 588 | "fields": [{"name": "note", "placeholder": "Optional remarks"}], | CODE |
| LOW⚡ | backend/tests/test_clarification_middleware.py | 594 | assert payload["fields"][0]["placeholder"] == "Optional remarks" | CODE |
| LOW | backend/tests/test_clarification_middleware.py | 636 | assert sorted(items["properties"].keys()) == ["label", "name", "options", "placeholder", "required", "type"] | CODE |
| LOW⚡ | backend/tests/test_oidc_auth.py | 28 | "email": "user@example.com", | CODE |
| LOW⚡ | backend/tests/test_oidc_auth.py | 39 | local_user = User(email="user@example.com", password_hash="hash") | CODE |
| LOW⚡ | backend/tests/test_oidc_auth.py | 96 | identity=_identity(subject="admin-subject", email="admin@example.com"), | CODE |
| LOW⚡ | backend/tests/test_oidc_auth.py | 102 | email="admin@example.com", | CODE |
| LOW⚡ | backend/tests/test_oidc_auth.py | 192 | local_provider.get_user_by_email.assert_awaited_once_with("user@example.com") | CODE |
| LOW⚡ | backend/tests/test_oidc_auth.py | 200 | created_user = User(email="user@example.com", password_hash=None, oauth_provider="keycloak", oauth_id="subject") | CODE |
| LOW | backend/tests/test_oidc_auth.py | 61 | local_user = User(email="user@example.com", password_hash="hash") | CODE |
| LOW | backend/tests/test_oidc_auth.py | 85 | email="admin@example.com", | CODE |
| LOW | backend/tests/test_oidc_auth.py | 178 | local_user = User(email="user@example.com", password_hash="hash") | CODE |
| LOW | backend/tests/test_oidc_auth.py | 211 | email="user@example.com", | CODE |
| LOW | backend/tests/test_oidc_auth.py | 252 | return {"sub": "subject", "email": "user@example.com", "email_verified": "false"} | CODE |
| LOW | backend/tests/test_oidc_auth.py | 273 | created_user = User(email="user@example.com", password_hash=None, oauth_provider="keycloak", oauth_id="subject") | CODE |
| LOW⚡ | backend/tests/test_paths_user_isolation.py | 47 | result = make_safe_user_id("user@example.com") | CODE |
| LOW⚡ | backend/tests/test_paths_user_isolation.py | 52 | assert make_safe_user_id("user@example.com") == result | CODE |
| LOW⚡ | backend/tests/test_paths_user_isolation.py | 117 | raw = "user@example.com" | CODE |
| LOW | backend/tests/test_codex_tool_strict.py | 63 | monkeypatch.setattr(provider, "load_codex_cli_credential", lambda: CodexCliCredential("fake-token", "fake-account")) | CODE |
| LOW | backend/tests/test_personal_mcp_access.py | 34 | user = await repository.create_user(User(email="admin@example.com", system_role="admin")) | CODE |
| LOW⚡ | backend/tests/test_pii_redaction_middleware.py | 109 | [HumanMessage("from alice@example.com to bob@example.org")], | CODE |
| LOW⚡ | backend/tests/test_pii_redaction_middleware.py | 318 | HumanMessage("then bob@example.org"), | CODE |
| LOW⚡ | backend/tests/test_pii_redaction_middleware.py | 343 | "or bob@example.org", | CODE |
| LOW | backend/tests/test_pii_redaction_middleware.py | 37 | EMAIL_BOB_ORG = redact_text("bob@example.org", _PII_CFG) | CODE |
| LOW⚡ | backend/tests/test_channels_router.py | 19 | email="admin@example.com", | CODE |
| LOW⚡ | backend/tests/test_channels_router.py | 28 | email="user@example.com", | CODE |
| LOW⚡ | backend/tests/test_auth.py | 372 | user = User(email="admin@example.com", password_hash="hash", needs_setup=True) | CODE |
| LOW⚡ | backend/tests/test_auth.py | 1730 | first = client.post("/api/v1/auth/login/local", data={"username": "user@example.com", "password": "wrong"}) | CODE |
| LOW⚡ | backend/tests/test_auth.py | 1735 | second = client.post("/api/v1/auth/login/local", data={"username": "user@example.com", "password": "wrong-again" | CODE |
| LOW⚡ | backend/tests/test_auth.py | 1783 | assert client.post("/api/v1/auth/login/local", data={"username": "user@example.com", "password": "wrong" | CODE |
| LOW⚡ | backend/tests/test_auth.py | 1786 | blocked = client.post("/api/v1/auth/login/local", data={"username": "user@example.com", "password": "wrong"} | CODE |
| LOW⚡ | backend/tests/test_auth.py | 2105 | response = await client.post("/api/v1/auth/login/local", data={"username": "user@example.com", "password": "wron | CODE |
| LOW | backend/tests/test_auth.py | 2069 | response = await client.post("/api/v1/auth/login/local", data={"username": "user@example.com", "password": " | CODE |
| LOW | backend/tests/test_codex_stream_terminal_events.py | 36 | monkeypatch.setattr(provider, "load_codex_cli_credential", lambda: CodexCliCredential("fake-token", "fake-account")) | CODE |
| LOW | backend/tests/test_serper_retries.py | 44 | extra = {"api_key": "dummy-key", **(options or {})} | CODE |
| LOW | backend/tests/test_serper_retries.py | 45 | monkeypatch.setenv("SERPER_API_KEY", "dummy-key") | CODE |
| LOW | backend/tests/test_serper_retries.py | 71 | data, error = tools._serper_post("https://google.serper.dev/search", "dummy-key", "news", 5, **(options or { | CODE |
| LOW⚡ | backend/tests/test_serper_retries.py | 194 | assert "dummy-key" not in diagnostics[0].getMessage() | CODE |
| LOW⚡ | backend/tests/test_serper_retries.py | 205 | assert first.headers["X-API-KEY"] == "dummy-key" | CODE |
| LOW⚡ | backend/tests/test_serper_retries.py | 241 | assert {request.headers["X-API-KEY"] for request in search.requests} == {"dummy-key"} | CODE |
| LOW⚡ | backend/tests/test_channels.py | 5417 | raw = "user@example.com" | CODE |
| LOW | backend/tests/test_channels.py | 5437 | raw = "user@example.com" | CODE |
| LOW | backend/tests/test_durable_context_middleware.py | 1468 | received = self._invoke({"messages": [HumanMessage(content="Go ahead.")], "goal": {**build_goal_state("placehold | CODE |
| LOW | backend/tests/test_claude_provider_oauth_billing.py | 17 | m = ClaudeChatModel(model="claude-sonnet-4-6", anthropic_api_key="sk-ant-oat-fake-token") # type: ignore[call-a | CODE |
| LOW | backend/tests/test_claude_provider_oauth_billing.py | 19 | m._oauth_access_token = "sk-ant-oat-fake-token" | CODE |
| LOW | backend/tests/test_runtime_lifecycle_e2e.py | 195 | monkeypatch.setenv("OPENAI_API_KEY", "sk-fake-key-not-used") | CODE |
| LOW | backend/tests/test_admin_users_router.py | 264 | admin = User(email="admin@example.com", system_role="admin") | CODE |
| 17 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | backend/app/channels/feishu.py | 448 | return self._api_client.im.v1.image.create(request) | CODE |
| CRITICAL | backend/app/channels/feishu.py | 460 | return self._api_client.im.v1.file.create(request) | CODE |
| CRITICAL | backend/app/channels/feishu.py | 526 | return self._api_client.im.v1.message_resource.get(request) | CODE |
| CRITICAL | backend/tests/test_tui_transparent.py | 48 | assert app.screen.styles.background.hex.lower() == THEME.bg | CODE |
| CRITICAL | backend/tests/test_browser_readonly_security.py | 164 | websocket.app.state.thread_store.get.assert_not_awaited() | CODE |
| CRITICAL | backend/tests/test_browser_readonly_security.py | 200 | websocket.app.state.thread_store.get.assert_not_called() | CODE |
| CRITICAL | backend/tests/test_firecrawl_tools.py | 191 | mock_firecrawl_cls.return_value._v2_client.async_http_client.close.assert_awaited_once() | CODE |
| CRITICAL | backend/tests/test_firecrawl_tools.py | 212 | mock_firecrawl_cls.return_value._v2_client.async_http_client.close.assert_awaited_once() | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | …reads/4f3e55ee-f853-43db-bfb3-7d1a411f03cb/thread.json | 168 | "content": "---\nname: video-generation\ndescription: Use this skill when the user requests to generate, create, | CODE |
| LOW⚡ | …reads/4f3e55ee-f853-43db-bfb3-7d1a411f03cb/thread.json | 365 | "content": "---\nname: image-generation\ndescription: Use this skill when the user requests to generate, create, | CODE |
| LOW⚡ | …reads/b83fbb2a-4e36-4d82-9de0-7b2a02c2092a/thread.json | 64 | "content": "---\nname: image-generation\ndescription: Use this skill when the user requests to generate, create, | CODE |
| LOW⚡ | …reads/7f9dc56c-e49c-4671-a3d2-c492ff4dce0c/thread.json | 54 | "content": "---\nname: image-generation\ndescription: Use this skill when the user requests to generate, create, | CODE |
| LOW⚡ | …reads/90040b36-7eba-4b97-ba89-02c3ad47a8b9/thread.json | 54 | "content": "---\nname: image-generation\ndescription: Use this skill when the user requests to generate, create, | CODE |
| LOW⚡ | …reads/21cfea46-34bd-4aa6-9e1f-3009452fbeb9/thread.json | 186 | "content": "---\nname: image-generation\ndescription: Use this skill when the user requests to generate, create, | CODE |
| LOW⚡ | backend/tests/test_multi_worker_run_ownership.py | 2568 | # Step 1: cancel(action=rollback) flips running → interrupted | COMMENT |
| LOW⚡ | backend/tests/test_multi_worker_run_ownership.py | 2574 | # Step 2: worker.py finalize path — task raises CancelledError, then | COMMENT |
| LOW | backend/tests/test_sandbox_orphan_reconciliation_e2e.py | 82 | # Step 1: Start a container (simulating previous process lifecycle) | COMMENT |
| LOW | backend/tests/test_sandbox_orphan_reconciliation_e2e.py | 94 | # Step 2: Create backend and list running containers | COMMENT |
| LOW⚡ | backend/tests/test_sandbox_orphan_reconciliation_e2e.py | 105 | # Step 3: list_running should find our container | COMMENT |
| LOW⚡ | backend/tests/test_sandbox_orphan_reconciliation_e2e.py | 110 | # Step 4: Simulate reconciliation — this container's created_at is recent, | COMMENT |
| LOW⚡ | backend/tests/test_client_e2e.py | 166 | # Step 2: Basic streaming (requires LLM) | COMMENT |
| LOW⚡ | backend/tests/test_client_e2e.py | 227 | # Step 3: Tool call flow (requires LLM) | COMMENT |
| LOW⚡ | backend/tests/test_client_e2e.py | 263 | # Step 4: File upload integration (no LLM needed for most) | COMMENT |
| LOW⚡ | backend/tests/test_client_e2e.py | 347 | # Step 5: Lifecycle and configuration (no LLM needed) | COMMENT |
| LOW⚡ | backend/tests/test_client_e2e.py | 404 | # Step 6: Middleware chain verification (requires LLM) | COMMENT |
| LOW⚡ | backend/tests/test_client_e2e.py | 442 | # Step 7: Error and boundary conditions | COMMENT |
| LOW⚡ | backend/tests/test_client_e2e.py | 487 | # Step 8: Artifact access (no LLM needed) | COMMENT |
| LOW⚡ | backend/tests/test_client_e2e.py | 542 | # Step 9: Skill installation (no LLM needed) | COMMENT |
| LOW⚡ | backend/tests/test_client_e2e.py | 639 | # Step 10: Configuration management (no LLM needed) | COMMENT |
| LOW⚡ | backend/tests/test_client_e2e.py | 776 | # Step 11: Memory access (no LLM needed) | COMMENT |
| LOW⚡ | backend/tests/test_client.py | 3501 | # Step 2: List | COMMENT |
| LOW⚡ | backend/tests/test_client.py | 3506 | # Step 3: Delete one | COMMENT |
| LOW⚡ | backend/tests/test_client.py | 3510 | # Step 4: Verify deletion | COMMENT |
| LOW | backend/tests/test_client.py | 3489 | # Step 1: Upload | COMMENT |
| LOW | backend/tests/test_client.py | 3914 | # Step 1: Install | COMMENT |
| LOW | backend/tests/test_client.py | 3926 | # Step 2: List and find it | COMMENT |
| LOW | backend/tests/test_client.py | 3938 | # Step 3: Disable it | COMMENT |
| LOW⚡ | backend/tests/test_mcp_config_secrets.py | 685 | # Step 1: Server returns masked config (simulates GET response) | COMMENT |
| LOW⚡ | backend/tests/test_mcp_config_secrets.py | 690 | # Step 2: Frontend toggles enabled and sends back (simulates PUT request) | COMMENT |
| LOW⚡ | backend/tests/test_mcp_config_secrets.py | 693 | # Step 3: Server merges with existing secrets (simulates PUT handler) | COMMENT |
| LOW⚡ | backend/packages/harness/deerflow/subagents/registry.py | 122 | # Step 1: Look up built-in, then fall back to custom_agents | COMMENT |
| LOW⚡ | backend/packages/harness/deerflow/subagents/registry.py | 131 | # Step 2: Apply per-agent overrides from config.yaml agents section. | COMMENT |
| LOW | …arness/deerflow/community/aio_sandbox/local_backend.py | 1555 | # Step 1: enumerate container names via docker ps | COMMENT |
| LOW | …arness/deerflow/community/aio_sandbox/local_backend.py | 1592 | # Step 2: inspect candidate containers before deriving any paired | COMMENT |
| LOW⚡ | skills/public/find-skills/scripts/install-skill.sh | 49 | # Step 1: Install the skill using npx | COMMENT |
| LOW⚡ | skills/public/find-skills/scripts/install-skill.sh | 52 | # Step 2: Verify installation | COMMENT |
| LOW⚡ | skills/public/find-skills/scripts/install-skill.sh | 58 | # Step 3: Create symlink | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | backend/app/channels/manager.py | 1340 | CODE | |
| LOW | backend/tests/test_subagent_executor.py | 5233 | CODE | |
| LOW | backend/tests/test_summarize_checkpoint_production.py | 25 | CODE | |
| LOW | backend/tests/test_dingtalk_channel.py | 50 | CODE | |
| LOW | backend/tests/test_authorization_provider.py | 206 | CODE | |
| LOW | backend/tests/test_goal_delivery_consistency.py | 30 | CODE | |
| LOW | backend/tests/test_run_repository.py | 83 | CODE | |
| LOW | backend/tests/test_multi_worker_postgres_gate.py | 38 | CODE | |
| LOW | backend/tests/test_thread_run_idempotency.py | 1114 | CODE | |
| LOW | backend/tests/test_tenki_provider.py | 241 | CODE | |
| LOW | backend/tests/test_ragflow_tools.py | 38 | CODE | |
| LOW | backend/tests/test_model_factory.py | 31 | CODE | |
| LOW | backend/tests/test_memory_tools.py | 30 | CODE | |
| LOW | backend/tests/test_features_router.py | 25 | CODE | |
| LOW | backend/tests/_scheduled_rows.py | 29 | CODE | |
| LOW | backend/packages/harness/deerflow/client.py | 209 | CODE | |
| LOW | …end/packages/harness/deerflow/tools/scheduled_tasks.py | 35 | CODE | |
| LOW | backend/packages/harness/deerflow/tools/tools.py | 102 | CODE | |
| LOW | …/packages/harness/deerflow/tools/builtins/task_tool.py | 625 | CODE | |
| LOW | …packages/harness/deerflow/subagents/status_contract.py | 154 | CODE | |
| LOW | backend/packages/harness/deerflow/subagents/executor.py | 227 | CODE | |
| LOW | backend/packages/harness/deerflow/subagents/executor.py | 846 | CODE | |
| LOW | …ckend/packages/harness/deerflow/guardrails/typesafe.py | 133 | CODE | |
| LOW | backend/packages/harness/deerflow/runtime/goal.py | 433 | CODE | |
| LOW | …ckend/packages/harness/deerflow/runtime/runs/worker.py | 2315 | CODE | |
| LOW | …kend/packages/harness/deerflow/runtime/runs/manager.py | 1547 | CODE | |
| LOW | …kend/packages/harness/deerflow/runtime/runs/manager.py | 1621 | CODE | |
| LOW | …packages/harness/deerflow/runtime/runs/store/memory.py | 52 | CODE | |
| LOW | …packages/harness/deerflow/runtime/runs/store/memory.py | 491 | CODE | |
| LOW | …d/packages/harness/deerflow/runtime/runs/store/base.py | 133 | CODE | |
| LOW | …d/packages/harness/deerflow/runtime/runs/store/base.py | 266 | CODE | |
| LOW | …d/packages/harness/deerflow/runtime/runs/store/base.py | 293 | CODE | |
| LOW | …d/packages/harness/deerflow/runtime/runs/store/base.py | 429 | CODE | |
| LOW | …d/packages/harness/deerflow/runtime/runs/store/base.py | 480 | CODE | |
| LOW | backend/packages/harness/deerflow/agents/factory.py | 67 | CODE | |
| LOW | …s/harness/deerflow/agents/memory/prescreen/typesafe.py | 63 | CODE | |
| LOW | …gents/memory/backends/deermem/deermem/core/eviction.py | 157 | CODE | |
| LOW | …/agents/memory/backends/deermem/deermem/core/prompt.py | 469 | CODE | |
| LOW | …ges/harness/deerflow/agents/memory/signals/typesafe.py | 59 | CODE | |
| LOW | …w/agents/middlewares/tool_error_handling_middleware.py | 346 | CODE | |
| LOW | …w/agents/middlewares/tool_error_handling_middleware.py | 566 | CODE | |
| LOW | …eerflow/agents/middlewares/summarization_middleware.py | 123 | CODE | |
| LOW | …d/packages/harness/deerflow/agents/lead_agent/agent.py | 485 | CODE | |
| LOW | …/packages/harness/deerflow/agents/lead_agent/prompt.py | 1135 | CODE | |
| LOW | backend/packages/harness/deerflow/sandbox/exceptions.py | 83 | CODE | |
| LOW | …arness/deerflow/persistence/channel_connections/sql.py | 118 | CODE | |
| LOW | …ckend/packages/harness/deerflow/persistence/run/sql.py | 120 | CODE | |
| LOW | …ckend/packages/harness/deerflow/persistence/run/sql.py | 471 | CODE | |
| LOW | …ckend/packages/harness/deerflow/persistence/run/sql.py | 534 | CODE | |
| LOW | …ckend/packages/harness/deerflow/persistence/run/sql.py | 840 | CODE | |
| LOW | …s/deerflow/community/browserless/browserless_client.py | 184 | CODE | |
| LOW | …kages/harness/deerflow/community/image_search/tools.py | 17 | CODE | |
| LOW | …rness/deerflow/community/browser_automation/session.py | 967 | CODE | |
| LOW | …kend/packages/harness/deerflow/community/webz/tools.py | 64 | CODE | |
| LOW | scripts/wizard/writer.py | 176 | CODE | |
| LOW | scripts/wizard/writer.py | 258 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …reads/7cfa5f8f-a2f8-47ad-acbd-da7137baf990/thread.json | 550 | "content": "---\nname: frontend-design\ndescription: Create distinctive, production-grade frontend interfaces wi | CODE |
| HIGH | …reads/b83fbb2a-4e36-4d82-9de0-7b2a02c2092a/thread.json | 53 | "content": "---\nname: frontend-design\ndescription: Create distinctive, production-grade frontend interfaces wi | CODE |
| HIGH | …reads/f4125791-0128-402a-8ca9-50e0947557e4/thread.json | 52 | "content": "---\nname: frontend-design\ndescription: Create distinctive, production-grade frontend interfaces wi | CODE |
| HIGH | …reads/fe3f7974-1bcb-4a01-a950-79673baafefd/thread.json | 1637 | "content": "---\nname: frontend-design\ndescription: Create distinctive, production-grade frontend interfaces wi | CODE |
| HIGH | …reads/5aa47db1-d0cb-4eb9-aea5-3dac1b371c5a/thread.json | 204 | "content": "---\nname: frontend-design\ndescription: Create distinctive, production-grade frontend interfaces wi | CODE |
| HIGH | …reads/7f9dc56c-e49c-4671-a3d2-c492ff4dce0c/thread.json | 847 | "content": "# The Leica Master's Eye: Capturing the Decisive Moment in the Age of AI\n\n*By DeerFlow 2.0 | | CODE |
| HIGH | …reads/c02bb4d5-4202-490e-ae8f-ff4864fc0d2e/thread.json | 52 | "content": "---\nname: frontend-design\ndescription: Create distinctive, production-grade frontend interfaces wi | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | backend/tests/test_subagent_executor.py | 4668 | CODE | |
| MEDIUM | backend/tests/test_subagent_executor.py | 2288 | CODE | |
| MEDIUM | backend/tests/test_subagent_executor.py | 2348 | CODE | |
| MEDIUM | backend/tests/test_subagent_executor.py | 2464 | CODE | |
| MEDIUM | backend/tests/test_checkpoint_retention_service.py | 471 | CODE | |
| MEDIUM | backend/tests/test_artifacts_router.py | 625 | CODE | |
| MEDIUM | backend/tests/test_run_worker_delivery.py | 505 | CODE | |
| MEDIUM | backend/tests/test_extension_task_lifecycle.py | 261 | CODE | |
| MEDIUM | backend/tests/test_extension_task_lifecycle.py | 365 | CODE | |
| MEDIUM | backend/tests/test_run_worker_rollback.py | 97 | CODE | |
| MEDIUM | backend/tests/test_run_worker_rollback.py | 1826 | CODE | |
| MEDIUM | backend/tests/test_run_worker_rollback.py | 1899 | CODE | |
| MEDIUM | backend/tests/test_worker_langfuse_metadata.py | 39 | CODE | |
| MEDIUM | backend/tests/test_sse_observer_disconnect.py | 70 | CODE | |
| MEDIUM | backend/tests/test_channels.py | 2430 | CODE | |
| MEDIUM | backend/tests/test_channels.py | 4587 | CODE | |
| MEDIUM | backend/tests/test_threads_router.py | 727 | CODE | |
| MEDIUM | backend/tests/test_threads_router.py | 806 | CODE | |
| MEDIUM | backend/tests/test_gateway_run_drain_shutdown.py | 267 | CODE | |
| MEDIUM | backend/tests/test_client.py | 4646 | CODE | |
| MEDIUM | backend/tests/test_wait_disconnect_handling.py | 98 | CODE | |
| MEDIUM | backend/tests/test_worker_trace_binding.py | 36 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | config.example.yaml | 2142 | # Set false to disable the new deterministic analyzers (nested-archive, | COMMENT |
| LOW | …reads/ad76c455-5bf9-4335-8517-fc03834ab828/thread.json | 123 | "content": "import pandas as pd\nimport numpy as np\nimport matplotlib.pyplot as plt\nimport seaborn as sn | CODE |
| LOW | backend/app/gateway/routers/artifacts.py | 443 | # Check if this is a request for a file inside a .skill archive (e.g., xxx.skill/SKILL.md) | COMMENT |
| LOW | backend/app/channels/discord.py | 677 | # Check if there's an active thread for this channel | COMMENT |
| LOW | backend/tests/test_infoquest_client.py | 113 | # Check if result is a valid JSON string with expected content | COMMENT |
| LOW | backend/tests/test_infoquest_client.py | 306 | # Check if result is a valid JSON string with expected content | COMMENT |
| LOW | backend/tests/test_infoquest_client.py | 359 | # Check if result is a valid JSON string | COMMENT |
| LOW | …/packages/harness/deerflow/tools/builtins/task_tool.py | 1073 | # Check if task completed, failed, or timed out | COMMENT |
| LOW | …s/deerflow/agents/middlewares/view_image_middleware.py | 117 | # Check if all tool calls have been completed | COMMENT |
| LOW | …s/deerflow/agents/middlewares/view_image_middleware.py | 392 | # Check if it has view_image tool calls | COMMENT |
| LOW | …s/deerflow/agents/middlewares/view_image_middleware.py | 396 | # Check if all tools have been completed | COMMENT |
| LOW | …arness/deerflow/agents/middlewares/title_middleware.py | 184 | # Check if thread already has a title in state | COMMENT |
| LOW | …arness/deerflow/agents/middlewares/title_middleware.py | 188 | # Check if this is the first turn (has at least one user message and one assistant response). | COMMENT |
| LOW | …eerflow/agents/middlewares/clarification_middleware.py | 538 | # Check if this is an ask_clarification tool call | COMMENT |
| LOW | …eerflow/agents/middlewares/clarification_middleware.py | 563 | # Check if this is an ask_clarification tool call | COMMENT |
| LOW | backend/packages/harness/deerflow/sandbox/tools.py | 563 | # Check if args has server-filesystem package | COMMENT |
| LOW | backend/packages/harness/deerflow/sandbox/tools.py | 1697 | # Check if sandbox already exists in state. A fork-restored execution keeps | COMMENT |
| LOW | backend/packages/harness/deerflow/sandbox/tools.py | 1936 | # Check if directories have already been created | COMMENT |
| LOW | …rness/deerflow/community/infoquest/infoquest_client.py | 73 | # Check if status code is not 200 | COMMENT |
| LOW | scripts/detect_uv_extras.py | 216 | # Check if we're at the parent's child level (subsection) | COMMENT |
| LOW | skills/public/skill-creator/scripts/init_skill.py | 208 | # Check if directory already exists | COMMENT |
| LOW | skills/public/vercel-deploy/scripts/deploy.sh | 175 | # Check if input is a .tgz file or a directory | COMMENT |
| LOW | skills/public/vercel-deploy/scripts/deploy.sh | 191 | # Check if this is a static HTML project (no package.json) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | backend/README.md | 226 | export OPENAI_API_KEY="your-api-key-here" | CODE |
| HIGH | backend/CONTRIBUTING.md | 52 | export OPENAI_API_KEY="your-api-key" | CODE |
| HIGH | backend/README_zh.md | 193 | export OPENAI_API_KEY="your-api-key-here" | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/check_chart_sandbox_service.sh | 17 | # Usage: | COMMENT |
| LOW | scripts/bump_version.sh | 4 | # Usage: | COMMENT |
| LOW | scripts/check_config_version.sh | 12 | # Usage: | COMMENT |
| LOW | scripts/verify_versions.sh | 10 | # Usage: | COMMENT |
| LOW | scripts/serve.sh | 5 | # Usage: | COMMENT |
| LOW | skills/public/claude-to-deerflow/scripts/chat.sh | 4 | # Usage: | COMMENT |
| LOW | skills/public/claude-to-deerflow/scripts/status.sh | 4 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | backend/tests/test_subagent_executor.py | 3436 | def execute_task(task_id: int): | CODE |
| LOW | backend/tests/test_detect_blocking_io_static.py | 799 | def helper(x=time.sleep(1)): | CODE |
| LOW | backend/tests/test_detect_blocking_io_static.py | 1010 | def helper(x: os.listdir(".")) -> os.listdir("."): | CODE |
| LOW | backend/tests/test_detect_blocking_io_static.py | 1032 | def helper(callback=lambda: os.listdir(".")): | CODE |
| LOW | backend/tests/test_detect_blocking_io_static.py | 1054 | def helper(callback=lambda flag=os.listdir("."): flag): | CODE |
| LOW | backend/tests/test_detect_blocking_io_static.py | 1081 | def helper(items=(os.listdir(x) for x in [1])): | CODE |
| LOW | backend/tests/test_detect_blocking_io_static.py | 1103 | def helper(items=(x for x in os.listdir("."))): | CODE |
| LOW | backend/tests/test_detect_blocking_io_static.py | 1286 | def helper(flag=(lambda: os.listdir("."))()): | CODE |
| LOW | backend/tests/test_detect_blocking_io_static.py | 218 | def helper(): | STRING |
| LOW | backend/tests/test_review_changed_public_skills.py | 173 | (skill_dir / "scripts" / "helper.py").write_text("def helper():\n return 1\n", encoding="utf-8") | CODE |
| LOW | backend/tests/test_typesafe_guardrail_provider.py | 621 | def handle_request(self, request: httpx.Request) -> httpx.Response: | CODE |
| LOW | backend/tests/test_claude_provider_prompt_caching.py | 407 | def handle_request(request): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | …reads/d3e5adaf-084c-4dd5-9d29-94f1d6bccd98/thread.json | 53 | "content": "# Tips For Technical Startup Founders | Startup School\n\n# Tips For Technical Startup Founders | St | CODE |
| MEDIUM⚡ | …reads/fe3f7974-1bcb-4a01-a950-79673baafefd/thread.json | 313 | "content": "# 🦌 DeerFlow\n\n[](https://www.py | CODE |