Use Claude Code, Codex, VSCode, Pi, and OpenCode (and 6 other harnesses) for free (1.3B+ free tokens) from your terminal, app, IDE, or phone, and now from the browser with native browser sessions (multi-harness + multi-model) like OpenClaw (voice supported + ToS friendly)
This report summarizes scanner evidence for Alishahryar1/free-claude-code, a Python project with 57,441 GitHub stars. SynthScan examined 244,632 lines of code across 914 source files, recording 5441 pattern matches distributed across 14 syntactic categories. The legacy adjusted pattern signal is 22.6 (Elevated pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 4917 finding(s).
Are imports declared and package/API names verified? 290 finding(s).
Are wrappers, guards, and repeated structures necessary? 4995 finding(s).
Which changes need focused human review? 5441 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 5441 distinct pattern matches across 14 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 | smoke/conftest.py | 23 | def pytest_collection_modifyitems(items: list[pytest.Item]) -> None: | CODE |
| LOW | smoke/prereq/test_messaging_prereq_live.py | 12 | def test_telegram_bot_api_permissions(smoke_config: SmokeConfig) -> None: | CODE |
| LOW | smoke/prereq/test_messaging_prereq_live.py | 54 | def test_discord_bot_api_permissions(smoke_config: SmokeConfig) -> None: | CODE |
| LOW | smoke/prereq/test_messaging_prereq_live.py | 103 | def test_interactive_inbound_messaging_requires_explicit_mode( | CODE |
| LOW | smoke/prereq/test_voice_prereq_live.py | 17 | async def test_voice_transcription_backend_when_explicitly_enabled( | CODE |
| LOW | smoke/prereq/test_cli_prereq_live.py | 19 | def test_fcc_server_entrypoint_starts_server(smoke_config: SmokeConfig) -> None: | CODE |
| LOW | smoke/prereq/test_cli_prereq_live.py | 29 | def test_claude_cli_prompt_when_available( | CODE |
| LOW⚡ | …ke/prereq/test_local_provider_endpoints_prereq_live.py | 9 | def test_lmstudio_models_endpoint_when_available(smoke_config: SmokeConfig) -> None: | CODE |
| LOW⚡ | …ke/prereq/test_local_provider_endpoints_prereq_live.py | 19 | def test_llamacpp_models_endpoint_when_available(smoke_config: SmokeConfig) -> None: | CODE |
| LOW⚡ | …ke/prereq/test_local_provider_endpoints_prereq_live.py | 29 | def test_ollama_models_endpoint_when_available(smoke_config: SmokeConfig) -> None: | CODE |
| LOW | smoke/prereq/test_client_shapes_prereq_live.py | 10 | def test_vscode_and_jetbrains_shaped_requests( | CODE |
| LOW | smoke/prereq/test_tools_prereq_live.py | 18 | def test_live_tool_use_when_configured_model_supports_tools( | CODE |
| LOW | smoke/prereq/test_provider_prereq_live.py | 23 | def test_model_mapping_configuration_is_consistent(smoke_config: SmokeConfig) -> None: | CODE |
| LOW | smoke/prereq/test_provider_prereq_live.py | 32 | def test_mixed_provider_model_mapping_when_configured( | CODE |
| LOW | smoke/prereq/test_provider_prereq_live.py | 51 | def test_configured_provider_models_stream_successfully( | CODE |
| LOW | smoke/prereq/test_provider_prereq_live.py | 84 | def test_client_disconnect_mid_stream_does_not_crash_server( | CODE |
| LOW | smoke/prereq/test_auth_prereq_live.py | 12 | def test_bearer_auth_is_the_only_supported_header_shape( | CODE |
| LOW | smoke/prereq/test_api_prereq_live.py | 13 | def test_probe_and_models_routes( | CODE |
| LOW | smoke/prereq/test_api_prereq_live.py | 40 | def test_count_tokens_accepts_thinking_tools_and_results( | CODE |
| LOW | smoke/prereq/test_api_prereq_live.py | 95 | def test_optimization_fast_paths_do_not_need_provider( | CODE |
| LOW | smoke/prereq/test_api_prereq_live.py | 167 | def test_invalid_messages_returns_anthropic_error( | CODE |
| LOW | smoke/prereq/test_api_prereq_live.py | 185 | def test_stop_endpoint_reports_no_messaging( | CODE |
| LOW | smoke/product/test_provider_product_live.py | 326 | def _assert_provider_product_stream(events: list[SSEEvent]) -> None: | CODE |
| LOW | smoke/product/test_provider_product_live.py | 340 | def _provider_smoke_reasoning_enabled(smoke_config: SmokeConfig) -> bool: | CODE |
| LOW | smoke/product/test_provider_product_live.py | 360 | def _scenario_adaptive_thinking_history( | CODE |
| LOW | smoke/product/test_provider_product_live.py | 385 | def _scenario_interleaved_history( | CODE |
| LOW | smoke/product/test_provider_product_live.py | 425 | def _scenario_tool_use_then_text_in_history( | CODE |
| LOW | smoke/product/test_provider_product_live.py | 471 | def _scenario_tool_result_continuation( | CODE |
| LOW | smoke/product/test_provider_product_live.py | 515 | def _scenario_interrupted_tool_turn_resume( | CODE |
| LOW | smoke/product/test_provider_product_live.py | 560 | def _scenario_gemini_thought_signature_tool_continuation( | CODE |
| LOW | smoke/product/test_provider_product_live.py | 611 | def _gemini_tool_thought_signature(tool_use: dict[str, Any]) -> str | None: | CODE |
| LOW | smoke/product/test_provider_product_live.py | 622 | def _scenario_reasoning_tool_continuation( | CODE |
| LOW | smoke/product/test_provider_product_live.py | 709 | def _long_cacheable_system_prompt() -> str: | CODE |
| LOW | smoke/product/test_provider_product_live.py | 718 | def _mistral_cached_reads_with_retry( | CODE |
| LOW | smoke/product/test_runtime_ownership_product_live.py | 172 | def _write_initial_managed_config(home: Path, upstream: FakeOpenAIUpstream) -> None: | CODE |
| LOW | smoke/product/test_runtime_ownership_product_live.py | 190 | def _wait_for_generation_close(server: RunningServer, generation_id: int) -> None: | CODE |
| LOW | smoke/product/test_client_product_live.py | 1442 | def _provider_credential_env_keys() -> set[str]: | CODE |
| LOW | smoke/product/test_client_product_live.py | 1450 | def _local_provider_overrides( | CODE |
| LOW | smoke/product/test_client_product_live.py | 1597 | def _deliberately_failing_openai_provider() -> Iterator[tuple[str, list[str]]]: | CODE |
| LOW | smoke/product/test_client_product_live.py | 1660 | def _successful_openai_provider( | CODE |
| LOW | smoke/lib/skips.py | 10 | def skip_upstream_unavailable(reason: str) -> None: | CODE |
| LOW | smoke/lib/skips.py | 18 | def skip_if_upstream_unavailable_exception(exc: Exception) -> None: | CODE |
| LOW | smoke/lib/skips.py | 34 | def skip_if_upstream_unavailable_events(events: list[SSEEvent]) -> None: | CODE |
| LOW | smoke/lib/config.py | 270 | def openrouter_free_cli_models(self) -> list[ProviderModel]: | CODE |
| LOW | smoke/lib/config.py | 277 | def mistral_reasoning_smoke_model(self) -> ProviderModel | None: | CODE |
| LOW | smoke/lib/config.py | 292 | def mistral_cache_smoke_model(self) -> ProviderModel | None: | CODE |
| LOW | smoke/lib/config.py | 307 | def _include_provider_in_smoke( | CODE |
| LOW | smoke/lib/config.py | 319 | def has_provider_configuration(self, provider: str) -> bool: | CODE |
| LOW | smoke/lib/config.py | 361 | def _normalize_provider_model(provider: str, raw_model: str) -> str: | CODE |
| LOW | smoke/lib/config.py | 371 | def nvidia_nim_cli_model_refs( | CODE |
| LOW | smoke/lib/config.py | 401 | def openrouter_free_cli_model_refs( | CODE |
| LOW | smoke/lib/local_providers.py | 14 | def first_local_provider_model_id( | CODE |
| LOW | smoke/lib/local_providers.py | 35 | def _first_openai_compatible_model_id( | CODE |
| LOW | smoke/lib/local_providers.py | 54 | def _get_local_provider_response( | CODE |
| LOW | smoke/lib/claude_cli_matrix.py | 141 | def _build_claude_cli_command( | CODE |
| LOW | smoke/lib/claude_cli_matrix.py | 475 | def _interleaved_thinking_tool( | CODE |
| LOW | smoke/lib/e2e.py | 223 | def adaptive_thinking_payload() -> dict[str, Any]: | CODE |
| LOW | smoke/lib/e2e.py | 346 | def continue_message_sequence_after(self, previous: FakePlatform) -> None: | CODE |
| LOW | smoke/lib/e2e.py | 471 | async def cancel_all_pending_voices( | CODE |
| LOW | smoke/lib/e2e.py | 483 | async def cancel_pending_voices_in_scope( | CODE |
| 4688 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | smoke/installers/test_installers.py | 4365 | function Get-ApplicationCommand {{ param([string] $Name) return $null }} | CODE |
| HIGH | smoke/installers/test_installers.py | 4366 | function Find-InstalledCodingAgent {{ param([string] $CommandName) return $null }} | CODE |
| HIGH | smoke/installers/test_muse_windows_lifecycle.py | 396 | if ({_ps_literal(external_path)} -eq '') {{ return $null }} | CODE |
| HIGH | smoke/installers/test_muse_windows_lifecycle.py | 403 | return [pscustomobject] @{{ Compatible = $false; Version = $null; Reason = 'not Muse Code' }} | CODE |
| HIGH⚡ | tests/contracts/test_issue_form_version_validation.py | 325 | const record = (name, args) => calls.push({ name, args }); | CODE |
| HIGH | tests/contracts/test_issue_form_version_validation.py | 343 | liveIssue.labels.push(...args.labels.map((name) => ({ name }))); | CODE |
| HIGH | tests/contracts/test_issue_form_version_validation.py | 351 | comments.push({ | CODE |
| HIGH | tests/contracts/test_issue_form_version_validation.py | 396 | comments.push({ | CODE |
| HIGH | tests/contracts/test_issue_form_version_validation.py | 465 | deleteComment: async ({comment_id}) => deleted.push(comment_id), | CODE |
| HIGH | tests/contracts/test_issue_form_version_validation.py | 507 | removeLabel: async () => calls.push("removeLabel"), | CODE |
| HIGH | tests/contracts/test_issue_form_version_validation.py | 508 | deleteComment: async ({comment_id}) => calls.push(comment_id), | CODE |
| HIGH | tests/providers/test_streaming_errors.py | 512 | """NIM/GLM may send usage.completion_tokens=null; final SSE must not use JSON null.""" | STRING |
| HIGH | tests/providers/test_subagent_interception.py | 51 | '{"run_in_background":null}', | CODE |
| HIGH⚡ | tests/providers/test_stream_recovery.py | 167 | assert holdback.push("event: content_block_start\n\n") == [] | CODE |
| HIGH⚡ | tests/providers/test_stream_recovery.py | 169 | assert holdback.push("event: content_block_delta\n\n") == [] | CODE |
| HIGH⚡ | tests/providers/test_stream_recovery.py | 174 | assert holdback.push("event: content_block_stop\n\n") == [ | CODE |
| HIGH⚡ | tests/providers/test_stream_recovery.py | 181 | assert holdback.push("event: message_stop\n\n") == ["event: message_stop\n\n"] | CODE |
| HIGH⚡ | tests/providers/test_stream_recovery.py | 187 | assert holdback.push("ab") == [] | CODE |
| HIGH⚡ | tests/providers/test_stream_recovery.py | 188 | assert holdback.push("cde") == ["ab", "cde"] | CODE |
| HIGH⚡ | tests/providers/test_stream_recovery.py | 195 | assert holdback.push("hidden") == [] | CODE |
| HIGH⚡ | tests/providers/test_stream_recovery.py | 209 | recovery.push("old") | CODE |
| HIGH⚡ | tests/providers/test_stream_recovery.py | 221 | recovery.push("new") | CODE |
| HIGH⚡ | tests/providers/test_stream_recovery.py | 229 | assert recovery.push("continuation") == ["continuation"] | CODE |
| HIGH | tests/providers/test_stream_recovery.py | 18 | controller.push("hidden") | CODE |
| HIGH | tests/providers/test_stream_recovery.py | 33 | assert controller.push("hidden") == [] | CODE |
| HIGH | tests/providers/test_stream_recovery.py | 52 | assert controller.push("hidden") == [] | CODE |
| HIGH | tests/providers/test_stream_recovery.py | 69 | assert controller.push("partial") == [] | CODE |
| HIGH | tests/providers/test_stream_recovery.py | 113 | assert controller.push("event: content_block_delta\n\n") == [] | CODE |
| HIGH | tests/providers/test_stream_recovery.py | 132 | assert controller.push("event: content_block_delta\n\n") == [] | CODE |
| HIGH | tests/providers/test_stream_recovery.py | 249 | recovery.push("buffered") | CODE |
| HIGH | tests/providers/test_stream_recovery.py | 291 | recovery.push("held") | CODE |
| HIGH | tests/providers/test_stream_recovery.py | 351 | recovery.push("held") | CODE |
| HIGH⚡ | tests/harnesses/test_claude_integration.py | 297 | '{"claudeCode.environmentVariables": [null]}', | CODE |
| HIGH | tests/cli/test_pi_extension.py | 49 | results.push(headers); | CODE |
| HIGH | tests/cli/test_pi_extension.py | 104 | results.push(replacement ?? payload); | CODE |
| HIGH | tests/scripts/test_release_workflow.py | 47 | assert step["env"]["RELEASE_COMMIT"] == "${{ inputs.release_commit || github.sha }}" | CODE |
| HIGH⚡ | tests/api/test_admin.py | 630 | assert 'parts.push("locked")' in script | CODE |
| HIGH⚡ | tests/api/test_admin.py | 680 | assert "return null;" in script | CODE |
| HIGH⚡ | tests/messaging/test_transcript.py | 149 | state.push("task_1", SubagentSegment("Outer")) | CODE |
| HIGH | e2e/test_integration_notices.py | 57 | "([id, phase, changed, instance]) => state.startup?.instance_id === instance && state.startup.startup.integr | CODE |
| HIGH | e2e/test_integration_notices.py | 101 | page.wait_for_function("!state.startupRequest && state.startupTimer === null") | CODE |
| HIGH | e2e/test_integration_notices.py | 245 | page.wait_for_function("!state.startupRequest && state.startupTimer === null") | CODE |
| HIGH | e2e/test_admin_integrations.py | 28 | page.evaluate("window.integrationChecks = (window.integrationChecks || 0) + 1") | CODE |
| HIGH | e2e/test_admin_status_independence.py | 22 | page.evaluate("window.heldChecks = (window.heldChecks || 0) + 1") | CODE |
| HIGH | e2e/test_admin_status_independence.py | 111 | page.evaluate("window.statusChecks = (window.statusChecks || 0) + 1") | CODE |
| HIGH | e2e/test_admin_assets.py | 44 | endGap: last ? main.getBoundingClientRect().bottom - last.getBoundingClientRect().bottom : null, | CODE |
| HIGH | e2e/test_admin_providers.py | 176 | page.evaluate("window.startupRequests = (window.startupRequests || 0) + 1") | CODE |
| HIGH | e2e/test_admin_providers.py | 180 | page.evaluate("window.manualRequests = (window.manualRequests || 0) + 1") | CODE |
| HIGH | e2e/test_admin_providers.py | 305 | page.evaluate("window.localChecks = (window.localChecks || 0) + 1") | CODE |
| HIGH | e2e/test_tool_schema_patterns.py | 38 | if (point >= 0xD800 && point <= 0xDFFF) continue; | STRING |
| HIGH | e2e/test_tool_schema_patterns.py | 41 | mismatches.push(`U+${point.toString(16)}`); | STRING |
| HIGH⚡ | e2e/test_code_sessions.py | 1647 | if (this.isCode && window.dropCodeEvents?.includes(type)) return; | CODE |
| HIGH⚡ | e2e/test_code_sessions.py | 1648 | if (this.isCode && type === 'feed.ready') | CODE |
| HIGH⚡ | e2e/test_code_sessions.py | 1651 | if (this.isCode && type === 'run.updated') | CODE |
| HIGH⚡ | e2e/test_code_sessions.py | 1653 | if (this.isCode && type === 'session.deleted') | CODE |
| HIGH | e2e/test_code_sessions.py | 1062 | assert reason.evaluate("node => node === window.savedReason && node.open") | CODE |
| HIGH | e2e/test_code_sessions.py | 1075 | assert reason.evaluate("node => node === window.savedReason && node.open") | CODE |
| HIGH | e2e/test_code_sessions.py | 1455 | "input => input === window.savedPromptInput && input.selectionStart === 2 && input.selectionEnd === 6" | CODE |
| HIGH | e2e/test_code_sessions.py | 1463 | "input => input === window.savedPromptInput && input.selectionStart === 2 && input.selectionEnd === 6" | CODE |
| HIGH | e2e/test_code_sessions.py | 1506 | "path => window.codeReadHolds.some(held => held.path === path && held.status === 404)", | CODE |
| 14 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/free_claude_code/core/__init__.py | 3 | CODE | |
| LOW | src/free_claude_code/core/__init__.py | 3 | CODE | |
| LOW | src/free_claude_code/core/__init__.py | 3 | CODE | |
| LOW | src/free_claude_code/core/__init__.py | 3 | CODE | |
| LOW | src/free_claude_code/core/anthropic/__init__.py | 3 | CODE | |
| LOW | src/free_claude_code/core/anthropic/__init__.py | 3 | CODE | |
| LOW | src/free_claude_code/core/anthropic/__init__.py | 3 | CODE | |
| LOW | src/free_claude_code/core/anthropic/__init__.py | 4 | CODE | |
| LOW | src/free_claude_code/core/anthropic/__init__.py | 4 | CODE | |
| LOW | src/free_claude_code/core/anthropic/__init__.py | 4 | CODE | |
| LOW | src/free_claude_code/core/anthropic/__init__.py | 4 | CODE | |
| LOW | src/free_claude_code/core/anthropic/__init__.py | 10 | CODE | |
| LOW | src/free_claude_code/core/anthropic/__init__.py | 10 | CODE | |
| LOW | src/free_claude_code/core/anthropic/__init__.py | 10 | CODE | |
| LOW | src/free_claude_code/core/anthropic/__init__.py | 10 | CODE | |
| LOW | src/free_claude_code/core/anthropic/__init__.py | 16 | CODE | |
| LOW | src/free_claude_code/core/anthropic/__init__.py | 16 | CODE | |
| LOW | src/free_claude_code/core/anthropic/__init__.py | 16 | CODE | |
| LOW | src/free_claude_code/core/anthropic/__init__.py | 16 | CODE | |
| LOW | src/free_claude_code/core/anthropic/__init__.py | 16 | CODE | |
| LOW | src/free_claude_code/core/anthropic/__init__.py | 16 | CODE | |
| LOW | src/free_claude_code/core/anthropic/__init__.py | 16 | CODE | |
| LOW | src/free_claude_code/core/anthropic/__init__.py | 16 | CODE | |
| LOW | src/free_claude_code/core/anthropic/__init__.py | 16 | CODE | |
| LOW | src/free_claude_code/core/anthropic/__init__.py | 16 | CODE | |
| LOW | src/free_claude_code/core/anthropic/__init__.py | 16 | CODE | |
| LOW | src/free_claude_code/core/anthropic/__init__.py | 16 | CODE | |
| LOW | src/free_claude_code/core/anthropic/__init__.py | 16 | CODE | |
| LOW | src/free_claude_code/core/anthropic/__init__.py | 16 | CODE | |
| LOW | src/free_claude_code/core/anthropic/__init__.py | 16 | CODE | |
| LOW | src/free_claude_code/core/anthropic/__init__.py | 16 | CODE | |
| LOW | src/free_claude_code/core/anthropic/__init__.py | 16 | CODE | |
| LOW | src/free_claude_code/core/anthropic/__init__.py | 16 | CODE | |
| LOW | src/free_claude_code/core/anthropic/__init__.py | 16 | CODE | |
| LOW | src/free_claude_code/core/anthropic/__init__.py | 16 | CODE | |
| LOW | src/free_claude_code/core/anthropic/__init__.py | 38 | CODE | |
| LOW | src/free_claude_code/core/anthropic/__init__.py | 38 | CODE | |
| LOW | src/free_claude_code/core/anthropic/__init__.py | 39 | CODE | |
| LOW | src/free_claude_code/core/anthropic/__init__.py | 40 | CODE | |
| LOW | src/free_claude_code/core/anthropic/__init__.py | 41 | CODE | |
| LOW | src/free_claude_code/core/anthropic/__init__.py | 41 | CODE | |
| LOW | src/free_claude_code/core/anthropic/__init__.py | 41 | CODE | |
| LOW | src/free_claude_code/core/anthropic/__init__.py | 41 | CODE | |
| LOW | src/free_claude_code/core/anthropic/__init__.py | 41 | CODE | |
| LOW | src/free_claude_code/core/anthropic/__init__.py | 48 | CODE | |
| LOW | src/free_claude_code/core/anthropic/__init__.py | 48 | CODE | |
| LOW | src/free_claude_code/core/anthropic/__init__.py | 48 | CODE | |
| LOW | src/free_claude_code/core/anthropic/__init__.py | 49 | CODE | |
| LOW | src/free_claude_code/core/anthropic/__init__.py | 50 | CODE | |
| LOW | …/free_claude_code/core/anthropic/streaming/__init__.py | 3 | CODE | |
| LOW | …/free_claude_code/core/anthropic/streaming/__init__.py | 4 | CODE | |
| LOW | …/free_claude_code/core/anthropic/streaming/__init__.py | 4 | CODE | |
| LOW | …/free_claude_code/core/anthropic/streaming/__init__.py | 4 | CODE | |
| LOW | …/free_claude_code/core/anthropic/streaming/__init__.py | 4 | CODE | |
| LOW | …/free_claude_code/core/anthropic/streaming/__init__.py | 4 | CODE | |
| LOW | …/free_claude_code/core/anthropic/streaming/__init__.py | 4 | CODE | |
| LOW | …/free_claude_code/core/anthropic/streaming/__init__.py | 12 | CODE | |
| LOW | …/free_claude_code/core/anthropic/streaming/__init__.py | 12 | CODE | |
| LOW | …/free_claude_code/core/anthropic/streaming/__init__.py | 12 | CODE | |
| LOW | …/free_claude_code/core/anthropic/streaming/__init__.py | 13 | CODE | |
| 153 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | smoke/prereq/test_tools_prereq_live.py | 56 | except Exception as exc: | CODE |
| LOW | smoke/prereq/test_provider_prereq_live.py | 75 | except Exception as exc: | CODE |
| LOW | smoke/product/test_provider_product_live.py | 141 | except Exception as exc: | CODE |
| LOW | smoke/product/test_provider_product_live.py | 195 | except Exception as exc: | CODE |
| LOW | smoke/product/test_provider_product_live.py | 266 | except Exception as exc: | CODE |
| LOW | smoke/product/test_provider_product_live.py | 318 | except Exception as exc: | CODE |
| LOW | smoke/product/test_codex_modes_product_live.py | 228 | except Exception as exc: | CODE |
| LOW | smoke/lib/server.py | 95 | except Exception as exc: | CODE |
| LOW | e2e/server_shutdown.py | 65 | except Exception as error: | CODE |
| MEDIUM | e2e/server_shutdown.py | 62 | def capture() -> None: | CODE |
| LOW | src/free_claude_code/core/trace.py | 172 | except Exception as exc: | CODE |
| LOW | src/free_claude_code/core/diagnostics.py | 218 | except Exception: | CODE |
| LOW | src/free_claude_code/core/diagnostics.py | 222 | except Exception: | CODE |
| LOW | src/free_claude_code/core/async_iterators.py | 24 | except Exception as exc: | CODE |
| LOW | src/free_claude_code/core/token_estimation.py | 44 | except Exception as exc: | CODE |
| MEDIUM | src/free_claude_code/core/token_estimation.py | 18 | def _load_encoder() -> _TokenEncoder | None: | CODE |
| LOW | src/free_claude_code/providers/admission.py | 168 | except Exception as error: | CODE |
| LOW | src/free_claude_code/providers/admission.py | 184 | except Exception as error: | CODE |
| LOW | src/free_claude_code/providers/lmstudio/client.py | 244 | except Exception as error: # unavailable metadata permits generation | CODE |
| LOW | src/free_claude_code/providers/github_copilot/auth.py | 245 | except Exception as error: | CODE |
| LOW | src/free_claude_code/providers/github_copilot/auth.py | 358 | except Exception: | CODE |
| LOW | src/free_claude_code/providers/github_copilot/auth.py | 405 | except Exception as error: | CODE |
| LOW | src/free_claude_code/providers/github_copilot/auth.py | 418 | except Exception: | CODE |
| LOW | src/free_claude_code/providers/github_copilot/sdk.py | 68 | except Exception: | CODE |
| LOW | src/free_claude_code/providers/github_copilot/sdk.py | 136 | except Exception: | CODE |
| LOW | src/free_claude_code/providers/github_copilot/sdk.py | 172 | except Exception: | CODE |
| LOW | src/free_claude_code/providers/github_copilot/sdk.py | 213 | except Exception: | CODE |
| LOW⚡ | src/free_claude_code/providers/github_copilot/sdk.py | 248 | except Exception: | CODE |
| LOW⚡ | src/free_claude_code/providers/github_copilot/sdk.py | 256 | except Exception: | CODE |
| LOW⚡ | src/free_claude_code/providers/github_copilot/sdk.py | 265 | except Exception: | CODE |
| LOW⚡ | src/free_claude_code/providers/github_copilot/sdk.py | 273 | except Exception: | CODE |
| LOW⚡ | src/free_claude_code/providers/github_copilot/sdk.py | 277 | except Exception: | CODE |
| LOW | src/free_claude_code/providers/github_copilot/sdk.py | 323 | except Exception: | CODE |
| LOW | src/free_claude_code/providers/github_copilot/sdk.py | 344 | except Exception: | CODE |
| MEDIUM | src/free_claude_code/providers/github_copilot/sdk.py | 132 | def identity(self) -> CopilotIdentity | None: | CODE |
| MEDIUM | src/free_claude_code/providers/github_copilot/sdk.py | 157 | def models(self) -> tuple[CopilotModel, ...]: | CODE |
| LOW | src/free_claude_code/providers/github_copilot/login.py | 70 | except Exception: | CODE |
| MEDIUM | src/free_claude_code/providers/github_copilot/login.py | 67 | def cleanup() -> None: | CODE |
| LOW | src/free_claude_code/providers/openai_codex/auth.py | 288 | except Exception: | CODE |
| LOW | src/free_claude_code/providers/openai_codex/auth.py | 425 | except Exception: | CODE |
| LOW | src/free_claude_code/providers/openai_codex/provider.py | 140 | except Exception as error: | CODE |
| LOW | src/free_claude_code/providers/cloudflare/client.py | 128 | except Exception: | CODE |
| LOW | src/free_claude_code/providers/runtime/runtime.py | 115 | except Exception as exc: | CODE |
| LOW | …_claude_code/providers/anthropic_messages/transport.py | 266 | except Exception as error: | CODE |
| LOW | …_claude_code/providers/anthropic_messages/transport.py | 398 | except Exception as raw_error: | CODE |
| LOW | …laude_code/providers/anthropic_messages/passthrough.py | 156 | except Exception as raw_error: | CODE |
| LOW | …laude_code/providers/anthropic_messages/passthrough.py | 207 | except Exception as error: | CODE |
| LOW⚡ | src/free_claude_code/providers/groq/client.py | 253 | except Exception: | CODE |
| LOW⚡ | src/free_claude_code/providers/groq/client.py | 260 | except Exception: | CODE |
| LOW | src/free_claude_code/providers/vertex/client.py | 122 | except Exception: | CODE |
| LOW | …ee_claude_code/providers/openai_responses/transport.py | 298 | except Exception as error: | CODE |
| LOW | …ee_claude_code/providers/openai_responses/transport.py | 480 | except Exception as raw_error: | CODE |
| LOW | src/free_claude_code/providers/openai_chat/transport.py | 652 | except Exception as error: | CODE |
| LOW | src/free_claude_code/providers/openai_chat/transport.py | 921 | except Exception as error: | CODE |
| LOW | src/free_claude_code/providers/openai_chat/transport.py | 1061 | except Exception as error: | CODE |
| LOW | src/free_claude_code/providers/openai_chat/transport.py | 1285 | except Exception as recovery_error: | CODE |
| LOW | src/free_claude_code/providers/openai_chat/transport.py | 1472 | except Exception as error: | CODE |
| LOW | src/free_claude_code/providers/mistral/reasoning.py | 92 | except Exception: | CODE |
| LOW | src/free_claude_code/providers/opencode/catalog.py | 226 | except Exception as exc: | CODE |
| LOW | src/free_claude_code/providers/opencode/provider.py | 131 | except Exception as exc: | CODE |
| 92 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | smoke/product/test_dsh_desktop_live.py | 193 | CODE | |
| LOW | smoke/product/test_client_product_live.py | 773 | CODE | |
| LOW | smoke/product/test_codex_modes_product_live.py | 104 | CODE | |
| LOW | smoke/product/test_codex_modes_product_live.py | 250 | CODE | |
| LOW | smoke/product/test_codex_modes_product_live.py | 527 | CODE | |
| LOW | smoke/product/test_codex_modes_product_live.py | 124 | CODE | |
| LOW | smoke/lib/e2e.py | 688 | CODE | |
| LOW | smoke/installers/test_installers.py | 64 | CODE | |
| LOW | smoke/installers/test_installers.py | 78 | CODE | |
| LOW | smoke/installers/test_installers.py | 2007 | CODE | |
| LOW | tests/core/test_continuation_overlap_policy.py | 72 | CODE | |
| LOW | tests/core/test_history_replay.py | 276 | CODE | |
| LOW | tests/contracts/test_uv_policy.py | 174 | CODE | |
| LOW | tests/contracts/test_import_boundaries.py | 539 | CODE | |
| LOW | tests/providers/test_nvidia_nim.py | 531 | CODE | |
| LOW | tests/providers/test_openai_codex_provider.py | 950 | CODE | |
| LOW | tests/providers/test_sdk_stream_lifecycle.py | 101 | CODE | |
| LOW | tests/providers/test_sdk_stream_lifecycle.py | 241 | CODE | |
| LOW | tests/providers/test_streaming_errors.py | 689 | CODE | |
| LOW | tests/providers/test_chat_tool_identity.py | 384 | CODE | |
| LOW | tests/providers/test_structured_reasoning_lifecycle.py | 213 | CODE | |
| LOW | tests/harnesses/test_dsh_desktop_integration.py | 104 | CODE | |
| LOW | tests/harnesses/test_jetbrains_acp_integration.py | 174 | CODE | |
| LOW | tests/runtime/test_configuration.py | 161 | CODE | |
| LOW | tests/runtime/test_folder_picker.py | 128 | CODE | |
| LOW | tests/runtime/test_config_transactions.py | 179 | CODE | |
| LOW | tests/runtime/test_config_transactions.py | 269 | CODE | |
| LOW | tests/runtime/test_messaging_sqlite.py | 938 | CODE | |
| LOW | tests/runtime/test_messaging_sqlite.py | 949 | CODE | |
| LOW | tests/cli/test_launcher_workflow.py | 40 | CODE | |
| LOW | tests/cli/test_launcher_workflow.py | 57 | CODE | |
| LOW | tests/cli/test_progressive_launch.py | 330 | CODE | |
| LOW | tests/cli/test_pi_extension.py | 212 | CODE | |
| LOW | tests/cli/test_config_restart_lifecycle.py | 24 | CODE | |
| LOW | tests/cli/test_config_restart_lifecycle.py | 85 | CODE | |
| LOW | tests/scripts/test_publish_release.py | 70 | CODE | |
| LOW | tests/scripts/test_ci_scripts.py | 17 | CODE | |
| LOW | tests/api/test_native_token_count.py | 208 | CODE | |
| LOW | tests/api/test_delivered_stream_recovery.py | 385 | CODE | |
| LOW | tests/api/test_delivered_stream_recovery.py | 388 | CODE | |
| LOW | tests/api/test_continuation_overlap.py | 122 | CODE | |
| LOW | tests/api/test_chat_tool_identity_api.py | 140 | CODE | |
| LOW | tests/api/test_stream_delivery.py | 36 | CODE | |
| LOW | tests/api/test_stream_delivery.py | 43 | CODE | |
| LOW | tests/application/test_execution.py | 176 | CODE | |
| LOW | tests/application/test_code_sessions.py | 2204 | CODE | |
| LOW | tests/messaging/test_storage_controls.py | 139 | CODE | |
| LOW | tests/messaging/test_storage_controls.py | 247 | CODE | |
| LOW | tests/messaging/test_storage_controls.py | 150 | CODE | |
| LOW | e2e/test_connected_accounts.py | 122 | CODE | |
| LOW | e2e/test_claude_desktop_integration.py | 11 | CODE | |
| LOW | e2e/test_code_sessions.py | 795 | CODE | |
| LOW | src/free_claude_code/core/delivered_response.py | 186 | CODE | |
| LOW | src/free_claude_code/core/delivered_response.py | 244 | CODE | |
| LOW | src/free_claude_code/core/delivered_response.py | 384 | CODE | |
| LOW | src/free_claude_code/core/delivered_response.py | 451 | CODE | |
| LOW | src/free_claude_code/core/diagnostics.py | 288 | CODE | |
| LOW | src/free_claude_code/core/continuation_stream.py | 91 | CODE | |
| LOW | src/free_claude_code/core/history_replay.py | 431 | CODE | |
| LOW | src/free_claude_code/core/history_replay.py | 532 | CODE | |
| 92 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/api/test_admin.py | 110 | def _set_home(monkeypatch, tmp_path: Path) -> None: | CODE |
| LOW | src/free_claude_code/core/continuation_overlap.py | 256 | def _settled_text(self, text: _Text) -> None: | CODE |
| LOW | src/free_claude_code/core/__init__.py | 10 | __all__ = [ | CODE |
| LOW | src/free_claude_code/core/anthropic/sse_aggregation.py | 20 | __all__ = ["aggregate_anthropic_sse_to_message"] | CODE |
| LOW | src/free_claude_code/core/anthropic/__init__.py | 52 | __all__ = [ | CODE |
| LOW | src/free_claude_code/core/anthropic/utils.py | 6 | def set_if_not_none(body: dict[str, Any], key: str, value: Any) -> None: | CODE |
| LOW | …/free_claude_code/core/anthropic/streaming/__init__.py | 24 | __all__ = [ | CODE |
| LOW | src/free_claude_code/core/openai_responses/__init__.py | 53 | __all__ = [ | CODE |
| LOW | …_claude_code/core/openai_responses/streaming/ledger.py | 31 | def set_active_block(self, state: BlockState) -> None: | CODE |
| LOW | src/free_claude_code/config/logging_config.py | 62 | def _set_third_party_levels(verbose: bool) -> None: | CODE |
| LOW | src/free_claude_code/config/__init__.py | 6 | __all__ = [ | CODE |
| LOW | src/free_claude_code/providers/__init__.py | 9 | __all__ = [ | CODE |
| LOW | src/free_claude_code/providers/lmstudio/__init__.py | 5 | __all__ = ["LMStudioProvider"] | CODE |
| LOW | src/free_claude_code/providers/kilo/__init__.py | 5 | __all__ = ["KiloProvider"] | CODE |
| LOW | src/free_claude_code/providers/github_copilot/auth.py | 496 | async def _settle(task: asyncio.Task[None]) -> None: | CODE |
| LOW | src/free_claude_code/providers/openai_api/__init__.py | 5 | __all__ = ["OpenAIAPIProvider"] | CODE |
| LOW | src/free_claude_code/providers/open_router/__init__.py | 5 | __all__ = ["OpenRouterProvider"] | CODE |
| LOW | src/free_claude_code/providers/gemini/__init__.py | 5 | __all__ = ["GeminiProvider"] | CODE |
| LOW | src/free_claude_code/providers/runtime/__init__.py | 6 | __all__ = [ | CODE |
| LOW | src/free_claude_code/providers/runtime/model_cache.py | 41 | def set_available_providers(self, provider_ids: Iterable[str]) -> None: | CODE |
| LOW | src/free_claude_code/providers/groq/__init__.py | 5 | __all__ = ["GroqProvider"] | CODE |
| LOW | src/free_claude_code/providers/deepseek/__init__.py | 5 | __all__ = ["DeepSeekProvider"] | CODE |
| LOW | src/free_claude_code/providers/nvidia_nim/__init__.py | 5 | __all__ = ["NvidiaNimProvider"] | CODE |
| LOW | src/free_claude_code/providers/anthropic/__init__.py | 5 | __all__ = ["AnthropicProvider"] | CODE |
| LOW | src/free_claude_code/providers/vertex/__init__.py | 5 | __all__ = ["VertexProvider"] | CODE |
| LOW | …ree_claude_code/providers/openai_responses/__init__.py | 5 | __all__ = ["OpenAIResponsesTransport"] | CODE |
| LOW | src/free_claude_code/providers/openai_chat/__init__.py | 52 | __all__ = [ | CODE |
| LOW⚡ | …ude_code/providers/google_openai/thought_signatures.py | 40 | def _set_thought_signature(tool_call: dict[str, Any], signature: str) -> None: | CODE |
| LOW | …c/free_claude_code/providers/google_openai/__init__.py | 11 | __all__ = [ | CODE |
| LOW | src/free_claude_code/providers/mistral/__init__.py | 5 | __all__ = ["MistralProvider"] | CODE |
| LOW | src/free_claude_code/providers/opencode/__init__.py | 5 | __all__ = ["OpenCodeProvider", "create_opencode_provider"] | CODE |
| LOW | …c/free_claude_code/providers/alibaba_cloud/__init__.py | 5 | __all__ = ["AlibabaCloudProvider"] | CODE |
| LOW | src/free_claude_code/runtime/provider_manager.py | 197 | def set_catalog_changed_callback(self, callback: Callable[[], None] | None) -> None: | CODE |
| LOW | src/free_claude_code/cli/__init__.py | 5 | __all__ = ["ManagedClaudeSession", "ManagedClaudeSessionManager"] | CODE |
| LOW | src/free_claude_code/cli/managed/__init__.py | 6 | __all__ = ["ManagedClaudeSession", "ManagedClaudeSessionManager"] | CODE |
| LOW | src/free_claude_code/api/admin_cache.py | 48 | def _set_no_store(headers: MutableHeaders) -> None: | CODE |
| LOW | src/free_claude_code/api/request_ids.py | 70 | def set_request_id(request: Request, request_id: str) -> None: | CODE |
| LOW | src/free_claude_code/api/handlers/__init__.py | 7 | __all__ = ["MessagesHandler", "ResponsesHandler", "TokenCountHandler"] | CODE |
| LOW | …free_claude_code/application/code_sessions/__init__.py | 19 | __all__ = [ | CODE |
| LOW | src/free_claude_code/messaging/node_runner.py | 161 | async def update_ui(status: str | None = None, force: bool = False) -> None: | CODE |
| LOW | src/free_claude_code/messaging/node_runner.py | 404 | __all__ = ["MessagingNodeRunner"] | CODE |
| LOW | src/free_claude_code/messaging/__init__.py | 10 | __all__ = [ | CODE |
| LOW | src/free_claude_code/messaging/command_context.py | 99 | __all__ = ["MessagingCommandContext", "ReplyClearResult", "StopOutcome"] | CODE |
| LOW | src/free_claude_code/messaging/workflow.py | 707 | __all__ = ["MessagingWorkflow"] | CODE |
| LOW | src/free_claude_code/messaging/turn_intake.py | 192 | async def update_queue_positions(self, queue: tuple[QueueEntry, ...]) -> None: | CODE |
| LOW | src/free_claude_code/messaging/turn_intake.py | 236 | __all__ = ["MessagingTurnIntake"] | CODE |
| LOW | src/free_claude_code/messaging/platforms/__init__.py | 12 | __all__ = [ | CODE |
| LOW | src/free_claude_code/messaging/trees/__init__.py | 24 | __all__ = [ | CODE |
| LOW | src/free_claude_code/messaging/trees/processor.py | 287 | __all__ = ["CancelledTask", "TreeQueueProcessor"] | CODE |
| LOW | src/free_claude_code/messaging/trees/runtime.py | 525 | __all__ = ["MessageTree"] | CODE |
| LOW | src/free_claude_code/messaging/trees/transitions.py | 158 | __all__ = [ | CODE |
| LOW | src/free_claude_code/messaging/trees/repository.py | 146 | __all__ = ["TreeRepository"] | CODE |
| LOW | src/free_claude_code/messaging/trees/identity.py | 16 | __all__ = ["TreeIdentity"] | CODE |
| LOW | src/free_claude_code/messaging/trees/manager.py | 711 | __all__ = ["TreeQueueManager"] | CODE |
| LOW | src/free_claude_code/messaging/transcript/__init__.py | 6 | __all__ = ["RenderCtx", "TranscriptBuffer"] | CODE |
| LOW | …e_claude_code/messaging/rendering/telegram_markdown.py | 323 | __all__ = [ | CODE |
| LOW | …ee_claude_code/messaging/rendering/discord_markdown.py | 310 | __all__ = [ | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/providers/test_mistral.py | 0 | reasoning_content deltas are emitted as thinking blocks. | STRING |
| HIGH | tests/providers/test_groq.py | 0 | reasoning_content deltas are emitted as thinking blocks. | STRING |
| HIGH | tests/providers/test_codestral.py | 0 | reasoning_content deltas are emitted as thinking blocks. | STRING |
| HIGH | tests/providers/test_sambanova.py | 0 | reasoning_content deltas are emitted as thinking blocks. | STRING |
| HIGH | src/free_claude_code/messaging/platforms/telegram.py | 0 | cancel every pending voice transcription and published handoff. | STRING |
| HIGH | src/free_claude_code/messaging/platforms/discord.py | 0 | cancel every pending voice transcription and published handoff. | STRING |
| HIGH | src/free_claude_code/messaging/platforms/voice_flow.py | 0 | cancel every pending voice transcription and published handoff. | STRING |
| HIGH | src/free_claude_code/messaging/platforms/telegram.py | 0 | cancel pending voice transcriptions belonging to one chat. | STRING |
| HIGH | src/free_claude_code/messaging/platforms/discord.py | 0 | cancel pending voice transcriptions belonging to one chat. | STRING |
| HIGH | src/free_claude_code/messaging/platforms/voice_flow.py | 0 | cancel pending voice transcriptions belonging to one chat. | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | smoke/product/test_client_product_live.py | 1580 | except ProcessLookupError: | CODE |
| HIGH | tests/cli/test_config_restart_lifecycle.py | 98 | except httpx.TransportError: | CODE |
| HIGH | src/free_claude_code/core/diagnostics.py | 218 | except Exception: | CODE |
| HIGH | src/free_claude_code/runtime/codex_catalog.py | 52 | except FileNotFoundError: | CODE |
| HIGH | src/free_claude_code/messaging/limiter.py | 124 | except Exception: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/api/test_model_fallback_failure_payloads.py | 310 | CODE | |
| MEDIUM | tests/api/test_web_server_tools.py | 192 | CODE | |
| MEDIUM | tests/api/test_api_handlers.py | 421 | CODE | |
| MEDIUM | tests/api/test_api.py | 73 | CODE | |
| MEDIUM | tests/api/test_response_streams.py | 36 | CODE | |
| MEDIUM | tests/api/test_openai_responses.py | 109 | CODE | |
| MEDIUM | tests/application/test_execution.py | 81 | CODE | |
| MEDIUM | tests/application/test_execution.py | 121 | CODE | |
| MEDIUM | tests/messaging/test_handler.py | 1260 | CODE | |
| MEDIUM | …ts/messaging/test_handler_markdown_and_status_edges.py | 258 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | smoke/lib/http.py | 56 | CODE | |
| LOW | smoke/installers/test_muse_windows_lifecycle.py | 355 | CODE | |
| LOW | tests/providers/test_model_discovery.py | 36 | CODE | |
| LOW | src/free_claude_code/providers/model_listing.py | 40 | CODE | |
| LOW | src/free_claude_code/providers/lmstudio/client.py | 92 | CODE | |
| LOW | src/free_claude_code/providers/lmstudio/client.py | 135 | CODE | |
| LOW | src/free_claude_code/providers/openai_chat/provider.py | 206 | CODE | |
| LOW | src/free_claude_code/providers/openai_chat/provider.py | 230 | CODE | |
| LOW | src/free_claude_code/providers/mistral/client.py | 99 | CODE | |
| LOW | src/free_claude_code/providers/mistral/client.py | 130 | CODE | |
| LOW | src/free_claude_code/providers/opencode/provider.py | 171 | CODE | |
| LOW | src/free_claude_code/providers/opencode/provider.py | 247 | CODE | |
| LOW | src/free_claude_code/api/admin_routes.py | 145 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tests/config/test_custom_providers.py | 48 | "https://u:p@example.org", | CODE |
| LOW | tests/config/test_custom_provider_mutations.py | 99 | {"base_url": "https://user:private-api-key@example.org"}, | CODE |
| LOW | tests/runtime/test_codex_protocol.py | 472 | prompt.answer({"action": "accept", "values": {"email": "user@example.com"}})[ | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/conftest.py | 200 | # Create a task to avoid "coroutine was never awaited" warning | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/providers/test_converter.py | 928 | # comprehensive flow | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/free_claude_code/providers/credential_validation.py | 61 | # Sources document both authenticated reads and (where enabled) rejection codes. | COMMENT |
| LOW | src/free_claude_code/providers/credential_validation.py | 161 | and isinstance(_field(p, "free_tokens"), Mapping) | COMMENT |