The AI that really does things. Any OS. Any Platform. The lobster way. 🦞
This report summarizes scanner evidence for openclaw/openclaw, a TypeScript project with 391,588 GitHub stars. SynthScan examined 13,027,750 lines of code across 50647 source files, recording 53414 pattern matches distributed across 23 syntactic categories. The legacy adjusted pattern signal is 4.5 (Low pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 52643 finding(s).
Are imports declared and package/API names verified? 696 finding(s).
Are wrappers, guards, and repeated structures necessary? 52153 finding(s).
Which changes need focused human review? 53414 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 53414 distinct pattern matches across 23 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tsdown.config.ts | 178 | function createBashParserAssetsPlugin(): TsdownPlugin { | CODE |
| LOW | tsdown.config.ts | 313 | function nodeWorkspacePackageBuildConfig(packageDir: string, config: UserConfig = {}): UserConfig { | CODE |
| LOW | tsdown.config.ts | 363 | function withExternalPackageSubpaths(options: { neverBundle: string[] }) { | CODE |
| LOW⚡ | tsdown.config.ts | 400 | function shouldNeverBundleDependency(id: string): boolean { | CODE |
| LOW⚡ | tsdown.config.ts | 404 | function shouldNeverBundleDeclarationDependency(id: string): boolean { | CODE |
| LOW⚡ | tsdown.config.ts | 412 | function shouldAlwaysBundleDependency(id: string): boolean { | CODE |
| LOW | tsdown.config.ts | 435 | function listBundledPluginEntrySources( | CODE |
| LOW | tsdown.config.ts | 555 | function buildAgentCoreDistEntries(): Record<string, string> { | CODE |
| LOW | tsdown.config.ts | 586 | function shouldExternalizeAgentCoreDependency(id: string): boolean { | CODE |
| LOW⚡ | tsdown.config.ts | 602 | function shouldExternalizeGatewayProtocolDependency(id: string): boolean { | CODE |
| LOW⚡ | tsdown.config.ts | 606 | function shouldExternalizeGatewayClientDependency(id: string): boolean { | CODE |
| LOW⚡ | tsdown.config.ts | 612 | function shouldExternalizeNetPolicyDependency(id: string): boolean { | CODE |
| LOW⚡ | tsdown.config.ts | 616 | function shouldExternalizeLlmCoreDependency(id: string): boolean { | CODE |
| LOW⚡ | tsdown.config.ts | 620 | function shouldExternalizeMarkdownCoreDependency(id: string): boolean { | CODE |
| LOW⚡ | tsdown.config.ts | 626 | function shouldExternalizeTerminalCoreDependency(id: string): boolean { | CODE |
| LOW | tsdown.config.ts | 725 | function normalizeDeclarationEntrySource(source: string): string { | CODE |
| LOW | tsdown.config.ts | 730 | function buildUnifiedDeclarationGroups( | CODE |
| LOW | ui/vite.config.ts | 142 | export function createControlUiPrecompressedAssetVariants( | CODE |
| LOW | ui/vite.config.ts | 169 | function escapeControlUiAssetRegExp(value: string): string { | CODE |
| LOW | ui/vite.config.ts | 182 | function controlUiLocaleFromAssetPath(file: string, kind: "base" | "configHints"): string | null { | CODE |
| LOW | ui/vite.config.ts | 304 | export function resolveControlUiBuildInfo( | CODE |
| LOW | ui/vite.config.ts | 388 | function resolveTsconfigTargetPath(target: string): string { | CODE |
| LOW | ui/vite.config.ts | 435 | export function resolveSourcePackageAliasesForVite(): ControlUiViteAlias[] { | CODE |
| LOW | ui/vite.config.ts | 462 | export function resolveExternalPackageAliasesForVite( | CODE |
| LOW | ui/vite.config.ts | 479 | export function resolveTsconfigPathAliasesForVite(): ControlUiViteAlias[] { | CODE |
| LOW | ui/vite.config.ts | 498 | function normalizeViteImporterPath(importer: string): string { | CODE |
| LOW | ui/vite.config.ts | 502 | export function controlUiBrowserOnlySharedModuleAliases(): Plugin { | CODE |
| LOW | ui/vite.config.ts | 525 | function controlUiBuildOutputPlugin(buildId: string): Plugin { | CODE |
| LOW | ui/vite.config.ts | 670 | function collectControlUiPublicAssets(publicDir: string): { paths: string[]; hash: string } { | CODE |
| LOW | ui/vitest.config.ts | 97 | function resolveChromiumLaunchOptions(): { executablePath: string } | undefined { | CODE |
| LOW | ui/vitest.config.ts | 139 | export function createUiBrowserVitestConfig( | CODE |
| LOW | ui/vitest.config.ts | 278 | function createUiTestSequencerPlugin(): Plugin { | CODE |
| LOW | ui/test/vitest-runtime-sequencer.ts | 14 | async function readSchedulingEnvironment(file: TestSpecification) { | CODE |
| LOW | ui/config/control-ui-web-awesome-page-rule.ts | 9 | export function controlUiWebAwesomePageRulePlugin(): Plugin { | CODE |
| LOW | ui/config/control-ui-dev-gateway.ts | 5 | export function createControlUiDevGateway( | CODE |
| LOW | ui/config/control-ui-chunking.ts | 137 | export function createControlUiCodeSplitting(options: { includeBootGroups?: boolean } = {}) { | CODE |
| LOW | ui/config/control-ui-chunking.ts | 192 | export function controlUiIsolatedDesktopRuntimePlugin(): Plugin { | CODE |
| LOW | ui/config/control-ui-social-card.ts | 6 | export function controlUiSocialCardPlugin(): Plugin { | CODE |
| LOW | ui/config/control-ui-locales.ts | 50 | function partitionControlUiLocaleCatalog(catalog: TranslationMap): ControlUiLocaleCatalogPartition { | CODE |
| LOW | ui/config/control-ui-locales.ts | 55 | async function loadControlUiLocaleCatalogPartition( | CODE |
| LOW | ui/config/control-ui-locales.ts | 74 | function parseResolvedLocaleModuleId(id: string): { locale: string; configHints: boolean } | null { | CODE |
| LOW | ui/config/control-ui-locales.ts | 84 | export function controlUiLocaleModulesPlugin(): Plugin { | CODE |
| LOW | ui/config/control-ui-hover-guard.ts | 14 | export function controlUiHoverGuardPlugin(): Plugin { | CODE |
| LOW | ui/config/control-ui-boot-preloads.ts | 6 | export function collectControlUiBootAssets( | CODE |
| LOW | ui/config/control-ui-boot-preloads.ts | 78 | export function controlUiBootPreloadsPlugin(): Plugin { | CODE |
| LOW | ui/public/sw.js | 186 | async function reportControlUiHttpFailure(event) { | CODE |
| LOW | ui/src/build-info.ts | 23 | export function controlUiWorkerActivationRetires(message: unknown): boolean { | CODE |
| LOW | ui/src/build-info.ts | 35 | export function controlUiBuildDiffersFrom(identity: { | CODE |
| LOW | ui/src/build-info-normalizers.ts | 22 | function normalizeControlUiBuildTimestamp(value: unknown): string | null { | CODE |
| LOW | ui/src/build-info-normalizers.ts | 37 | function normalizeControlUiBuildId(value: unknown): string { | CODE |
| LOW | ui/src/build-info-normalizers.ts | 42 | export function normalizeControlUiBuildInfo(value: unknown): ControlUiBuildInfo { | CODE |
| LOW | ui/src/app-route-paths.ts | 180 | export function canonicalPluginTabLocation(location: RouteLocation, basePath = ""): RouteLocation { | CODE |
| LOW | ui/src/app-route-paths.ts | 341 | function isLegacyPluginsDiscoveryPath(pathname: string, basePath = ""): boolean { | CODE |
| LOW | ui/src/app-route-paths.ts | 350 | export function pathForPluginCatalogEntry(id: string, basePath = ""): string { | CODE |
| LOW | ui/src/app-route-paths.ts | 389 | export function sessionRouteNamespaceFromPath(pathname: string, basePath = ""): BoardFace | null { | CODE |
| LOW | ui/src/app-route-paths.ts | 434 | export function terminalSessionIdFromPath(pathname: string, basePath = ""): string | null { | CODE |
| LOW | ui/src/app-route-paths.ts | 538 | export function inferBasePathFromPathname(pathname: string): string { | CODE |
| LOW | ui/src/app-route-paths.ts | 590 | export function restoreBridgedRouteLocation( | CODE |
| LOW⚡ | ui/src/dev-gateway.ts | 23 | export function uiDevGatewayResourceBasePath(): string | undefined { | CODE |
| LOW⚡ | ui/src/dev-gateway.ts | 30 | export function gatewayWebSocketTransportUrl(url: string): string { | CODE |
| 52018 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | …/src/e2e/worker-initial-setup.real-gateway.e2e.test.ts | 314 | app.runtime.context.gateway.snapshot.client.request( | CODE |
| CRITICAL | …omposer-websearch-kill-switch.real-gateway.e2e.test.ts | 137 | await app.runtime.context.gateway.snapshot.client.request("health", {}); | CODE |
| CRITICAL | …/src/e2e/agent-file-lifecycle.real-gateway.e2e.test.ts | 310 | await app.runtime.context.gateway.snapshot.client.request("health", {}); | CODE |
| CRITICAL | ui/src/pages/chat/chat-pane-recovery.test.ts | 147 | expect(fixture.host.request.mock.calls.map(([method]) => method)).toEqual([ | CODE |
| CRITICAL | ui/src/pages/chat/chat-pane-recovery.test.ts | 156 | fixture.host.request.mock.calls.filter(([method]) => method === "chat.send"), | CODE |
| CRITICAL | ui/src/pages/chat/chat-pane-recovery.test.ts | 172 | fixture.host.request.mock.calls.filter( | CODE |
| CRITICAL | ui/src/pages/chat/chat-pane-recovery.test.ts | 184 | fixture.host.request.mock.calls.filter(([method]) => method === "chat.history").length; | CODE |
| CRITICAL | ui/src/pages/chat/chat-pane-recovery.test.ts | 200 | fixture.host.request.mock.calls.filter(([method]) => method === "chat.send"), | CODE |
| CRITICAL | ui/src/pages/chat/chat-pane-recovery.test.ts | 215 | fixture.host.request.mock.calls.filter(([method]) => method === "chat.history").length; | CODE |
| CRITICAL | ui/src/pages/chat/chat-pane-session-menu.ts | 302 | const sidebarEntries = scope.context.navigation.snapshot.sidebarEntries.filter( | CODE |
| CRITICAL | ui/src/pages/memory-import/memory-import-page.test.ts | 467 | mutableContext.agents.state.agentsList.agents.push({ id: "writer", name: "Writer" }); | CODE |
| CRITICAL | ui/src/pages/sessions/archive-actions.ts | 63 | sidebarEntries: scope.context.navigation.snapshot.sidebarEntries.filter( | CODE |
| CRITICAL | ui/src/pages/device/device-pages.test.ts | 638 | expect(native.capability.set.mock.calls.at(-1)?.slice(0, 2)).toEqual([ | CODE |
| CRITICAL | test/gateway-agentsapi.live.test.ts | 232 | const stream = await sdk.beta.agents.sessions.events.stream(id, { | CODE |
| CRITICAL | test/gateway-agentsapi.live.test.ts | 257 | (await sdk.beta.agents.sessions.turns.list(id, { limit: 1, order: "desc" })).data[0] | CODE |
| CRITICAL | test/scripts/pr-crabbox-gate-publisher.test.ts | 601 | expect(values.github.request.mock.calls.some(([method]) => method === "POST")).toBe(false); | CODE |
| CRITICAL | test/scripts/pr-crabbox-gate-publisher.test.ts | 636 | expect(values.github.request.mock.calls.some(([method]) => method === "POST")).toBe(false); | CODE |
| CRITICAL | test/scripts/pr-crabbox-gate-publisher.test.ts | 669 | expect(values.github.request.mock.calls.some(([method]) => method === "POST")).toBe(false); | CODE |
| CRITICAL | test/scripts/pr-crabbox-gate-publisher.test.ts | 707 | expect(values.github.request.mock.calls.some(([method]) => method === "POST")).toBe(false); | CODE |
| CRITICAL | test/scripts/pr-crabbox-gate-publisher.test.ts | 717 | expect(values.github.request.mock.calls.some(([method]) => method === "POST")).toBe(false); | CODE |
| CRITICAL | test/scripts/pr-crabbox-gate-publisher.test.ts | 728 | expect(values.github.request.mock.calls.some(([method]) => method === "POST")).toBe(false); | CODE |
| CRITICAL | test/scripts/release-publish-inputs.test.ts | 135 | input.npmManifest.pluginSdkApi.diff.entrypointsAdded.push("tampered"); | CODE |
| CRITICAL | test/scripts/upgrade-survivor-assertions.test.ts | 293 | report.postUpdate.plugins.npm.outcomes = report.postUpdate.plugins.npm.outcomes.map( | CODE |
| CRITICAL | test/scripts/upgrade-survivor-update-result.test.ts | 537 | result.postUpdate.plugins.sync.errors.push("network failed"), | CODE |
| CRITICAL | test/scripts/upgrade-survivor-update-result.test.ts | 542 | result.postUpdate.plugins.npm.outcomes.push({ status: "error" }), | CODE |
| CRITICAL | test/scripts/watch-pr-ci.test.ts | 1964 | afterAliasScan.data.repository.pullRequest.statusCheckRollup.contexts.nodes.find( | CODE |
| CRITICAL | test/scripts/watch-pr-ci.test.ts | 2193 | fixture.graphql.data.repository.pullRequest.statusCheckRollup.contexts.nodes.find( | CODE |
| CRITICAL | test/scripts/full-release-validation-state.test.ts | 1555 | payload.children.normalCi.timing.jobs.reverse(); | CODE |
| CRITICAL | …st/scripts/upgrade-survivor-native-assignments.test.ts | 87 | dropped.binding.value.nativeSubagentAssignments.assignments.pop(); | CODE |
| CRITICAL | test/scripts/full-release-artifact-contract.test.ts | 596 | admission.observations.plans.npm.warnings.push("changed"); | CODE |
| CRITICAL | test/scripts/validate-qa-runtime-pair-summary.test.ts | 302 | missingResult.runtimeParity.cells.codex.toolCalls.push({ | CODE |
| CRITICAL | extensions/memory-lancedb/index.test.ts | 1703 | expect(harness.logger.warn.mock.calls.map(([message]) => String(message))).toEqual([ | CODE |
| CRITICAL | extensions/discord/src/voice/voice-following.test.ts | 685 | expect(client.rest.get.mock.calls.slice(0, 31)).toEqual( | CODE |
| CRITICAL | extensions/discord/src/voice/voice-following.test.ts | 688 | expect(client.rest.get.mock.calls.slice(31)).toEqual( | CODE |
| CRITICAL | …/src/voice/realtime-consults.host-cancellation.test.ts | 163 | expect(guest.session.submitToolResult.mock.calls.at(-1)).toEqual([ | CODE |
| CRITICAL | extensions/device-pair/notify.ts | 255 | const adapter = await params.api.runtime.channel.outbound.loadAdapter("telegram"); | CODE |
| CRITICAL | extensions/device-pair/index.ts | 371 | const adapter = await params.api.runtime.channel.outbound.loadAdapter(params.ctx.channel); | CODE |
| CRITICAL | …s/qa-lab/src/live-transports/slack/channel-e2e.test.ts | 138 | expect(f.sutClient.chat.delete.mock.calls.map(([input]) => input)).toEqual([ | CODE |
| CRITICAL | …s/qa-lab/src/live-transports/slack/channel-e2e.test.ts | 210 | expect(f.sutClient.chat.delete.mock.calls.map(([input]) => input.ts).toSorted()).toEqual( | CODE |
| CRITICAL | extensions/codex/src/session-catalog-adoption.ts | 437 | const restored = await params.api.runtime.agent.session.patchSessionEntry({ | CODE |
| CRITICAL | extensions/codex/src/session-upstream-activity.ts | 190 | const storePath = params.api.runtime.agent.session.resolveStorePath(config?.session?.store, { | CODE |
| CRITICAL | extensions/codex/src/session-upstream-activity.ts | 193 | const entry = await params.api.runtime.agent.session.getSessionEntryAsync({ | CODE |
| CRITICAL | extensions/codex/src/session-catalog-node-adoption.ts | 218 | finalized = await params.api.runtime.agent.session.patchSessionEntry({ | CODE |
| CRITICAL | extensions/codex/src/session-catalog-node-adoption.ts | 253 | const currentEntry = params.api.runtime.agent.session.getSessionEntry({ | CODE |
| CRITICAL | extensions/codex/src/session-catalog-node-adoption.ts | 306 | const created = await params.api.runtime.agent.session.createSessionEntry({ | CODE |
| CRITICAL | …dex/src/app-server/run-attempt-lifecycle-controller.ts | 120 | prompt.context.attemptTools.toolBridge.telemetry.messagingToolSourceReplyPayloads.push( | CODE |
| CRITICAL⚡ | …p-server/mcp-app-session-preparation.lifecycle.test.ts | 213 | f.wire.request.mock.calls.filter(([method]) => method === "thread/start"), | CODE |
| CRITICAL⚡ | …p-server/mcp-app-session-preparation.lifecycle.test.ts | 215 | expect(f.wire.request.mock.calls.some(([method]) => method === "turn/start")).toBe(false); | CODE |
| CRITICAL⚡ | …p-server/mcp-app-session-preparation.lifecycle.test.ts | 216 | expect(f.wire.request.mock.calls.some(([method]) => method === "thread/unsubscribe")).toBe( | CODE |
| CRITICAL | …p-server/mcp-app-session-preparation.lifecycle.test.ts | 257 | f.wire.request.mock.calls.filter(([method]) => method === "thread/start"), | CODE |
| CRITICAL | …p-server/mcp-app-session-preparation.lifecycle.test.ts | 259 | expect(f.wire.request.mock.calls.some(([method]) => method === "thread/resume")).toBe(false); | CODE |
| CRITICAL | …p-server/mcp-app-session-preparation.lifecycle.test.ts | 282 | expect(f.wire.request.mock.calls.some(([method]) => method === "thread/unsubscribe")).toBe( | CODE |
| CRITICAL | …p-server/mcp-app-session-preparation.lifecycle.test.ts | 303 | f.wire.request.mock.calls.filter(([method]) => method === "thread/start"), | CODE |
| CRITICAL | …/src/app-server/thread-lifecycle.app-inventory.test.ts | 764 | f.process.request.mock.calls.slice(boundary).some(([method]) => method === "thread/start"), | CODE |
| CRITICAL | extensions/deepseek/onboard.test.ts | 14 | manifest.modelCatalog.providers.deepseek.models.map((model) => model.id), | CODE |
| CRITICAL | extensions/xai/model-definitions.ts | 35 | manifest.modelCatalog.providers.xai.models.map(toXaiModelDefinition); | CODE |
| CRITICAL | extensions/openshell/src/backend.ts | 758 | ...this.params.execContext.config.providers.flatMap((provider) => ["--provider", provider]), | CODE |
| CRITICAL | …chrome-extension/background.fetch-continuation.test.ts | 226 | return rig.harness.debuggerSendCommand.mock.calls.filter( | CODE |
| CRITICAL | …chrome-extension/background.fetch-continuation.test.ts | 355 | rig.harness.debuggerSendCommand.mock.calls.filter(([, method]) => method === "Fetch.disable"), | CODE |
| CRITICAL | …ensions/browser/src/browser/screencast/session.test.ts | 223 | page.cdp.send.mock.calls.filter(([method]) => method === "Page.screencastFrameAck"), | CODE |
| 133 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | ui/src/components/markdown-code-blocks.test.ts | 420 | print(f"--- {ws.title} ---") | CODE |
| HIGH | ui/src/components/markdown-code-blocks.test.ts | 424 | print(row) | CODE |
| HIGH | ui/src/lib/chat/message-normalizer.test.ts | 307 | "Here is the code.\n\n```python\ndef run():\n if ready:\n return True\n```\n\nThe attachment is ready."; | CODE |
| HIGH⚡ | test/scripts/package-acceptance-workflow.test.ts | 7093 | elif [[ "$*" == *"--json status,url,updatedAt"* ]]; then | CODE |
| HIGH⚡ | test/scripts/package-acceptance-workflow.test.ts | 7097 | elif [[ "$*" == *"--json jobs"* ]]; then | CODE |
| HIGH⚡ | test/scripts/package-acceptance-workflow.test.ts | 7101 | elif [[ "$MODE" == "started" || "$iteration" -gt 0 ]]; then | CODE |
| HIGH⚡ | test/scripts/package-acceptance-workflow.test.ts | 7110 | elif [[ "$1 $2 $3" == "api -X GET" && "$MODE" == bootstrap-* ]]; then | CODE |
| HIGH⚡ | test/scripts/package-acceptance-workflow.test.ts | 7113 | elif [[ "$1 $2 $3" == "api -X POST" && "$MODE" == bootstrap-* ]]; then | CODE |
| HIGH | test/scripts/package-acceptance-workflow.test.ts | 3997 | elif [ "$1 $2" = "view openclaw@latest" ]; then | CODE |
| HIGH | test/scripts/package-acceptance-workflow.test.ts | 6329 | elif [[ "$1 $2" == "release view" ]]; then | CODE |
| HIGH | test/scripts/package-acceptance-workflow.test.ts | 6331 | elif [[ "$1 $2" == "release edit" ]]; then | CODE |
| HIGH | test/scripts/check-dependency-pins.test.ts | 33 | elif [ "$1" = "ls-files" ]; then | CODE |
| HIGH | test/scripts/docker-package-identity.test.ts | 64 | elif [[ "$container" == *-pnpm-proof-* ]]; then | CODE |
| HIGH | test/scripts/docker-package-identity.test.ts | 84 | elif [[ "$container" == *-pnpm-proof-* ]]; then | CODE |
| HIGH | test/scripts/release-beta-verifier.test.ts | 313 | print(npm.tags[name]); | CODE |
| HIGH | test/scripts/release-beta-verifier.test.ts | 316 | print({version: npm.version, "dist-tags": npm.tags[name], "dist.integrity": "sha512-test", "dist.tarball": "https:// | CODE |
| HIGH⚡ | test/scripts/package-mac-dist.test.ts | 58 | elif name == "swift": print("Apple Swift version 6.3") | CODE |
| HIGH⚡ | test/scripts/package-mac-dist.test.ts | 59 | elif name == "xcrun": print("Xcode 26.4") | CODE |
| HIGH⚡ | test/scripts/package-mac-dist.test.ts | 60 | elif name == "node": print("2608000290") | CODE |
| HIGH⚡ | test/scripts/package-mac-dist.test.ts | 61 | elif name == "git": print("a" * 40) | CODE |
| HIGH⚡ | test/scripts/package-mac-dist.test.ts | 62 | elif name == "lipo": print("arm64") | CODE |
| HIGH⚡ | test/scripts/package-mac-dist.test.ts | 63 | elif name == "PlistBuddy": | CODE |
| HIGH⚡ | test/scripts/package-mac-dist.test.ts | 64 | print(json.loads(pathlib.Path(args[2]).read_text())[args[1].split(":")[1]]) | CODE |
| HIGH⚡ | test/scripts/package-mac-dist.test.ts | 65 | elif name == "package-mac-app.sh": | CODE |
| HIGH⚡ | test/scripts/package-mac-dist.test.ts | 70 | elif name == "codesign": | CODE |
| HIGH⚡ | test/scripts/package-mac-dist.test.ts | 75 | elif "--verify" in args: | CODE |
| HIGH⚡ | test/scripts/package-mac-dist.test.ts | 81 | print("Signature=" + (target / "Contents/signature").read_text(), file=sys.stderr) | CODE |
| HIGH⚡ | test/scripts/package-mac-dist.test.ts | 82 | elif name == "ditto": | CODE |
| HIGH⚡ | test/scripts/package-mac-dist.test.ts | 87 | elif name == "create-dmg.sh": pathlib.Path(args[1]).write_bytes(b"dmg") | CODE |
| HIGH⚡ | test/scripts/package-mac-dist.test.ts | 88 | elif name == "hdiutil": | CODE |
| HIGH⚡ | test/scripts/package-mac-dist.test.ts | 93 | elif name == "audit-async-sleep-frames.py": | CODE |
| HIGH⚡ | test/scripts/package-mac-dist.test.ts | 95 | elif name == "notarize-mac-artifact.sh": | CODE |
| HIGH | test/scripts/managed-child-process.test.ts | 273 | print("retained-descendant", pid, flush=True) | CODE |
| HIGH | …st/scripts/plugin-npm-extended-stable-workflow.test.ts | 587 | return None | CODE |
| HIGH | …st/scripts/plugin-npm-extended-stable-workflow.test.ts | 589 | return None | CODE |
| HIGH | test/scripts/install-cli.test.ts | 79 | elif [[ "\${1:-}" == -e ]]; then exit ${sqliteExit}; fi | CODE |
| HIGH | test/scripts/install-cli.test.ts | 1117 | elif [[ "\${1:-}" == -e ]]; then [[ -f "$NODE_STATE" ]]; exit $?; fi | CODE |
| HIGH | test/scripts/ci-windows-process-census.test-support.ts | 302 | print(json.dumps(dict(ready=True)), flush=True) | CODE |
| HIGH | test/scripts/ci-windows-process-census.test-support.ts | 308 | print(json.dumps(dict(id=request["id"], observations=observations)), flush=True) | CODE |
| HIGH | test/scripts/mobile-release-ci.test.ts | 1117 | elif [[ "\${1:-}" == "-s" && "\${3:-}" == "shell" ]]; then | CODE |
| HIGH | test/scripts/mobile-release-ci.test.ts | 1119 | elif [[ "\${1:-}" == "-s" && "\${3:-}" == "emu" ]]; then | CODE |
| HIGH⚡ | test/scripts/mobile-release-ci.test.ts | 1144 | elif [[ "\${1:-}" == "-s" && "\${3:-}" == "emu" ]]; then | CODE |
| HIGH⚡ | test/scripts/mobile-release-ci.test.ts | 1146 | elif [[ "\${1:-}" == "-s" && "\${3:-}" == "shell" && "\${5:-}" == "sys.boot_completed" ]]; then | CODE |
| HIGH⚡ | test/scripts/mobile-release-ci.test.ts | 1148 | elif [[ "\${1:-}" == "-s" && "\${3:-}" == "shell" ]]; then | CODE |
| HIGH⚡ | test/scripts/mobile-release-ci.test.ts | 1150 | elif [[ "\${1:-}" == "-s" && "\${3:-}" == "logcat" ]]; then | CODE |
| HIGH⚡ | test/scripts/mobile-release-ci.test.ts | 1160 | elif [[ "\${1:-}" == "-s" && "\${3:-}" == "emu" ]]; then | CODE |
| HIGH⚡ | test/scripts/mobile-release-ci.test.ts | 1162 | elif [[ "\${1:-}" == "-s" && "\${3:-}" == "shell" && "\${5:-}" == "sys.boot_completed" ]]; then | CODE |
| HIGH⚡ | test/scripts/mobile-release-ci.test.ts | 1164 | elif [[ "\${1:-}" == "-s" && "\${3:-}" == "shell" ]]; then | CODE |
| HIGH⚡ | test/scripts/mobile-release-ci.test.ts | 1166 | elif [[ "\${1:-}" == "-s" && "\${3:-}" == "logcat" ]]; then | CODE |
| HIGH | test/scripts/mobile-release-ci.test.ts | 1197 | elif [[ "\${1:-}" == "-s" && "\${3:-}" == "emu" ]]; then | CODE |
| HIGH | test/scripts/mobile-release-ci.test.ts | 1199 | elif [[ "\${1:-}" == "-s" && "\${3:-}" == "shell" ]]; then | CODE |
| HIGH⚡ | test/scripts/test-helpers.ts | 52 | print(profile?.profileId ?? "none"); | CODE |
| HIGH⚡ | test/scripts/test-helpers.ts | 55 | print(Math.max(0, ...counts)); | CODE |
| HIGH⚡ | test/scripts/test-helpers.ts | 58 | print(Math.max(0, ...profiles.map((item) => item.expiresAt ?? 0))); | CODE |
| HIGH | test/scripts/write-cli-startup-metadata.test.ts | 726 | return None | CODE |
| HIGH⚡ | test/scripts/write-cli-startup-metadata.test.ts | 747 | return False | CODE |
| HIGH⚡ | test/scripts/write-cli-startup-metadata.test.ts | 750 | return True | CODE |
| HIGH⚡ | test/scripts/write-cli-startup-metadata.test.ts | 752 | return False | CODE |
| HIGH | test/scripts/write-cli-startup-metadata.test.ts | 837 | return True | CODE |
| HIGH | test/scripts/write-cli-startup-metadata.test.ts | 839 | return False | CODE |
| 105 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ui/src/components/decision-model-picker.test.ts | 122 | expect(p.picker.querySelector("input")!.getAttribute("placeholder")).toBe("Search models"); | CODE |
| LOW⚡ | ui/src/i18n/.i18n/raw-copy-baseline.json | 196 | "name": "placeholder", | CODE |
| LOW⚡ | ui/src/i18n/.i18n/raw-copy-baseline.json | 203 | "name": "placeholder", | CODE |
| LOW⚡ | ui/src/i18n/.i18n/raw-copy-baseline.json | 210 | "name": "placeholder", | CODE |
| LOW⚡ | ui/src/i18n/.i18n/raw-copy-baseline.json | 371 | "name": "placeholder", | CODE |
| LOW⚡ | ui/src/i18n/.i18n/raw-copy-baseline.json | 378 | "name": "placeholder", | CODE |
| LOW⚡ | ui/src/i18n/.i18n/raw-copy-baseline.json | 385 | "name": "placeholder", | CODE |
| LOW | ui/src/i18n/.i18n/raw-copy-baseline.json | 399 | "name": "placeholder", | CODE |
| LOW | ui/src/i18n/.i18n/raw-copy-baseline.json | 406 | "name": "placeholder", | CODE |
| LOW | …src/e2e/new-session-page.catalog-reconnect.e2e.test.ts | 371 | .poll(() => checkoutBaseRefInput(placePopover).getAttribute("placeholder")) | CODE |
| LOW | …src/e2e/new-session-page.catalog-reconnect.e2e.test.ts | 889 | await expect.poll(() => baseInput.getAttribute("placeholder")).toBe("main"); | CODE |
| LOW | …src/e2e/new-session-page.catalog-reconnect.e2e.test.ts | 910 | expect(await baseInput.getAttribute("placeholder")).toBe("Loading…"); | CODE |
| LOW | ui/src/e2e/question-flow.e2e.test.ts | 545 | expect(await secretInput.getAttribute("placeholder")).toBe("DEPLOY_API_KEY"); | CODE |
| LOW | ui/src/e2e/plugins-help.e2e.test.ts | 70 | expect(await composer.getAttribute("placeholder")).toBe("Ask OpenClaw about Workboard"); | CODE |
| LOW | ui/src/e2e/plugins-help.e2e.test.ts | 412 | await expect.poll(() => composer.getAttribute("placeholder")).toBe("Message OpenClaw…"); | CODE |
| LOW | ui/src/e2e/new-session-page.places.e2e.test.ts | 410 | .poll(() => environmentSearch.getAttribute("placeholder")) | CODE |
| LOW | …/e2e/new-session-page.workspace-validation.e2e.test.ts | 614 | .poll(() => checkoutBaseRefInput(checkout).getAttribute("placeholder")) | CODE |
| LOW | ui/src/e2e/plugins-settings-admin.e2e.test.ts | 287 | expect(await reference.getAttribute("placeholder")).not.toContain("Raw"); | CODE |
| LOW | ui/src/e2e/identity-config-refresh.e2e.test.ts | 69 | await expect.poll(() => composer.getAttribute("placeholder")).toContain(initialName); | CODE |
| LOW | ui/src/e2e/identity-config-refresh.e2e.test.ts | 128 | placeholder: await composer.getAttribute("placeholder"), | CODE |
| LOW | …2e/session-placement-module-boundaries.test-support.ts | 267 | await expect.poll(() => baseRef.getAttribute("placeholder")).toBe("main"); | CODE |
| LOW | ui/src/e2e/memory-settings-defaults.e2e.test.ts | 153 | .poll(() => reloadedFrequencyRow.getByRole("textbox").getAttribute("placeholder")) | CODE |
| LOW | ui/src/e2e/plugins-credentials.e2e.test.ts | 200 | expect(await input.getAttribute("placeholder")).toBe("demo-key"); | CODE |
| LOW | ui/src/e2e/new-session-page.github-projects.e2e.test.ts | 365 | expect(await baseRef.getAttribute("placeholder")).toBe("From"); | CODE |
| LOW | ui/src/e2e/config-form-defaults.e2e.test.ts | 266 | .poll(() => retriesRow.getByRole("spinbutton").getAttribute("placeholder")) | CODE |
| LOW | ui/src/e2e/chat-composer-catalog.e2e.test.ts | 952 | await expect.poll(() => textarea.getAttribute("placeholder")).toContain("Message"); | CODE |
| LOW | ui/src/e2e/native-desktop-appearance.e2e.test.ts | 398 | await expect.poll(() => message.getAttribute("placeholder")).toBe("Message Assistant"); | CODE |
| LOW | ui/src/e2e/native-desktop-appearance.e2e.test.ts | 414 | .poll(() => message.getAttribute("placeholder")) | CODE |
| LOW | ui/src/e2e/native-desktop-appearance.e2e.test.ts | 458 | expect(await message.getAttribute("placeholder")).toBe( | CODE |
| LOW | ui/src/e2e/native-desktop-appearance.e2e.test.ts | 528 | await expect.poll(() => message.getAttribute("placeholder")).toBe("Message Assistant"); | CODE |
| LOW | ui/src/e2e/new-session-page.projects-places.e2e.test.ts | 221 | await expect.poll(() => pathInput.getAttribute("placeholder")).toBe("Gateway · local"); | CODE |
| LOW | ui/src/e2e/new-session-page.projects-places.e2e.test.ts | 228 | await expect.poll(() => pathInput.getAttribute("placeholder")).toBe("Gateway · QA-Gateway"); | CODE |
| LOW⚡ | ui/src/pages/chat/chat-view.test.ts | 3113 | expect(textOnly.querySelector("textarea")?.getAttribute("placeholder")).toBe( | CODE |
| LOW⚡ | ui/src/pages/chat/chat-view.test.ts | 3118 | expect(ordinaryTextFile.querySelector("textarea")?.getAttribute("placeholder")).toBe( | CODE |
| LOW⚡ | ui/src/pages/chat/chat-view.test.ts | 3124 | expect(withImage.querySelector("textarea")?.getAttribute("placeholder")).toBe( | CODE |
| LOW | …hat/chat-pane-session-settings-materialization.test.ts | 32 | { initialState: "placeholder", source: "preceding write" }, | CODE |
| LOW | …hat/chat-pane-session-settings-materialization.test.ts | 34 | { initialState: "placeholder", source: "replacement" }, | CODE |
| LOW | …hat/chat-pane-session-settings-materialization.test.ts | 56 | const rows: GatewaySessionRow[] = initialState === "placeholder" ? [placeholder] : []; | CODE |
| LOW | …hat/chat-pane-session-settings-materialization.test.ts | 103 | initialState === "placeholder" ? expect.objectContaining(placeholder) : undefined, | CODE |
| LOW | …hat/chat-pane-session-settings-materialization.test.ts | 346 | { initialState: "placeholder", outcome: "reasoning rejection" }, | CODE |
| LOW | …hat/chat-pane-session-settings-materialization.test.ts | 361 | const rows: GatewaySessionRow[] = initialState === "placeholder" ? [placeholder] : []; | CODE |
| LOW | …c/pages/chat/chat-pane-unmaterialized-settings.test.ts | 41 | (["absent", "placeholder"] as const).flatMap((initialState) => | CODE |
| LOW | …c/pages/chat/chat-pane-unmaterialized-settings.test.ts | 43 | (initialState === "placeholder" | CODE |
| LOW | …c/pages/chat/chat-pane-unmaterialized-settings.test.ts | 74 | const rows = initialState === "placeholder" ? [initial] : []; | CODE |
| LOW | …c/pages/chat/chat-pane-unmaterialized-settings.test.ts | 166 | const initialThinking = initialState === "placeholder" ? "low" : ""; | CODE |
| LOW | …c/pages/chat/chat-pane-unmaterialized-settings.test.ts | 195 | expect(sessions.state.result?.sessions).toHaveLength(initialState === "placeholder" ? 1 : 0); | CODE |
| LOW | test/scripts/openclaw-npm-publish.test.ts | 53 | writeFileSync(tarball, "placeholder", "utf8"); | CODE |
| LOW | test/scripts/release-workflow-git-lifecycle.test.ts | 11 | type ReleaseMode = "linux" | "macos" | "placeholder"; | CODE |
| LOW | test/scripts/release-workflow-git-lifecycle.test.ts | 113 | mode: "placeholder" as const, | CODE |
| LOW | test/scripts/release-workflow-git-lifecycle.test.ts | 143 | (["linux", "macos", "placeholder"] as const).flatMap((mode) => | CODE |
| LOW⚡ | test/scripts/release-workflow-git-lifecycle.test.ts | 198 | { mode: "placeholder" as const, match: "^rev-parse ", operation: "rev-parse" }, | CODE |
| LOW⚡ | test/scripts/release-workflow-git-lifecycle.test.ts | 199 | { mode: "placeholder" as const, match: "^fetch ", operation: "fetch" }, | CODE |
| LOW⚡ | test/scripts/release-workflow-git-lifecycle.test.ts | 201 | mode: "placeholder" as const, | CODE |
| LOW⚡ | test/scripts/release-workflow-git-lifecycle.test.ts | 207 | mode: "placeholder" as const, | CODE |
| LOW | test/scripts/release-workflow-git-lifecycle.test.ts | 303 | const report = await releaseRun(signal, "placeholder", { | CODE |
| LOW | test/scripts/release-workflow-git-lifecycle.test.ts | 319 | const report = await releaseRun(signal, "placeholder", { | CODE |
| LOW | test/scripts/release-workflow-git-lifecycle.test.ts | 349 | const report = await releaseRun(signal, "placeholder", { env }); | CODE |
| LOW | test/scripts/release-workflow-git-lifecycle.test.ts | 360 | const report = await releaseRun(signal, "placeholder", { | CODE |
| LOW | test/scripts/release-workflow-git-lifecycle.test.ts | 374 | (["linux", "macos", "placeholder"] as const).flatMap((mode) => | CODE |
| LOW | test/scripts/npm-placeholder-publication.test.ts | 427 | expect(calls).toEqual([["dist-tag", "add", `${packageName}@0.0.0`, "placeholder"]]); | CODE |
| 250 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | ui/src/styles/base-theme-tokens.node.test.ts | 121 | // Absolutely palette edits left both --bg mirrors stale. Pre-paint needs a color | COMMENT |
| MEDIUM | ui/src/pages/config/view-appearance.ts | 131 | // Both slots say "Theme default": Dash and Absolutely default | COMMENT |
| MEDIUM | test/scripts/docker-build-helper.test.ts | 1972 | # The joined harness removes its container before the heartbeat wrapper returns. | COMMENT |
| MEDIUM | test/scripts/npm-telegram-live.test.ts | 74 | const installRunEnd = script.indexOf("# Mount the trusted current-source QA harness"); | CODE |
| MEDIUM | test/scripts/docker-e2e-observability.test.ts | 114 | # Use the actual harness: its signal trap exits inside this function redirection. | COMMENT |
| MEDIUM | qa/scenarios/memory/memory-recall.yaml | 19 | # the harness, not the models. So we keep it prose-only, covered by the | COMMENT |
| MEDIUM | …heduling/heartbeat-isolated-group-mcp-policy-note.yaml | 16 | # tool search, and route exec to a node host so the Codex harness drops its | COMMENT |
| MEDIUM | qa/scenarios/media/image-understanding-attachment.yaml | 82 | # is the only thing an external harness can verify in mock mode. | COMMENT |
| MEDIUM | extensions/qa-lab/src/docker-harness.ts | 177 | `# QA Docker harness example env | CODE |
| MEDIUM | …s/memory-core/src/memory-forget-curated-writes.test.ts | 111 | const memoryContent = "# Long-Term Memory\nA harness-authored private fact.\n"; | CODE |
| MEDIUM | scripts/test-live-codex-harness-docker.sh | 158 | # Force the Codex harness to use the staged `~/.codex` auth files. This lane | COMMENT |
| MEDIUM | scripts/test-live-codex-harness-docker.sh | 260 | # Codex. This lane must rebuild the live image so the plugin-owned harness is | COMMENT |
| MEDIUM | scripts/docker/install-sh-e2e/run.sh | 2 | # Official installer E2E harness for Docker. | COMMENT |
| MEDIUM | scripts/docker/install-sh-common/version-parse.sh | 181 | # freshness policies. The release harness needs the nearest package root only. | COMMENT |
| MEDIUM | scripts/docker/install-sh-nonroot/run.sh | 64 | # This non-root harness downloads first; public smoke and CLI lanes intentionally | COMMENT |
| MEDIUM | scripts/e2e/docker-package-install.sh | 39 | # The package proofs share the registry and lifecycle harness. Copy its complete | COMMENT |
| MEDIUM | scripts/e2e/cron-mcp-cleanup-docker.sh | 7 | # child-process cleanup through a mounted test harness. | COMMENT |
| MEDIUM | scripts/e2e/system-agent-first-run-docker.sh | 7 | # functional E2E image, with only the test harness mounted from the checkout. | COMMENT |
| MEDIUM | scripts/e2e/codex-npm-plugin-live-docker.sh | 79 | # Signal traps inherit the harness function's log redirection. Reserve the original stdout | COMMENT |
| MEDIUM | scripts/e2e/system-agent-rescue-docker.sh | 7 | # functional E2E image, with only the test harness mounted from the checkout. | COMMENT |
| MEDIUM | scripts/e2e/gateway-concurrency-docker.sh | 41 | # Only test-owned harness files cross into the container; the Gateway itself | COMMENT |
| MEDIUM | scripts/e2e/npm-telegram-live-docker.sh | 7 | # onboarding/doctor recovery, then runs the Telegram QA live harness. | COMMENT |
| MEDIUM | scripts/e2e/npm-telegram-live-docker.sh | 440 | # Mount the trusted current-source QA harness separately from the installed | COMMENT |
| MEDIUM | scripts/e2e/npm-telegram-live-docker.sh | 585 | # version guess, establishes whether this harness must preinstall Codex. | COMMENT |
| MEDIUM | scripts/e2e/anthropic-cache-live-docker.sh | 23 | # Only harness scripts are mounted; both Anthropic builders come from the | COMMENT |
| MEDIUM | scripts/e2e/lib/plugins/fixtures.sh | 155 | # Frozen corrupt-update scenarios are mounted onto the current harness. | COMMENT |
| MEDIUM | .github/workflows/qa-profile-evidence.yml | 181 | # workflow SHA from job context so trusted harness checkouts cannot drift to candidate code. | COMMENT |
| MEDIUM | .github/workflows/qa-profile-evidence.yml | 1045 | # Diagnostics use the frozen harness even when candidate aggregation cannot start. | COMMENT |
| MEDIUM | .github/workflows/openclaw-npm-preflight.yml | 172 | # Tagged sources may predate containment; runner setup belongs to the trusted harness. | COMMENT |
| MEDIUM | .github/workflows/openclaw-performance.yml | 966 | # target schema so the trusted harness never writes invalid config. | COMMENT |
| MEDIUM | .github/workflows/openclaw-release-publish.yml | 1394 | # the trusted harness install instead of the frozen target checkout. | COMMENT |
| MEDIUM | .github/workflows/install-smoke-reusable.yml | 75 | # this reusable workflow, so trusted harness checkouts cannot drift to candidate code. | COMMENT |
| MEDIUM | .github/workflows/ci.yml | 785 | # This owner creates the harness, not candidate source. Keep strict source-status | COMMENT |
| MEDIUM | .github/workflows/ci.yml | 796 | # retained harness files without updating the index or trusting later edits. | COMMENT |
| MEDIUM | …ub/workflows/openclaw-live-and-e2e-checks-reusable.yml | 664 | # workflow SHA from job context so trusted harness checkouts cannot drift to candidate code. | COMMENT |
| MEDIUM | .github/actions/setup-node-env/action.yml | 118 | # Keep this inline for selected-source callers; the release harness uses | COMMENT |
| MEDIUM | .github/actions/setup-node-env/action.yml | 258 | # CI exports actions into .ci-harness; its copied manifests are not cache inputs. | COMMENT |
| MEDIUM | .github/actions/git-owner/owner.py | 488 | # This owner creates the harness, not candidate source. Keep strict source-status | STRING |
| MEDIUM | .github/actions/git-owner/owner.py | 499 | # retained harness files without updating the index or trusting later edits. | STRING |
| MEDIUM⚡ | …os/Tests/OpenClawIPCTests/OnboardingAISetupTests.swift | 2304 | #expect(await !harness.gateway.isCurrentServerLease(staleLease)) | COMMENT |
| MEDIUM⚡ | …os/Tests/OpenClawIPCTests/OnboardingAISetupTests.swift | 2313 | #expect(harness.session.snapshotMakeCount() == 2) | COMMENT |
| MEDIUM⚡ | …os/Tests/OpenClawIPCTests/OnboardingAISetupTests.swift | 2316 | #expect(await harness.recorder.snapshot().authChoices == [choice.choiceID]) | COMMENT |
| MEDIUM⚡ | …os/Tests/OpenClawIPCTests/OnboardingAISetupTests.swift | 2321 | #expect(await (harness.recorder.snapshot()).methods.count == requestCount) | COMMENT |
| MEDIUM | …os/Tests/OpenClawIPCTests/OnboardingAISetupTests.swift | 2000 | #expect(await harness.recorder.snapshot().methods.filter { | COMMENT |
| MEDIUM⚡ | …os/Tests/OpenClawIPCTests/OnboardingAISetupTests.swift | 2297 | let staleLease = try #require(await harness.gateway.captureServerLease()) | CODE |
| MEDIUM⚡ | …os/Tests/OpenClawIPCTests/OnboardingAISetupTests.swift | 2298 | let firstSocket = try #require(harness.session.latestTask()) | CODE |
| MEDIUM | …os/Tests/OpenClawIPCTests/OnboardingAISetupTests.swift | 3428 | try #require(harness.session.snapshotMakeCount() == 1) | STRING |
| MEDIUM | …os/Tests/OpenClawIPCTests/OnboardingAISetupTests.swift | 3448 | try #require(await harness.recorder.snapshot().methods.allSatisfy { $0 == "agents.list" }) | STRING |
| MEDIUM | …os/Tests/OpenClawIPCTests/OnboardingAISetupTests.swift | 3457 | try #require(await harness.recorder.snapshot().methods.allSatisfy { $0 == "agents.list" }) | STRING |
| MEDIUM | …os/Tests/OpenClawIPCTests/OnboardingAISetupTests.swift | 3484 | #expect(harness.session.snapshotMakeCount() == 1) | STRING |
| MEDIUM | …os/Tests/OpenClawIPCTests/OnboardingAISetupTests.swift | 3668 | #expect(await (harness.recorder.snapshot()).methods == ["openclaw.setup.verify"]) | STRING |
| MEDIUM | …os/Tests/OpenClawIPCTests/OnboardingAISetupTests.swift | 3672 | #expect(await (harness.recorder.snapshot()).methods == ["openclaw.setup.verify"]) | STRING |
| MEDIUM | …os/Tests/OpenClawIPCTests/OnboardingAISetupTests.swift | 3720 | #expect(await (harness.recorder.snapshot()).methods == ["openclaw.setup.detect"]) | STRING |
| MEDIUM | …os/Tests/OpenClawIPCTests/OnboardingAISetupTests.swift | 3763 | #expect(await (harness.recorder.snapshot()).methods == ["openclaw.setup.verify", "openclaw.setup.verify"]) | STRING |
| MEDIUM | …os/Tests/OpenClawIPCTests/OnboardingAISetupTests.swift | 4096 | #expect(await (harness.recorder.snapshot()).methods == ["agents.list"]) | STRING |
| MEDIUM | …os/Tests/OpenClawIPCTests/OnboardingAISetupTests.swift | 4201 | #expect(await (harness.recorder.snapshot()).methods == ["agents.list"]) | STRING |
| MEDIUM | …os/Tests/OpenClawIPCTests/OnboardingAISetupTests.swift | 4242 | #expect(await (harness.recorder.snapshot()).methods == ["agents.list"]) | STRING |
| MEDIUM | …os/Tests/OpenClawIPCTests/OnboardingAISetupTests.swift | 4316 | #expect(harness.session.latestTask()?.snapshotSendCount() == 1) | STRING |
| MEDIUM | …os/Tests/OpenClawIPCTests/OnboardingAISetupTests.swift | 4362 | #expect(harness.session.latestTask()?.snapshotSendCount() == 1) | STRING |
| MEDIUM | …os/Tests/OpenClawIPCTests/OnboardingAISetupTests.swift | 4398 | #expect(harness.session.snapshotMakeCount() == 0) | STRING |
| 87 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | test/vitest/vitest.full-agentic.config.ts | 1 | // Vitest full agentic config wires the full agentic test shard. | COMMENT |
| MEDIUM | test/scripts/ios-release-prepare.test.ts | 1 | // iOS release prepare tests cover release-signing guardrails. | COMMENT |
| MEDIUM | CHANGELOG/2026.9.6.md | 2775 | [Telegram group and topic history](https://docs.openclaw.ai/channels/telegram/messaging#retained-group-history) now surv | CODE |
| MEDIUM | CHANGELOG/2026.9.6.md | 3583 | When an embedding failure interrupts a compatible index upgrade, you can still find previously indexed memories by keywo | CODE |
| MEDIUM | CHANGELOG/2026.6.5.md | 73 | - **PR #90317** Add Codex multi-agent config migration coverage. Thanks @ooiuuii. | CODE |
| MEDIUM | CHANGELOG/2026.8.2.md | 745 | - **PR #134300** [refactor(test): reduce compiled-worker fixture scaffolding](https://github.com/openclaw/openclaw/pull/ | CODE |
| MEDIUM | CHANGELOG/2026.5.31.md | 46 | - **PR #88178** feat(workboard): add orchestration primitives. | CODE |
| MEDIUM | CHANGELOG/2026.5.31.md | 83 | - **PR #88338** feat(workboard): persist orchestration metadata in sqlite. | CODE |
| MEDIUM | CHANGELOG/2026.5.31.md | 107 | - **PR #88408** feat: expand workboard orchestration metadata. | CODE |
| MEDIUM | CHANGELOG/2026.1.23.md | 13 | - Channels: allow per-group tool allow/deny policies across built-in + plugin channels. (#1546) Thanks @adam91holt. http | CODE |
| MEDIUM | CHANGELOG/2026.6.9.md | 61 | - **PR #92913** fix(opencode-go): register model catalog to fix context window detection. Related #92912. Thanks @kumaxs | CODE |
| MEDIUM | CHANGELOG/2026.6.2.md | 49 | - **PR #89705** fix: allowlist pending agent sqlite scaffold. Thanks @RomneyDa. | CODE |
| MEDIUM | CHANGELOG/records/2026.6.5.md | 39 | - **PR #90317** Add Codex multi-agent config migration coverage. Thanks @ooiuuii. | CODE |
| MEDIUM | CHANGELOG/records/2026.8.2.md | 608 | - **PR #134300** [refactor(test): reduce compiled-worker fixture scaffolding](https://github.com/openclaw/openclaw/pull/ | CODE |
| MEDIUM | CHANGELOG/records/2026.5.31.md | 27 | - **PR #88178** feat(workboard): add orchestration primitives. | CODE |
| MEDIUM | CHANGELOG/records/2026.5.31.md | 64 | - **PR #88338** feat(workboard): persist orchestration metadata in sqlite. | CODE |
| MEDIUM | CHANGELOG/records/2026.5.31.md | 88 | - **PR #88408** feat: expand workboard orchestration metadata. | CODE |
| MEDIUM | CHANGELOG/records/2026.6.9.md | 34 | - **PR #92913** fix(opencode-go): register model catalog to fix context window detection. Related #92912. Thanks @kumaxs | CODE |
| MEDIUM | CHANGELOG/records/2026.6.2.md | 22 | - **PR #89705** fix: allowlist pending agent sqlite scaffold. Thanks @RomneyDa. | CODE |
| MEDIUM | .agents/skills/technical-documentation/SKILL.md | 45 | ## Sub-agent orchestration guidance | COMMENT |
| MEDIUM | .agents/skills/openclaw-ghsa-maintainer/SKILL.md | 10 | ## Respect advisory guardrails | COMMENT |
| MEDIUM | qa/scenarios/index.yaml | 48 | # - `core`: default Codex-vs-OpenClaw gate coverage for agentic behavior, | COMMENT |
| MEDIUM | qa/scenarios/memory/memory-recall.yaml | 28 | # in `extensions/qa-lab/src/agentic-parity-report.ts`. Positive-tone | COMMENT |
| MEDIUM | …narios/agents/subagent-completion-direct-fallback.yaml | 261 | # Denying outbound messaging must not disable the parent's orchestration tools. | COMMENT |
| MEDIUM | docs/releases/2026.9.2.md | 42 | - Apply lean tools consistently during managed local-model setup and identify which verification check timed out ([#1387 | CODE |
| MEDIUM | docs/releases/2026.9.2.md | 2596 | Codex [turn usage](/reference/token-use#how-to-see-current-token-usage) now adds the reported counts from every unique c | CODE |
| MEDIUM | docs/releases/2026.9.6.md | 2408 | [Telegram group and topic history](/channels/telegram/messaging#retained-group-history) now survives restarts and `/new` | CODE |
| MEDIUM | docs/releases/2026.9.6.md | 3076 | When an embedding failure interrupts a compatible index upgrade, you can still find previously indexed memories by keywo | CODE |
| MEDIUM | docs/plugins/memory-lancedb.md | 413 | ### Unsupported embedding model | COMMENT |
| MEDIUM | docs/ci/runners.md | 335 | Configurable heavy lanes are `build-artifacts` and `android`. The macOS Swift and iOS build jobs use GitHub-hosted `xcod | CODE |
| MEDIUM | docs/providers/openai.md | 133 | - <a id="strict-agentic-gpt-mode" />[Strict-agentic GPT mode](/providers/openai/advanced#strict-agentic-gpt-mode) | CODE |
| MEDIUM | docs/providers/bedrock.md | 418 | You can apply [Amazon Bedrock Guardrails](https://docs.aws.amazon.com/bedrock/latest/userguide/guardrails.html) | CODE |
| MEDIUM | docs/providers/cerebras.md | 124 | Fresh onboarding follows Cerebras's current [Gemma 4 recommendation](https://www.cerebras.ai/blog/gemma-4-on-cerebras-th | CODE |
| MEDIUM⚡ | docs/start/teams.md | 25 | A gateway is one trust domain. Everyone who can message a tool-enabled agent shares that agent's delegated tool authorit | CODE |
| MEDIUM | docs/start/why-openclaw/provenance.md | 12 | Related research provides context, not validation of OpenClaw's implementation. [Generative Agents](https://arxiv.org/ab | CODE |
| MEDIUM | docs/cli/plugins.md | 101 | - <a id="feature-scaffold-and-artifacts" />[Feature scaffold and artifacts](/cli/plugins/authoring#feature-scaffold-and- | CODE |
| MEDIUM | docs/cli/plugins.md | 102 | - <a id="provider-scaffold" />[Provider scaffold](/cli/plugins/authoring#provider-scaffold) | CODE |
| MEDIUM | docs/cli/agents.md | 168 | - Deletion removes the agent's bindings but not the channel accounts they routed, and it removes only bindings that targ | CODE |
| MEDIUM | docs/cli/plugins/authoring.md | 47 | ### Feature scaffold and artifacts | COMMENT |
| MEDIUM | docs/cli/plugins/authoring.md | 72 | ### Provider scaffold | COMMENT |
| MEDIUM | docs/concepts/context.md | 104 | ## What counts toward the context window | COMMENT |
| MEDIUM | docs/concepts/session-tool.md | 109 | This is structured history, not the plain-text rendering used by [`/subagents log`](/tools/subagents#slash-command). `se | CODE |
| MEDIUM | docs/concepts/session-tool.md | 359 | ## Status and orchestration helpers | COMMENT |
| MEDIUM | docs/concepts/delegate-architecture.md | 256 | The login writes the delegate's SQLite auth store at `~/.openclaw/agents/delegate/agent/openclaw-agent.sqlite`; its loca | CODE |
| MEDIUM | docs/automation/cron-jobs/managing-jobs.md | 138 | # Agent selection (multi-agent setups) | COMMENT |
| MEDIUM | docs/reference/token-use.md | 57 | ## What counts in the context window | COMMENT |
| MEDIUM | …s/reference/database-schemas/integrity-and-recovery.md | 562 | ### Startup on multi-agent hosts | COMMENT |
| MEDIUM | docs/gateway/configuration-reference.md | 56 | ## Agent defaults, multi-agent, sessions, and messages | COMMENT |
| MEDIUM | docs/gateway/config-agents.md | 86 | - <a id="multi-agent-routing" />[Multi-agent routing](/gateway/config-agents/entries-and-multi-agent#multi-agent-routing | CODE |
| MEDIUM | docs/gateway/configuration.md | 151 | - <a id="configure-multi-agent-routing" />[Configure multi-agent routing](/gateway/configuration/common-tasks#configure- | CODE |
| MEDIUM | docs/gateway/configuration/common-tasks.md | 390 | See [Multi-Agent](/concepts/multi-agent) and [full reference](/gateway/config-agents/entries-and-multi-agent#multi-a | CODE |
| MEDIUM | docs/gateway/security/trust-model.md | 20 | - Inside one Gateway, authenticated operator access is a trusted control-plane role, not a per-user tenant role. [Named | CODE |
| MEDIUM | docs/gateway/security/tool-permissions.md | 56 | These controls guard message mutations such as sends, replies, edits, deletes, and thread creation. They do not restrict | CODE |
| MEDIUM | docs/gateway/security/tool-permissions.md | 131 | ## Per-agent access profiles (multi-agent) | COMMENT |
| MEDIUM | docs/gateway/security/index.md | 114 | - <a id="per-agent-access-profiles-(multi-agent)" /><a id="per-agent-access-profiles-multi-agent" />[Per-agent access pr | CODE |
| MEDIUM | docs/channels/feishu.md | 59 | - <a id="multi-agent-routing" />[Multi-agent routing](/channels/feishu/advanced-configuration#multi-agent-routing) | CODE |
| MEDIUM | extensions/qa-lab/src/agentic-parity-report.test.ts | 1 | // Qa Lab tests cover agentic parity report plugin behavior. | COMMENT |
| MEDIUM | extensions/memory-wiki/src/vault.ts | 120 | // Missing scaffold means a new/recreated vault, even when its parent directory survived. | COMMENT |
| MEDIUM | extensions/memory-wiki/src/vault.ts | 156 | // lifecycle refresh validate source hashes; scaffold/generation replacement retires it. | COMMENT |
| MEDIUM | .github/actions/setup-node-env/action.yml | 363 | # The warmer compiles build tools and test orchestration into one seed. | COMMENT |
| 19 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .crabbox.yaml | 1 | profile: openclaw-check | COMMENT |
| LOW | docker-compose.yml | 41 | OPENCLAW_OTEL_PRELOADED: ${OPENCLAW_OTEL_PRELOADED:-} | COMMENT |
| LOW | ui/src/app/stale-chunk-reload.ts | 1 | // Stale hashed-chunk recovery for lazy routes and the entry stylesheet. | COMMENT |
| LOW | ui/src/styles/corner-shape.browser.test.ts | 161 | ]; | COMMENT |
| LOW | ui/src/test-helpers/lit-settle.ts | 1 | type UpdatingElement = { updateComplete: Promise<boolean> }; | COMMENT |
| LOW | ui/src/e2e/chat-stream-runtime-budgets.e2e.test.ts | 21 | // the animation-frame render queue (ui/src/pages/chat/chat-state-render.ts), | COMMENT |
| LOW | ui/src/e2e/chat-stream-runtime-budgets.e2e.test.ts | 41 | const MAX_BURST_INVALIDATIONS = 180; | COMMENT |
| LOW | ui/src/pages/chat/chat-thread-grouping.ts | 541 | // Partition the answer's output segment, including work after the last answer. | COMMENT |
| LOW | …pages/chat/components/chat-sidebar-rtl.browser.test.ts | 61 | // The quote bar, the list indent and the task-list checkbox gap are the | COMMENT |
| LOW | crates/openclaw-node-host/src/runtime.rs | 481 | if let Some(tracking) = tracking.as_mut() { | COMMENT |
| LOW | crates/openclaw-node-host/src/sidecar_handshake.rs | 161 | if result.is_err() { | COMMENT |
| LOW | crates/openclaw-node-host/src/duplex.rs | 161 | /// Receive the next ordered `payloadJSON` frame. | COMMENT |
| LOW | crates/openclaw-node-host/src/lifecycle.rs | 181 | self.shutdown_grace = grace; | COMMENT |
| LOW | test/non-isolated-runner.ts | 521 | // so a lease release never overlaps later work. Like the file drain, this waits | COMMENT |
| LOW | test/jsdom-custom-elements.ts | 1 | // Jsdom custom elements keeps shared-worker element registrations in step with the module graph. | COMMENT |
| LOW | test/vitest/vitest.ui-e2e.sequencer.ts | 1 | // Duration-weighted sharding keeps serial Control UI E2E runners from | COMMENT |
| LOW | config/env-var-count-budget.txt | 1 | # Distinct OPENCLAW_* names in production source under src, packages, and extensions. | COMMENT |
| LOW | qa/scenarios/index.yaml | 1 | title: OpenClaw QA Scenario Pack | COMMENT |
| LOW | qa/scenarios/index.yaml | 21 | # `surface.feature`, with dashes allowed inside each segment | COMMENT |
| LOW | qa/scenarios/index.yaml | 41 | # `extended`, or `soak`; provider/model/auth/channel eligibility stays in | COMMENT |
| LOW | qa/scenarios/index.yaml | 61 | # soak | COMMENT |
| LOW | qa/scenarios/memory/memory-recall.yaml | 1 | title: Memory recall after context switch | COMMENT |
| LOW | qa/scenarios/agents/subagent-handoff.yaml | 61 | - throw: | COMMENT |
| LOW | extensions/discord/src/monitor/thread-session-close.ts | 21 | const normalizedThreadId = normalizeOptionalLowercaseString(threadId) ?? ""; | COMMENT |
| LOW | extensions/feishu/doctor-contract-api.ts | 1 | // Feishu API module exposes the plugin doctor contract. | COMMENT |
| LOW | extensions/oc-path/src/oc-path/jsonl/parse.ts | 21 | // Detect the line-ending convention from the input. Windows-authored | COMMENT |
| LOW | extensions/mxc/src/windows-env.ts | 1 | // Windows process environment helpers for the MXC ProcessContainer backend. | COMMENT |
| LOW | extensions/mxc/src/windows-command.ts | 1 | // Windows command-line construction and cmd.exe quoting for the MXC | COMMENT |
| LOW | extensions/msteams/src/delivery-trace.test.ts | 1 | // MSTeams delivery trace goldens: replayable wire-level lifecycle recordings. | COMMENT |
| LOW | extensions/reef/src/owner-notice.ts | 421 | const elapsedMs = Date.now() - overdue.sentAt; | COMMENT |
| LOW | extensions/reef/src/transport.ts | 21 | // Relay envelopes are capped at 48 KiB. Leave room for inbox metadata while | COMMENT |
| LOW | extensions/googlechat/src/auth.proof.test.ts | 1 | // Proof: verifyGoogleChatRequest → fetchChatCerts through the REAL | COMMENT |
| LOW | extensions/slack/http-routes-api.ts | 1 | // Narrow entry point for registerSlackPluginHttpRoutes — avoids pulling in | COMMENT |
| LOW | extensions/slack/src/delivery-trace.test.ts | 1 | import type { WebClient } from "@slack/web-api"; | COMMENT |
| LOW | extensions/mattermost/channel-plugin-runtime.ts | 1 | // Private runtime-bearing plugin export for the bundled Mattermost entry. | COMMENT |
| LOW | extensions/imessage/src/monitor/inbound-dedupe.ts | 1 | // iMessage age fence. This is not replay dedupe: Apple can write never-seen | COMMENT |
| LOW | extensions/matrix/src/delivery-trace.test.ts | 1 | // Matrix delivery trace goldens: replayable wire-level lifecycle recordings. | COMMENT |
| LOW | scripts/create-dmg.sh | 1 | #!/bin/bash | COMMENT |
| LOW | scripts/run-opengrep.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | scripts/ios-configure-signing.sh | 81 | watch_app_profile="${OPENCLAW_IOS_WATCH_APP_PROFILE:-}" | COMMENT |
| LOW | scripts/run-openclaw-podman.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | scripts/update-gateway.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | scripts/notarize-mac-artifact.sh | 1 | #!/bin/bash | COMMENT |
| LOW | scripts/auth-monitor.sh | 1 | #!/bin/bash | COMMENT |
| LOW | scripts/podman/setup.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | scripts/docker/setup.sh | 781 | COMMENT | |
| LOW | scripts/k8s/deploy.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | scripts/e2e/multi-node-update-docker.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | …penai-responses-client.continuation-cache.live.test.ts | 1 | import type { AssistantMessage, Context, Model } from "@openclaw/llm-core"; | COMMENT |
| LOW | .github/workflows/labeler.yml | 221 | // let mergedCount = 0; | COMMENT |
| LOW | .github/workflows/labeler.yml | 641 | return "maintainer"; | COMMENT |
| LOW | .github/workflows/labeler.yml | 921 | }); | COMMENT |
| LOW | .github/workflows/labeler.yml | 941 | // if (mergedCount >= experiencedThreshold) { | COMMENT |
| LOW | .github/actions/setup-node-env/install-dependencies.sh | 101 | # Install and frozen reconciliation own dependency writes. Keep later | COMMENT |
| LOW | .github/actions/setup-node-env/action.yml | 161 | - name: Normalize container toolcache | COMMENT |
| LOW | …/Tests/OpenClawIPCTests/DashboardExperienceTests.swift | 41 | manager.hideWindows() | COMMENT |
| LOW | …Tests/OpenClawIPCTests/DashboardHTTPFixtureTests.swift | 21 | #expect(url.host == "127.0.0.1") | COMMENT |
| LOW | …Tests/OpenClawIPCTests/AppStateRemoteConfigTests.swift | 281 | #expect(state.remoteToken == "new-token") | COMMENT |
| LOW | …Tests/OpenClawIPCTests/AppStateRemoteConfigTests.swift | 741 | ]) | COMMENT |
| LOW | …s/Tests/OpenClawIPCTests/GatewayEnvironmentTests.swift | 1 | import Foundation | COMMENT |
| 133 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH⚡ | test/scripts/pr-darwin-process-identity.test.py | 240 | 'if { : <&9; } 2>/dev/null; then exit 8; fi') | CODE |
| HIGH | apps/linux/tests/test_desktop_sharing_reports.py | 27 | return new Promise((resolve, reject) => requests.push({url, options, resolve, reject})); | CODE |
| HIGH | apps/linux/tests/test_desktop_sharing_reports.py | 57 | else assert.deepEqual(outcome, {value: undefined}); | CODE |
| HIGH | apps/linux/tests/test_desktop_sharing_reports.py | 62 | unsupported: null, trustedClicks: 0, retainedAuthority: false, staleWriteRejected: null, | CODE |
| HIGH | apps/linux/tests/remote_connection_smoke.py | 84 | auth: auth ?? null, | CODE |
| HIGH | apps/linux/tests/inline_browser.py | 55 | assert(reply && reply.ok === true, message.type + ': ' + (reply?.error ?? 'invalid reply')); | CODE |
| HIGH | apps/linux/tests/inline_browser.py | 59 | await until(() => state().tabs.some(tab => tab.id === tabId && tab.url === url(page) | CODE |
| HIGH | apps/linux/tests/inline_browser.py | 73 | assert(result.cssWidth > 0 && result.cssHeight > 0, 'Snapshot CSS size'); | CODE |
| HIGH | apps/linux/tests/inline_browser.py | 88 | assert(duplicate.tabId === tabId && state().tabs.length === 1, 'Same-session URL dedupe'); | CODE |
| HIGH⚡ | apps/linux/tests/inline_browser.py | 142 | assert(state().tabs.length === 1 && state().tabs[0].id === tabId | CODE |
| HIGH⚡ | apps/linux/tests/inline_browser.py | 143 | && state().tabs[0].sessionKey === sessionKey && state().tabs[0].url === url('two'), | CODE |
| HIGH⚡ | apps/linux/tests/inline_browser.py | 150 | assert(state().tabs.length === 1 && state().tabs[0].id === tabId | CODE |
| HIGH⚡ | apps/linux/tests/inline_browser.py | 151 | && state().tabs[0].sessionKey === sessionKey && state().tabs[0].url === url('two'), | CODE |
| HIGH⚡ | apps/linux/tests/desktop_sharing.py | 32 | const instance=crypto.randomUUID();let unsupported=null;let trustedClicks=0; | CODE |
| HIGH⚡ | apps/linux/tests/desktop_sharing.py | 33 | let retainedAuthority=false;let staleWriteRejected=null; | CODE |
| HIGH⚡ | apps/linux/tests/desktop_sharing.py | 37 | async function report(error=null){ | CODE |
| HIGH | apps/linux/tests/desktop_sharing.py | 61 | try{await post({type:'set',key,value:true});unsupported.push({key,rejected:false});} | CODE |
| HIGH | apps/linux/tests/desktop_sharing.py | 62 | catch{unsupported.push({key,rejected:true});} | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …ts/skills/openclaw-secret-scanning-maintainer/SKILL.md | 44 | ## Step 1: Identify | COMMENT |
| LOW | …ts/skills/openclaw-secret-scanning-maintainer/SKILL.md | 79 | ## Step 2: Decide (Agent) | COMMENT |
| LOW | …ts/skills/openclaw-secret-scanning-maintainer/SKILL.md | 98 | ## Step 3: Redact | COMMENT |
| LOW | …ts/skills/openclaw-secret-scanning-maintainer/SKILL.md | 112 | ## Step 4: Purge Edit History | COMMENT |
| LOW | …ts/skills/openclaw-secret-scanning-maintainer/SKILL.md | 168 | ## Step 5: Notify | COMMENT |
| LOW | …ts/skills/openclaw-secret-scanning-maintainer/SKILL.md | 189 | ## Step 6: Resolve | COMMENT |
| LOW | …ts/skills/openclaw-secret-scanning-maintainer/SKILL.md | 199 | ## Step 7: Summary | COMMENT |
| LOW | .agents/skills/tag-duplicate-prs-issues/SKILL.md | 186 | ## Step 1: Read The Target | COMMENT |
| LOW | .agents/skills/tag-duplicate-prs-issues/SKILL.md | 213 | ## Step 2: Search Broadly With Gitcrawl | COMMENT |
| LOW | .agents/skills/tag-duplicate-prs-issues/SKILL.md | 250 | ## Step 3: Use Live GitHub Search For Gaps | COMMENT |
| LOW | .agents/skills/tag-duplicate-prs-issues/SKILL.md | 264 | ## Step 4: Decide The Outcome | COMMENT |
| LOW | .agents/skills/tag-duplicate-prs-issues/SKILL.md | 282 | ## Step 5: Reuse Or Create One prtags Group | COMMENT |
| LOW | .agents/skills/tag-duplicate-prs-issues/SKILL.md | 332 | ## Step 6: Ensure The Annotation Fields Exist | COMMENT |
| LOW | .agents/skills/tag-duplicate-prs-issues/SKILL.md | 355 | ## Step 7: Save The Maintainer Judgment In prtags | COMMENT |
| LOW | .agents/skills/tag-duplicate-prs-issues/SKILL.md | 389 | ## Step 8: Let prtags Sync The Group Comment | COMMENT |
| LOW | docs/plugins/sdk-provider-plugins.md | 143 | ### Step 1: Package and manifest | COMMENT |
| LOW | docs/plugins/sdk-provider-plugins.md | 430 | ### Step 5: Add extra capabilities | COMMENT |
| LOW | docs/plugins/sdk-provider-plugins.md | 447 | ### Step 6: Test | COMMENT |
| LOW⚡ | docs/start/teams.md | 29 | ## Step 1: Give the team access to the Gateway | COMMENT |
| LOW⚡ | docs/start/teams.md | 39 | ## Step 2: Connect the team chat | COMMENT |
| LOW⚡ | docs/start/teams.md | 64 | ## Step 3: Sign the team in to the Control UI | COMMENT |
| LOW⚡ | docs/start/teams.md | 70 | ## Step 4: Work in shared sessions | COMMENT |
| LOW⚡ | docs/start/teams.md | 80 | ## Step 5: Bound what each person can do | COMMENT |
| LOW | docs/gateway/cloudflare-access.md | 38 | ## Step 1: Route the tunnel to loopback | COMMENT |
| LOW | docs/gateway/cloudflare-access.md | 54 | ## Step 2: Protect the hostname with Access | COMMENT |
| LOW | docs/gateway/cloudflare-access.md | 144 | ## Step 3: Trust those headers in the Gateway | COMMENT |
| LOW | docs/gateway/cloudflare-access.md | 180 | ## Step 4: Decide how nodes and workers get in | COMMENT |
| LOW | docs/gateway/cloudflare-access.md | 212 | ## Step 5: Connect each client | COMMENT |
| LOW | docs/gateway/remote.md | 305 | #### Step 1: add SSH config | COMMENT |
| LOW⚡ | docs/gateway/remote.md | 319 | #### Step 2: copy SSH key (one-time) | COMMENT |
| LOW⚡ | docs/gateway/remote.md | 325 | #### Step 3: configure the gateway token | COMMENT |
| LOW⚡ | docs/gateway/remote.md | 333 | #### Step 4: create the LaunchAgent | COMMENT |
| LOW | docs/gateway/remote.md | 358 | #### Step 5: load the LaunchAgent | COMMENT |
| LOW | docs/channels/msteams/setup.md | 142 | ### Step 1: Create Azure Bot | COMMENT |
| LOW⚡ | docs/channels/msteams/setup.md | 162 | ### Step 2: Get credentials | COMMENT |
| LOW⚡ | docs/channels/msteams/setup.md | 168 | ### Step 3: Configure messaging endpoint | COMMENT |
| LOW⚡ | docs/channels/msteams/setup.md | 175 | ### Step 4: Enable Teams channel | COMMENT |
| LOW⚡ | docs/channels/msteams/setup.md | 181 | ### Step 5: Build Teams app manifest | COMMENT |
| LOW⚡ | docs/channels/msteams/setup.md | 190 | ### Step 6: Configure OpenClaw | COMMENT |
| LOW | docs/channels/msteams/setup.md | 208 | ### Step 7: Run the gateway | COMMENT |
| LOW | …lack/skills/block-kit/references/official-block-kit.md | 89 | ## Step 1: Determine the Target Surface | COMMENT |
| LOW | …lack/skills/block-kit/references/official-block-kit.md | 107 | ## Step 2: Understand What to Build | COMMENT |
| LOW | …lack/skills/block-kit/references/official-block-kit.md | 123 | ## Step 3: Plan the Block Layout | COMMENT |
| LOW | …lack/skills/block-kit/references/official-block-kit.md | 152 | ## Step 4: Generate the Block Kit JSON | COMMENT |
| LOW | …lack/skills/block-kit/references/official-block-kit.md | 175 | ## Step 5: Validate | COMMENT |
| LOW | …lack/skills/block-kit/references/official-block-kit.md | 234 | ## Step 6: Deliver the Final Output | COMMENT |
| LOW | …lack/skills/block-kit/references/official-block-kit.md | 248 | ## Step 7: Iterate | COMMENT |
| LOW | scripts/install.sh | 3380 | # Step 1: Node.js. macOS package-manager branches install Homebrew lazily | COMMENT |
| LOW⚡ | scripts/install.sh | 3416 | # Step 3: Git (required for npm installs that may fetch from git or apply patches) | COMMENT |
| LOW⚡ | scripts/install.sh | 3421 | # Step 4: npm permissions (Linux) | COMMENT |
| LOW⚡ | scripts/install.sh | 3424 | # Step 5: OpenClaw | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …nts/skills/telegram-e2e-userbot/scripts/user-driver.py | 1642 | except DriverError: | CODE |
| HIGH | scripts/swift-build-cache-metadata.py | 153 | except FileNotFoundError: | CODE |
| HIGH | .github/actions/git-owner/owner.py | 173 | except PermissionError: | CODE |
| HIGH | .github/actions/git-owner/owner.py | 703 | except BaseException: | CODE |
| HIGH | .github/actions/git-owner/owner.py | 708 | except BaseException: | CODE |
| HIGH | .github/actions/publish-generated-pr/policy.py | 351 | except GitFailure: | CODE |
| HIGH | apps/linux/tests/first_run.py | 544 | except (ProcessLookupError, subprocess.TimeoutExpired): | CODE |
| HIGH | apps/linux/tests/first_run.py | 549 | except ProcessLookupError: | CODE |
| HIGH | apps/linux/tests/remote_connection_smoke.py | 288 | except GLib.Error: | CODE |
| HIGH | apps/linux/tests/remote_connection_smoke.py | 496 | except (ProcessLookupError, subprocess.TimeoutExpired): | CODE |
| HIGH | apps/linux/tests/remote_connection_smoke.py | 501 | except ProcessLookupError: | CODE |
| HIGH | apps/linux/tests/inline_browser.py | 309 | except Exception: | CODE |
| HIGH | apps/linux/tests/desktop_sharing.py | 382 | except ProcessLookupError: | CODE |
| HIGH | apps/linux/tests/quick_chat.py | 431 | except (BrokenPipeError, ConnectionResetError, EOFError, socket.timeout): | CODE |
| HIGH | apps/linux/tests/quick_chat.py | 371 | except OSError: | CODE |
| HIGH | apps/linux/omarchy/test_bridge.py | 76 | except ProcessLookupError: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …ests/OpenClawIPCTests/GatewayProcessManagerTests.swift | 0 | pragma user_version = 1; create table schema_meta (meta_key text primary key, role text, schema_version integer); insert | STRING |
| HIGH | …penClawIPCTests/ManagedNodeGatewayMigrationTests.swift | 0 | pragma user_version = 1; create table schema_meta (meta_key text primary key, role text, schema_version integer); insert | STRING |
| HIGH | …wNativeStateTests/OpenClawNativeStateSQLiteTests.swift | 0 | pragma user_version = 1; create table schema_meta (meta_key text primary key, role text, schema_version integer); insert | STRING |
| HIGH | …/Tests/OpenClawIPCTests/WebChatSwiftUISmokeTests.swift | 0 | {"sessionkey":"\(sessionkey)","sessionid":null,"messages":[],"thinkinglevel":"off"} | STRING |
| HIGH | …/Tests/OpenClawIPCTests/QuickChatControllerTests.swift | 0 | {"sessionkey":"\(sessionkey)","sessionid":null,"messages":[],"thinkinglevel":"off"} | STRING |
| HIGH | …enClawKitTests/ChatViewModelSessionDeletionTests.swift | 0 | {"sessionkey":"\(sessionkey)","sessionid":null,"messages":[],"thinkinglevel":"off"} | STRING |
| HIGH | …/test/java/ai/openclaw/app/GatewayBootstrapAuthTest.kt | 0 | {"type":"res","id":"$id","ok":true,"payload":$payload} | STRING |
| HIGH | …test/java/ai/openclaw/app/voice/TalkModeManagerTest.kt | 0 | {"type":"res","id":"$id","ok":true,"payload":$payload} | STRING |
| HIGH | …va/ai/openclaw/app/gateway/GatewaySessionInvokeTest.kt | 0 | {"type":"res","id":"$id","ok":true,"payload":$payload} | STRING |
| HIGH | …/java/ai/openclaw/app/wear/NodeRuntimeWearProxyTest.kt | 0 | {"type":"res","id":"$id","ok":true,"payload":$payload} | STRING |
| HIGH | …/openclaw/app/chat/ChatControllerModelSelectionTest.kt | 0 | {"sessionkey":"main","agentid":"main","phase":"message","session":{"key":"main","modelselectionlocked":true,"agentruntim | STRING |
| HIGH | …openclaw/app/chat/ChatControllerCommandControlsTest.kt | 0 | {"sessionkey":"main","agentid":"main","phase":"message","session":{"key":"main","modelselectionlocked":true,"agentruntim | STRING |
| HIGH | …/openclaw/app/chat/ChatControllerSessionActionsTest.kt | 0 | {"sessionkey":"main","agentid":"main","phase":"message","session":{"key":"main","modelselectionlocked":true,"agentruntim | STRING |
| HIGH | …i/openclaw/app/chat/ChatFullMessageCancellationTest.kt | 0 | {"sessionkey":"main","agentid":"main","phase":"message"} | STRING |
| HIGH | …penclaw/app/chat/ChatControllerReconnectRestoreTest.kt | 0 | {"sessionkey":"main","agentid":"main","phase":"message"} | STRING |
| HIGH | …ai/openclaw/app/chat/ChatControllerStreamReplayTest.kt | 0 | {"sessionkey":"main","agentid":"main","phase":"message"} | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/scripts/parallels-exec.test.py | 340 | CODE | |
| LOW | test/scripts/parallels-exec.test.py | 352 | CODE | |
| LOW | test/scripts/parallels-exec.test.py | 371 | CODE | |
| LOW | test/scripts/parallels-exec.test.py | 404 | CODE | |
| LOW | test/scripts/parallels-exec.test.py | 443 | CODE | |
| LOW | …kills/telegram-e2e-userbot/scripts/user-record.test.py | 123 | CODE | |
| LOW | …kills/telegram-e2e-userbot/scripts/user-record.test.py | 150 | CODE | |
| LOW | …kills/telegram-e2e-userbot/scripts/user-record.test.py | 168 | CODE | |
| LOW | …kills/telegram-e2e-userbot/scripts/user-record.test.py | 199 | CODE | |
| LOW | …nts/skills/telegram-e2e-userbot/scripts/user-record.py | 406 | CODE | |
| LOW | …nts/skills/telegram-e2e-userbot/scripts/user-record.py | 611 | CODE | |
| LOW | …nts/skills/telegram-e2e-userbot/scripts/user-record.py | 134 | CODE | |
| LOW | …nts/skills/telegram-e2e-userbot/scripts/user-record.py | 259 | CODE | |
| LOW | …nts/skills/telegram-e2e-userbot/scripts/user-driver.py | 168 | CODE | |
| LOW | …nts/skills/telegram-e2e-userbot/scripts/user-driver.py | 500 | CODE | |
| LOW | …nts/skills/telegram-e2e-userbot/scripts/user-driver.py | 599 | CODE | |
| LOW | …kills/telegram-e2e-userbot/scripts/user-driver.test.py | 249 | CODE | |
| LOW | …kills/telegram-e2e-userbot/scripts/user-driver.test.py | 514 | CODE | |
| LOW | …kills/telegram-e2e-userbot/scripts/user-driver.test.py | 836 | CODE | |
| LOW | …kills/telegram-e2e-userbot/scripts/user-driver.test.py | 1008 | CODE | |
| LOW | …kills/telegram-e2e-userbot/scripts/user-driver.test.py | 1040 | CODE | |
| LOW | …kills/telegram-e2e-userbot/scripts/user-driver.test.py | 1151 | CODE | |
| LOW | extensions/onnx/scripts/export-gliclass-instruct.py | 80 | CODE | |
| LOW | scripts/materialize-mac-runtime.py | 57 | CODE | |
| LOW | scripts/materialize-mac-runtime.py | 99 | CODE | |
| LOW | scripts/materialize-mac-runtime.py | 171 | CODE | |
| LOW | scripts/materialize-mac-runtime.py | 267 | CODE | |
| LOW | scripts/materialize-mac-runtime.py | 121 | CODE | |
| LOW | scripts/compare-release-evidence-zip.py | 13 | CODE | |
| LOW | scripts/ios-access-restart-proof.py | 46 | CODE | |
| LOW | scripts/release-telegram-candidate-archive.py | 199 | CODE | |
| LOW | scripts/release-telegram-candidate-archive.py | 428 | CODE | |
| LOW | scripts/swift-build-cache-metadata.py | 51 | CODE | |
| LOW | scripts/swift-build-cache-metadata.py | 106 | CODE | |
| LOW | scripts/lib/mac-notarization-recovery.py | 42 | CODE | |
| LOW | scripts/lib/mac-native-inventory.py | 210 | CODE | |
| LOW | scripts/lib/mac-native-inventory.py | 298 | CODE | |
| LOW | scripts/lib/mac-native-inventory.py | 94 | CODE | |
| LOW | .github/actions/git-owner/owner.py | 211 | CODE | |
| LOW | .github/actions/git-owner/owner.py | 319 | CODE | |
| LOW | .github/actions/git-owner/owner.py | 582 | CODE | |
| LOW | skills/model-usage/scripts/model_usage.py | 156 | CODE | |
| LOW | skills/skill-creator/scripts/package_skill.py | 28 | CODE | |
| LOW | apps/macos/scripts/audit-async-sleep-frames.py | 140 | CODE | |
| LOW | apps/macos/scripts/audit-async-sleep-frames.py | 32 | CODE | |
| LOW | apps/linux/tests/packaged_runtime_smoke.py | 337 | CODE | |
| LOW | apps/linux/tests/packaged_runtime_smoke.py | 451 | CODE | |
| LOW | apps/linux/tests/packaged_runtime_smoke.py | 679 | CODE | |
| LOW | apps/linux/tests/desktop_sharing_cli.py | 124 | CODE | |
| LOW | apps/linux/tests/first_run.py | 58 | CODE | |
| LOW | apps/linux/tests/first_run.py | 242 | CODE | |
| LOW | apps/linux/tests/first_run.py | 360 | CODE | |
| LOW | apps/linux/tests/first_run.py | 93 | CODE | |
| LOW | apps/linux/tests/remote_connection_smoke.py | 148 | CODE | |
| LOW | apps/linux/tests/remote_connection_smoke.py | 257 | CODE | |
| LOW | apps/linux/tests/remote_connection_smoke.py | 325 | CODE | |
| LOW | apps/linux/tests/remote_connection_smoke.py | 422 | CODE | |
| LOW | apps/linux/tests/inline_browser.py | 279 | CODE | |
| LOW | apps/linux/tests/inline_browser.py | 485 | CODE | |
| LOW | apps/linux/tests/inline_browser.py | 515 | CODE | |
| 9 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/scripts/ci-git-owner.test.ts | 1136 | except Exception: | CODE |
| LOW | test/scripts/ios-lifecycle-workflow.test.ts | 863 | except Exception as failure: | CODE |
| LOW | …telegram-e2e-userbot/scripts/telegram-binding-forum.py | 162 | except Exception as error: | CODE |
| LOW | scripts/materialize-mac-runtime.py | 407 | except Exception as error: | CODE |
| LOW | scripts/ios-team-id.sh | 114 | except Exception: | CODE |
| LOW | scripts/ios-team-id.sh | 167 | except Exception: | CODE |
| LOW | scripts/ios-access-restart-proof.py | 232 | except Exception as error: | CODE |
| MEDIUM | scripts/ios-access-restart-proof.py | 156 | def process_exists(pid): | CODE |
| LOW | scripts/docker/setup.sh | 89 | except Exception: | CODE |
| LOW | scripts/e2e/parallels/parallels-exec.py | 135 | except Exception as error: | CODE |
| LOW | scripts/e2e/parallels/parallels-exec.py | 262 | except Exception as error: | CODE |
| MEDIUM | scripts/e2e/parallels/parallels-exec.py | 132 | def cleanup(self, function, *args): | CODE |
| MEDIUM | scripts/e2e/parallels/parallels-exec.py | 231 | def main() -> int: | CODE |
| LOW | scripts/e2e/parallels/npm-update-scripts.ts | 291 | except Exception: | CODE |
| LOW⚡ | scripts/e2e/parallels/windows-git.ts | 50 | except Exception: | CODE |
| LOW | .github/workflows/ci.yml | 561 | except Exception: | CODE |
| LOW | .github/workflows/ci.yml | 990 | except Exception as error: | CODE |
| MEDIUM | .github/workflows/ci.yml | 445 | def group_signal(pgid, signum, deadline): | CODE |
| LOW | .github/actions/git-owner/owner.py | 264 | except Exception: | STRING |
| LOW | .github/actions/git-owner/owner.py | 693 | except Exception as error: | STRING |
| MEDIUM | .github/actions/git-owner/owner.py | 148 | def group_signal(pgid, signum, deadline): | CODE |
| LOW | skills/model-usage/scripts/model_usage.py | 92 | except Exception: | CODE |
| LOW | skills/model-usage/scripts/model_usage.py | 284 | except Exception as exc: | CODE |
| LOW | skills/skill-creator/scripts/package_skill.py | 114 | except Exception as e: | CODE |
| LOW | skills/python-debugpy/SKILL.md | 48 | except Exception: | CODE |
| MEDIUM | apps/macos/Sources/OpenClawMacCLI/ConnectCommand.swift | 216 | print("Error: \(error)") | STRING |
| LOW | apps/linux/tests/packaged_runtime_smoke.py | 906 | except Exception as error: | STRING |
| LOW | apps/linux/tests/desktop_sharing_cli.py | 175 | except Exception: | CODE |
| MEDIUM | apps/linux/tests/desktop_sharing_cli.py | 26 | def identity(pid): | CODE |
| LOW | apps/linux/tests/first_run.py | 564 | except Exception as error: | CODE |
| MEDIUM | apps/linux/tests/first_run.py | 242 | def drive(binary, *, remote_only, local_start_failure, inline_browser, window_ch | CODE |
| LOW | apps/linux/tests/remote_connection_smoke.py | 512 | except Exception as error: | CODE |
| MEDIUM | apps/linux/tests/remote_connection_smoke.py | 325 | def drive(binary, source, credential, label, artifacts): | CODE |
| LOW | apps/linux/tests/inline_browser.py | 309 | except Exception: | CODE |
| LOW | apps/linux/tests/quick_chat.py | 433 | except Exception as error: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | extensions/msteams/src/file-consent.test.ts | 62 | // ─── validateConsentUploadUrl ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | extensions/msteams/src/file-consent.test.ts | 126 | // ─── CONSENT_UPLOAD_HOST_ALLOWLIST ─────────────────────────────────────────── | COMMENT |
| MEDIUM | extensions/msteams/src/file-consent.test.ts | 158 | // ─── uploadToConsentUrl (integration with validation) ──────────────────────── | COMMENT |
| MEDIUM | extensions/msteams/src/attachments/shared.test.ts | 124 | // ─── safeFetch ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ensions/mattermost/src/mattermost/interactions.test.ts | 97 | // ── HMAC token management ──────────────────────────────────────────── | COMMENT |
| MEDIUM | …ensions/mattermost/src/mattermost/interactions.test.ts | 118 | // ── Token generation / verification ────────────────────────────────── | COMMENT |
| MEDIUM | …ensions/mattermost/src/mattermost/interactions.test.ts | 232 | // ── buildButtonProps attachments ──────────────────────────────────── | COMMENT |
| MEDIUM | src/plugins/runtime/types.ts | 19 | // ── Subagent runtime types ────────────────────────────────────────── | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | docs/install/daytona.md | 50 | daytona login --api-key=YOUR_API_KEY | CODE |
| HIGH | docs/providers/openai.md | 66 | - <a id="get-your-api-key" />[Get your API key](/providers/openai/setup#get-your-api-key) | CODE |
| HIGH | docs/concepts/memory-honcho.md | 77 | apiKey: "your-api-key", // omit for self-hosted | CODE |
| HIGH | skills/trello/SKILL.md | 35 | export TRELLO_API_KEY="your-api-key" | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | extensions/ICON_SOURCES.md | 132 | | reef | [First-party source](https://github.com/openclaw/openclaw/blob/8bc0c3876ebcabc7596b809f168f44 | CODE |
| HIGH | extensions/msteams/src/messenger.ts | 159 | // Mark as AI-generated so Teams renders the "AI generated" badge. | COMMENT |
| HIGH | extensions/msteams/src/monitor.ts | 489 | // Feedback (thumbs up/down) on AI-generated messages. Teams delivers this as | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/gateway-openai-compaction-replay.e2e.test.ts | 248 | async function handleRequest( | CODE |
| LOW | test/gateway-no-op-mutation.e2e.test.ts | 163 | async function handleRequest( | CODE |
| LOW | test/pr150623-active-context-preflight.e2e.test.ts | 177 | async function handleRequest( | CODE |
| LOW | …/clickclack/src/discussions/durable-room-proof.test.ts | 53 | async function handleRequest(req: IncomingMessage, res: ServerResponse): Promise<void> { | CODE |
| LOW | extensions/anthropic/cli.runtime.ts | 142 | async function handleRequest( | CODE |
| LOW | src/cli/skills-cli.clawhub-install.e2e.test.ts | 57 | async function handleRequest(req: IncomingMessage, res: ServerResponse): Promise<void> { | CODE |
| LOW | src/cli/plugins-cli.clawhub-install.e2e.test.ts | 91 | async function handleRequest(req: IncomingMessage, res: ServerResponse): Promise<void> { | CODE |
| LOW | src/auto-reply/chunk.test.ts | 117 | const fence = "```python\ndef my_function():\n x = 1\n\n y = 2\n return x + y\n```"; | CODE |
| LOW | src/gateway/server-http.ts | 221 | async function handleRequest( | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/create-dmg.sh | 6 | # Usage: | COMMENT |
| LOW | scripts/run-opengrep.sh | 12 | # Usage: | COMMENT |
| LOW | scripts/notarize-mac-artifact.sh | 6 | # Usage: | COMMENT |
| LOW | scripts/k8s/deploy.sh | 11 | # Usage: | COMMENT |
| LOW | scripts/k8s/create-kind.sh | 7 | # Usage: | COMMENT |
| LOW | scripts/e2e/multi-node-update-docker.sh | 16 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/install.sh | 3380 | # Step 1: Node.js. macOS package-manager branches install Homebrew lazily | COMMENT |
| LOW⚡ | scripts/install.sh | 3416 | # Step 3: Git (required for npm installs that may fetch from git or apply patches) | COMMENT |
| LOW⚡ | scripts/install.sh | 3421 | # Step 4: npm permissions (Linux) | COMMENT |
| LOW⚡ | scripts/install.sh | 3424 | # Step 5: OpenClaw | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/scripts/pr-darwin-process-identity.test.py | 8 | CODE | |
| LOW | test/scripts/parallels-exec.test.py | 2 | CODE | |
| LOW | scripts/check-composite-action-input-interpolation.py | 2 | CODE | |
| LOW | scripts/release-telegram-candidate-archive.py | 4 | CODE | |
| LOW | scripts/e2e/parallels/parallels-exec.py | 10 | CODE | |
| LOW | skills/model-usage/scripts/model_usage.py | 8 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | extensions/active-memory/prompt.test.ts | 8 | "Please let me know if you need help.", | CODE |
| MEDIUM | …over/failover-classification.legacy-billing-b.cases.ts | 191 | "Sure! Here's how to set up billing for your SaaS application.\n\n## Payment Integration\n\nFirst, you'll need to co | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | scripts/create-dmg.sh | 4 | # Create a styled DMG containing the app bundle + /Applications symlink. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docker-compose.yml | 54 | ## Set DOCKER_GID to the host's docker group GID (run: stat -c '%g' /var/run/docker.sock). | COMMENT |