Composio powers 1000+ toolkits, tool search, context management, authentication, and a sandboxed workbench to help you build AI agents that turn intent into action.
This report summarizes scanner evidence for ComposioHQ/composio, a TypeScript project with 30,486 GitHub stars. SynthScan examined 473,804 lines of code across 2572 source files, recording 2736 pattern matches distributed across 24 syntactic categories. The legacy adjusted pattern signal is 8.5 (Moderate 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? 1968 finding(s).
Are imports declared and package/API names verified? 480 finding(s).
Are wrappers, guards, and repeated structures necessary? 1980 finding(s).
Which changes need focused human review? 2736 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 2736 distinct pattern matches across 24 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/release-workflow.test.ts | 123 | function readDocumentedSdkVersions(sdkLabel) { | CODE |
| LOW | test/release-workflow.test.ts | 141 | function readTypeScriptWorkspacePackages() { | CODE |
| LOW | python/providers/gemini/composio_gemini/provider.py | 110 | def _process_execution_result(result: t.Any) -> t.Dict: | CODE |
| LOW | python/providers/openai_agents/tests/test_provider.py | 11 | def test_wrap_tool_does_not_mutate_input_parameters(): | CODE |
| LOW | python/providers/openai_agents/tests/test_provider.py | 84 | def test_wrap_tool_preserves_array_item_schemas(items_schema): | CODE |
| LOW | …iders/openai_agents/composio_openai_agents/provider.py | 17 | def _remove_examples_from_schema(schema_obj: t.Dict[str, t.Any]) -> None: | CODE |
| LOW | …thon/providers/claude_agent_sdk/tests/test_provider.py | 89 | def test_simple_schema_passthrough(self, provider): | CODE |
| LOW | …thon/providers/claude_agent_sdk/tests/test_provider.py | 110 | def test_wrap_tool_returns_sdk_mcp_tool( | CODE |
| LOW | …thon/providers/claude_agent_sdk/tests/test_provider.py | 125 | def test_wrap_tool_without_description(self, provider, mock_execute_tool): | CODE |
| LOW | …thon/providers/claude_agent_sdk/tests/test_provider.py | 142 | def test_wrap_tool_without_input_parameters(self, provider, mock_execute_tool): | CODE |
| LOW | …thon/providers/claude_agent_sdk/tests/test_provider.py | 179 | def test_wrap_empty_tools_list(self, provider, mock_execute_tool): | CODE |
| LOW | …thon/providers/claude_agent_sdk/tests/test_provider.py | 188 | def test_create_mcp_server_with_default_options(self, provider): | CODE |
| LOW | …thon/providers/claude_agent_sdk/tests/test_provider.py | 204 | def test_create_mcp_server_with_custom_options(self, custom_provider): | CODE |
| LOW | …thon/providers/claude_agent_sdk/tests/test_provider.py | 220 | def test_create_mcp_server_with_empty_tools(self, provider): | CODE |
| LOW | …thon/providers/claude_agent_sdk/tests/test_provider.py | 238 | def test_tool_handler_success(self, provider, mock_tool): | CODE |
| LOW | …thon/providers/claude_agent_sdk/tests/test_provider.py | 289 | def test_tool_handler_string_result(self, provider, mock_tool): | CODE |
| LOW | …claude_agent_sdk/composio_claude_agent_sdk/provider.py | 139 | def _json_schema_to_simple_schema(self, schema: dict) -> dict: | CODE |
| LOW | python/providers/autogen/composio_autogen/provider.py | 29 | def _process_function_name_for_registration( | CODE |
| LOW | python/tests/test_cross_sdk_compatibility.py | 32 | def test_fixtures_are_identical(self, fixture_name: str) -> None: | CODE |
| LOW | python/tests/test_cross_sdk_compatibility.py | 47 | def test_json_schema_conversion_corpus_is_identical(self) -> None: | CODE |
| LOW⚡ | python/tests/test_typesafe_provider.py | 443 | def test_index_prefixed_key_slugs_by_code_point(self) -> None: | CODE |
| LOW⚡ | python/tests/test_typesafe_provider.py | 449 | def test_arbitrary_labels_round_trip(self, labels: t.List[str]) -> None: | CODE |
| LOW⚡ | python/tests/test_typesafe_provider.py | 459 | def test_unstated_required_enum_is_missing_and_optional_boolean_is_omitted( | CODE |
| LOW⚡ | python/tests/test_typesafe_provider.py | 779 | def test_rejects_a_state_that_cannot_be_sent_as_given(self, state: t.Any) -> None: | CODE |
| LOW⚡ | python/tests/test_typesafe_provider.py | 785 | def test_rejects_a_cyclic_context(self) -> None: | CODE |
| LOW⚡ | python/tests/test_typesafe_provider.py | 795 | def test_stable_keeps_json_null_and_rejects_the_rest(self) -> None: | CODE |
| LOW⚡ | python/tests/test_typesafe_provider.py | 1020 | def test_probability_accepts_whole_numbers_and_rejects_the_rest(self) -> None: | CODE |
| LOW⚡ | python/tests/test_typesafe_provider.py | 1030 | def test_a_stored_decision_with_whole_number_confidence_parses(self) -> None: | CODE |
| LOW⚡ | python/tests/test_typesafe_provider.py | 1037 | def test_an_api_answer_with_whole_number_probabilities_parses(self) -> None: | CODE |
| LOW⚡ | python/tests/test_typesafe_provider.py | 1338 | def test_refuses_an_abstain_and_a_partial_with_gaps(self) -> None: | CODE |
| LOW⚡ | python/tests/test_typesafe_provider.py | 1346 | def test_passes_modifiers_with_a_user_id(self) -> None: | CODE |
| LOW⚡ | python/tests/test_typesafe_provider.py | 1351 | def test_executes_through_a_session_which_takes_no_modifiers(self) -> None: | CODE |
| LOW | python/tests/test_typesafe_provider.py | 288 | def test_rejects_root_composition_with_required_arguments( | CODE |
| LOW | python/tests/test_typesafe_provider.py | 307 | def test_rejects_root_composition_through_schema_reference(self) -> None: | CODE |
| LOW | python/tests/test_typesafe_provider.py | 332 | def test_compiles_to_expected_questions(self, entry: t.Dict[str, t.Any]) -> None: | CODE |
| LOW | python/tests/test_typesafe_provider.py | 340 | def test_builds_the_routing_choice(self, entry: t.Dict[str, t.Any]) -> None: | CODE |
| LOW | python/tests/test_typesafe_provider.py | 400 | def test_a_boolean_needs_both_values( | CODE |
| LOW | python/tests/test_typesafe_provider.py | 405 | def test_an_enum_array_keeps_integer_max_items_and_min_items(self) -> None: | CODE |
| LOW | python/tests/test_typesafe_provider.py | 483 | def test_call_confidence_is_the_minimum_required_judgement(self) -> None: | CODE |
| LOW | python/tests/test_typesafe_provider.py | 534 | def test_weak_required_guess_is_a_suggestion_and_weak_optional_is_dropped( | CODE |
| LOW | python/tests/test_typesafe_provider.py | 612 | def test_a_selection_below_min_items_is_not_stated(self) -> None: | CODE |
| LOW | python/tests/test_typesafe_provider.py | 676 | def test_a_nullable_boolean_offers_and_binds_null(self) -> None: | CODE |
| LOW | python/tests/test_typesafe_provider.py | 707 | def test_restores_typed_values(self) -> None: | CODE |
| LOW | python/tests/test_typesafe_provider.py | 731 | def test_prefilled_arguments_get_no_question_and_no_judgement(self) -> None: | CODE |
| LOW | python/tests/test_typesafe_provider.py | 750 | def test_abstains_with_no_request_and_no_key(self, monkeypatch) -> None: | CODE |
| LOW | python/tests/test_typesafe_provider.py | 849 | def test_fan_out_is_one_request(self) -> None: | CODE |
| LOW | python/tests/test_typesafe_provider.py | 866 | def test_routes_first_when_the_fan_out_estimate_is_over_budget(self) -> None: | CODE |
| LOW | python/tests/test_typesafe_provider.py | 880 | def test_falls_back_once_on_a_size_rejection(self) -> None: | CODE |
| LOW | python/tests/test_typesafe_provider.py | 915 | def test_state_over_the_budget_raises_and_is_never_truncated(self) -> None: | CODE |
| LOW | python/tests/test_typesafe_provider.py | 922 | def test_object_state_serializes_with_a_stable_key_order(self) -> None: | CODE |
| LOW | python/tests/test_typesafe_provider.py | 941 | def test_context_stays_away_from_routing_and_the_gate(self) -> None: | CODE |
| LOW | python/tests/test_typesafe_provider.py | 958 | def test_context_scope_all_restores_fan_out(self) -> None: | CODE |
| LOW | python/tests/test_typesafe_provider.py | 964 | def test_an_unknown_context_scope_raises(self) -> None: | CODE |
| LOW | python/tests/test_typesafe_provider.py | 997 | def test_call_thresholds_layer_over_provider_thresholds(self) -> None: | CODE |
| LOW | python/tests/test_typesafe_provider.py | 1009 | def test_invalid_threshold_raises(self, value: t.Any) -> None: | CODE |
| LOW | python/tests/test_typesafe_provider.py | 1118 | def test_sync_decide_refuses_an_asynchronous_client(self) -> None: | CODE |
| LOW | python/tests/test_typesafe_provider.py | 1124 | def test_adecide_accepts_a_synchronous_client(self) -> None: | CODE |
| LOW | python/tests/test_typesafe_provider.py | 1156 | def test_rate_limit_keeps_safe_diagnostics_only(self, asynchronous: bool) -> None: | CODE |
| LOW | python/tests/test_typesafe_provider.py | 1205 | def test_maps_each_sdk_error_to_a_reason( | CODE |
| LOW | python/tests/test_typesafe_provider.py | 1210 | def test_response_validation_error_maps_to_the_malformed_response_error( | CODE |
| 1623 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | python/providers/typesafe/composio_typesafe/types.py | 15 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | python/providers/typesafe/composio_typesafe/types.py | 17 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | python/providers/typesafe/composio_typesafe/types.py | 66 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | python/providers/typesafe/composio_typesafe/types.py | 71 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | python/providers/typesafe/composio_typesafe/types.py | 147 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | python/providers/typesafe/composio_typesafe/types.py | 149 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | python/providers/typesafe/composio_typesafe/types.py | 172 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | python/providers/typesafe/composio_typesafe/types.py | 174 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | python/providers/typesafe/composio_typesafe/types.py | 287 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | python/providers/typesafe/composio_typesafe/types.py | 289 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | python/providers/typesafe/composio_typesafe/types.py | 319 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | python/providers/typesafe/composio_typesafe/types.py | 325 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | python/providers/typesafe/composio_typesafe/decide.py | 93 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | python/providers/typesafe/composio_typesafe/decide.py | 95 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | python/providers/typesafe/composio_typesafe/decide.py | 222 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | python/providers/typesafe/composio_typesafe/decide.py | 224 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | python/providers/typesafe/composio_typesafe/decide.py | 309 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | python/providers/typesafe/composio_typesafe/decide.py | 314 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | python/providers/typesafe/composio_typesafe/decide.py | 365 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | python/providers/typesafe/composio_typesafe/decide.py | 367 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | python/tests/test_gemini_provider.py | 122 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | python/tests/test_gemini_provider.py | 124 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | python/tests/test_gemini_provider.py | 498 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | python/tests/test_gemini_provider.py | 500 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | python/tests/test_gemini_provider.py | 926 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | python/tests/test_gemini_provider.py | 928 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | python/tests/test_gemini_provider.py | 101 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | python/tests/test_gemini_provider.py | 103 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | python/tests/test_gemini_provider.py | 538 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | python/tests/test_gemini_provider.py | 540 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | python/tests/test_gemini_provider.py | 815 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | python/tests/test_gemini_provider.py | 817 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | python/tests/test_custom_tools.py | 425 | # ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | python/tests/test_custom_tools.py | 427 | # ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | python/tests/test_custom_tools.py | 465 | # ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | python/tests/test_custom_tools.py | 467 | # ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | python/tests/test_custom_tools.py | 715 | # ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | python/tests/test_custom_tools.py | 717 | # ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | python/tests/test_custom_tools.py | 51 | # ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | python/tests/test_custom_tools.py | 53 | # ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | python/tests/test_custom_tools.py | 137 | # ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | python/tests/test_custom_tools.py | 139 | # ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | python/tests/test_custom_tools.py | 747 | # ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | python/tests/test_custom_tools.py | 749 | # ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | python/tests/test_custom_tools.py | 926 | # ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | python/tests/test_custom_tools.py | 928 | # ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | python/tests/test_custom_tools.py | 1237 | # ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | python/tests/test_custom_tools.py | 1239 | # ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | python/tests/test_type_inference_custom_provider.py | 25 | # ============================================ | COMMENT |
| MEDIUM | python/tests/test_type_inference_custom_provider.py | 27 | # ============================================ | COMMENT |
| MEDIUM⚡ | python/tests/test_type_inference_custom_provider.py | 57 | # ============================================ | COMMENT |
| MEDIUM⚡ | python/tests/test_type_inference_custom_provider.py | 59 | # ============================================ | COMMENT |
| MEDIUM | python/examples/custom_tools_agent_test.py | 49 | # ── 2. Standalone tool with overrides ────────────────────────────────── | COMMENT |
| MEDIUM | python/examples/custom_tools_agent_test.py | 101 | # ── 4. Custom toolkit — groups related tools under one namespace ─────── | COMMENT |
| MEDIUM | python/examples/custom_tools_agent_test.py | 127 | # ── Agent ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | python/composio/core/models/custom_tool_types.py | 21 | # ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | python/composio/core/models/custom_tool_types.py | 23 | # ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | python/composio/core/models/custom_tool_types.py | 68 | # ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | python/composio/core/models/custom_tool_types.py | 70 | # ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | python/composio/core/models/custom_tool_types.py | 85 | # ──────────────────────────────────────────────────────────────── | COMMENT |
| 116 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL⚡ | python/tests/test_tool_router_session_files.py | 97 | mock_client.tool_router.session.files.list.assert_called_once() | CODE |
| CRITICAL⚡ | python/tests/test_tool_router_session_files.py | 142 | mock_client.tool_router.session.files.create_upload_url.assert_called_once() | CODE |
| CRITICAL⚡ | python/tests/test_tool_router_session_files.py | 143 | mock_client.tool_router.session.files.create_download_url.assert_called_once() | CODE |
| CRITICAL | python/tests/test_tool_router_session_files.py | 179 | mock_client.tool_router.session.files.create_download_url.assert_called_once_with( | CODE |
| CRITICAL | python/tests/test_tool_router_session_files.py | 190 | mock_client.tool_router.session.files.delete.assert_called_once_with( | CODE |
| CRITICAL | python/composio/core/models/session_context.py | 181 | self._client.without_retries.tool_router.session.execute( | CODE |
| CRITICAL | …thon/composio/core/models/tool_router_session_files.py | 318 | return self._client.tool_router.session.files.list( | CODE |
| CRITICAL | …thon/composio/core/models/tool_router_session_files.py | 391 | create_resp = self._client.tool_router.session.files.create_upload_url( | CODE |
| CRITICAL | …thon/composio/core/models/tool_router_session_files.py | 417 | download_resp = self._client.tool_router.session.files.create_download_url( | CODE |
| CRITICAL | …thon/composio/core/models/tool_router_session_files.py | 434 | resp = self._client.tool_router.session.files.create_download_url( | CODE |
| CRITICAL | …thon/composio/core/models/tool_router_session_files.py | 448 | return self._client.tool_router.session.files.delete( | CODE |
| CRITICAL | python/composio/core/models/tool_router_session.py | 945 | self._client.without_retries.tool_router.session.execute( | CODE |
| CRITICAL | python/composio/core/models/tools.py | 649 | self._client.without_retries.tool_router.session.execute( | CODE |
| CRITICAL | …s/core/test/models/ToolRouterSessionFilesMount.test.ts | 48 | mockClient.toolRouter.session.files.list.mockResolvedValueOnce({ items: [] }); | CODE |
| CRITICAL | …s/core/test/models/ToolRouterSessionFilesMount.test.ts | 65 | mockClient.toolRouter.session.files.list.mockResolvedValueOnce({ items: [] }); | CODE |
| CRITICAL | …s/core/test/models/ToolRouterSessionFilesMount.test.ts | 92 | mockClient.toolRouter.session.files.list.mockResolvedValueOnce(apiResponse); | CODE |
| CRITICAL | …s/core/test/models/ToolRouterSessionFilesMount.test.ts | 110 | mockClient.toolRouter.session.files.list.mockResolvedValueOnce({ items: [] }); | CODE |
| CRITICAL | …s/core/test/models/ToolRouterSessionFilesMount.test.ts | 139 | mockClient.toolRouter.session.files.createDownloadURL.mockResolvedValueOnce( | CODE |
| CRITICAL | …s/core/test/models/ToolRouterSessionFilesMount.test.ts | 158 | mockClient.toolRouter.session.files.createDownloadURL.mockResolvedValueOnce( | CODE |
| CRITICAL | …s/core/test/models/ToolRouterSessionFilesMount.test.ts | 181 | mockClient.toolRouter.session.files.delete.mockResolvedValueOnce(deleteResponse); | CODE |
| CRITICAL | …s/core/test/models/ToolRouterSessionFilesMount.test.ts | 199 | mockClient.toolRouter.session.files.delete.mockResolvedValueOnce(deleteResponse); | CODE |
| CRITICAL | …s/core/test/models/ToolRouterSessionFilesMount.test.ts | 300 | mockClient.toolRouter.session.files.createUploadURL.mockResolvedValueOnce({ | CODE |
| CRITICAL | …s/core/test/models/ToolRouterSessionFilesMount.test.ts | 304 | mockClient.toolRouter.session.files.createDownloadURL.mockResolvedValueOnce({ | CODE |
| CRITICAL | …s/core/test/models/ToolRouterSessionFilesMount.test.ts | 345 | mockClient.toolRouter.session.files.createUploadURL.mockResolvedValueOnce( | CODE |
| CRITICAL | …s/core/test/models/ToolRouterSessionFilesMount.test.ts | 348 | mockClient.toolRouter.session.files.createDownloadURL.mockResolvedValueOnce( | CODE |
| CRITICAL | …s/core/test/models/ToolRouterSessionFilesMount.test.ts | 377 | mockClient.toolRouter.session.files.createUploadURL.mockResolvedValueOnce({ | CODE |
| CRITICAL | …s/core/test/models/ToolRouterSessionFilesMount.test.ts | 398 | mockClient.toolRouter.session.files.createUploadURL.mockResolvedValueOnce({ | CODE |
| CRITICAL | …s/core/test/models/ToolRouterSessionFilesMount.test.ts | 403 | mockClient.toolRouter.session.files.createDownloadURL.mockResolvedValueOnce( | CODE |
| CRITICAL | …s/core/test/models/ToolRouterSessionFilesMount.test.ts | 418 | mockClient.toolRouter.session.files.createUploadURL.mockResolvedValueOnce({ | CODE |
| CRITICAL | …s/core/test/models/ToolRouterSessionFilesMount.test.ts | 422 | mockClient.toolRouter.session.files.createDownloadURL.mockResolvedValueOnce({ | CODE |
| CRITICAL | …s/core/test/models/ToolRouterSessionFilesMount.test.ts | 445 | mockClient.toolRouter.session.files.createUploadURL.mockResolvedValueOnce({ | CODE |
| CRITICAL | …s/core/test/models/ToolRouterSessionFilesMount.test.ts | 449 | mockClient.toolRouter.session.files.createDownloadURL.mockResolvedValueOnce({ | CODE |
| CRITICAL | …s/core/test/models/ToolRouterSessionFilesMount.test.ts | 470 | mockClient.toolRouter.session.files.createUploadURL.mockResolvedValueOnce({ | CODE |
| CRITICAL | …s/core/test/models/ToolRouterSessionFilesMount.test.ts | 474 | mockClient.toolRouter.session.files.createDownloadURL.mockResolvedValueOnce({ | CODE |
| CRITICAL | …s/core/test/models/ToolRouterSessionFilesMount.test.ts | 498 | mockClient.toolRouter.session.files.createUploadURL.mockResolvedValueOnce({ | CODE |
| CRITICAL | …s/core/test/models/ToolRouterSessionFilesMount.test.ts | 502 | mockClient.toolRouter.session.files.createDownloadURL.mockResolvedValueOnce({ | CODE |
| CRITICAL | …s/core/test/models/ToolRouterSessionFilesMount.test.ts | 524 | mockClient.toolRouter.session.files.createUploadURL.mockImplementation((_, params) => | CODE |
| CRITICAL | …s/core/test/models/ToolRouterSessionFilesMount.test.ts | 530 | mockClient.toolRouter.session.files.createDownloadURL.mockImplementation((_, params) => | CODE |
| CRITICAL | …packages/core/src/models/ToolRouterSessionFileMount.ts | 88 | const response = await this.client.toolRouter.session.files.list(listOptions.data.mountId, { | CODE |
| CRITICAL | …packages/core/src/models/ToolRouterSessionFileMount.ts | 229 | const createUploadURLResponse = await this.client.toolRouter.session.files.createUploadURL( | CODE |
| CRITICAL | …packages/core/src/models/ToolRouterSessionFileMount.ts | 261 | const createDownloadURLResponse = await this.client.toolRouter.session.files.createDownloadURL( | CODE |
| CRITICAL | …packages/core/src/models/ToolRouterSessionFileMount.ts | 326 | const createDownloadURLResponse = await this.client.toolRouter.session.files.createDownloadURL( | CODE |
| CRITICAL | …packages/core/src/models/ToolRouterSessionFileMount.ts | 387 | const deleteResponse = await this.client.toolRouter.session.files.delete( | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | python/docs/tool-router.md | 523 | print(f"MCP Headers: {mcp_headers}") # {'x-api-key': 'your-api-key'} | CODE |
| HIGH⚡ | python/examples/tool_router/authorize.py | 17 | print("Please set it using: export COMPOSIO_API_KEY='your_api_key'") | CODE |
| HIGH | python/scripts/create-provider.sh | 434 | api_key="your-api-key", | CODE |
| HIGH | python/scripts/generate-docs.py | 615 | composio = Composio(api_key="your-api-key") | CODE |
| HIGH | docs/app/llms.mdx/[[...slug]]/route.ts | 458 | curl += ` \\\n -H "x-api-key: YOUR_API_KEY"`; | CODE |
| HIGH | docs/app/llms.mdx/[[...slug]]/route.ts | 973 | " -H 'x-api-key: YOUR_API_KEY'", | CODE |
| HIGH | docs/agent-guidance/agents/connect-clients-sync.md | 126 | - Use `YOUR_API_KEY` as the placeholder (not the `${token}` variable from the dashboard) | CODE |
| HIGH | .github/ISSUE_TEMPLATE/bug-report.yml | 104 | composio = Composio(api_key="YOUR_API_KEY") | CODE |
| HIGH | ts/docs/getting-started.md | 29 | apiKey: 'your-api-key', | CODE |
| HIGH | ts/docs/getting-started.md | 41 | apiKey: 'your-api-key', | CODE |
| HIGH | ts/docs/getting-started.md | 92 | apiKey: 'your-api-key' | CODE |
| HIGH | ts/docs/getting-started.md | 102 | apiKey: 'your-api-key', | CODE |
| HIGH | ts/docs/README.md | 59 | apiKey: 'your-api-key', | CODE |
| HIGH | ts/docs/core-concepts.md | 320 | apiKey: 'your-api-key', | CODE |
| HIGH⚡ | ts/docs/advanced/modifiers.md | 132 | apiKey: 'your-api-key', | CODE |
| HIGH⚡ | ts/docs/advanced/modifiers.md | 166 | apiKey: 'your-api-key', | CODE |
| HIGH | ts/docs/advanced/telemetry.md | 38 | apiKey: 'your-api-key', | CODE |
| HIGH | ts/docs/advanced/telemetry.md | 75 | apiKey: 'your-api-key', | CODE |
| HIGH | ts/docs/advanced/session-management.md | 11 | apiKey: 'your-api-key', // required | CODE |
| HIGH | ts/docs/advanced/session-management.md | 65 | apiKey: 'your-api-key', | CODE |
| HIGH | ts/docs/advanced/session-management.md | 146 | apiKey: 'your-api-key', | CODE |
| HIGH | ts/docs/internal/configuration.md | 67 | apiKey: 'your-api-key', // Override COMPOSIO_API_KEY | CODE |
| HIGH | ts/docs/internal/configuration.md | 93 | export COMPOSIO_API_KEY=your-api-key | CODE |
| HIGH | ts/docs/internal/configuration.md | 102 | export COMPOSIO_API_KEY=your-api-key | CODE |
| HIGH | ts/docs/api/providers.md | 60 | apiKey: 'your-api-key', | CODE |
| HIGH | ts/docs/api/composio.md | 11 | apiKey: 'your-api-key', | CODE |
| HIGH | ts/docs/api/triggers.md | 99 | apiKey: 'your-api-key', | CODE |
| HIGH | ts/docs/api/triggers.md | 290 | apiKey: 'your-api-key', | CODE |
| HIGH | ts/docs/api/connected-accounts.md | 356 | api_key: 'your_api_key', | CODE |
| HIGH | ts/examples/connected-accounts/README.md | 90 | export COMPOSIO_API_KEY=your_api_key | CODE |
| HIGH | ts/packages/core/test/scripts/generate-docs.test.ts | 30 | "const composio = new Composio({ apiKey: 'your-api-key' });\n" + | CODE |
| HIGH | ts/packages/core/scripts/generate-docs.ts | 1014 | lines.push(`const composio = new Composio({ apiKey: 'your-api-key' });`); | CODE |
| HIGH | ts/packages/core/src/composio.ts | 247 | * apiKey: 'your-api-key', | COMMENT |
| HIGH | ts/packages/core/src/composio.ts | 441 | * apiKey: 'your-api-key', | COMMENT |
| HIGH | ts/packages/core/src/composio.ts | 447 | * apiKey: 'your-api-key', | COMMENT |
| HIGH | ts/packages/core/src/composio.ts | 649 | * apiKey: 'your-api-key' | COMMENT |
| HIGH | ts/packages/core/src/provider/OpenAIProvider.ts | 43 | * apiKey: 'your-api-key' | COMMENT |
| HIGH | ts/packages/core/src/provider/OpenAIProvider.ts | 48 | * apiKey: 'your-api-key', | COMMENT |
| HIGH | ts/packages/core/src/models/ConnectedAccounts.ts | 196 | * api_key: 'your_api_key' | COMMENT |
| HIGH | ts/packages/providers/vercel/src/index.ts | 51 | * apiKey: 'your-api-key', | COMMENT |
| HIGH | ts/packages/providers/langchain/src/index.ts | 45 | * apiKey: 'your-api-key', | COMMENT |
| HIGH | ts/packages/providers/google/src/index.ts | 71 | * apiKey: 'your-api-key', | COMMENT |
| HIGH | ts/packages/providers/google/src/index.ts | 125 | * const genAI = new GoogleGenerativeAI('YOUR_API_KEY'); | COMMENT |
| HIGH | ts/packages/providers/google/src/index.ts | 195 | * const genAI = new GoogleGenerativeAI('YOUR_API_KEY'); | COMMENT |
| HIGH | ts/packages/providers/google/src/index.ts | 241 | * const genAI = new GoogleGenerativeAI('YOUR_API_KEY'); | COMMENT |
| HIGH | ts/packages/providers/cloudflare/src/index.ts | 47 | * apiKey: 'your-api-key', | COMMENT |
| HIGH | ts/packages/providers/anthropic/src/index.ts | 115 | * apiKey: 'your-api-key', | COMMENT |
| HIGH | ts/packages/providers/openai-agents/src/index.ts | 65 | * apiKey: 'your-api-key', | COMMENT |
| HIGH | ts/packages/providers/openai-agents/src/index.ts | 211 | * apiKey: 'your-api-key', | COMMENT |
| HIGH | …ckages/providers/openai/src/OpenAIResponsesProvider.ts | 77 | * apiKey: 'your-api-key' | COMMENT |
| HIGH | …ckages/providers/openai/src/OpenAIResponsesProvider.ts | 82 | * apiKey: 'your-api-key', | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …n/providers/llamaindex/composio_llamaindex/__init__.py | 1 | CODE | |
| LOW | …hon/providers/langgraph/composio_langgraph/__init__.py | 1 | CODE | |
| LOW | python/providers/crewai/composio_crewai/__init__.py | 1 | CODE | |
| LOW | python/providers/gemini/composio_gemini/__init__.py | 1 | CODE | |
| LOW | …hon/providers/langchain/composio_langchain/__init__.py | 1 | CODE | |
| LOW | python/providers/google/composio_google/__init__.py | 1 | CODE | |
| LOW | …iders/openai_agents/composio_openai_agents/__init__.py | 1 | CODE | |
| LOW | …thon/providers/typesafe/composio_typesafe/companion.py | 3 | CODE | |
| LOW | python/providers/typesafe/composio_typesafe/provider.py | 9 | CODE | |
| LOW | python/providers/typesafe/composio_typesafe/classify.py | 3 | CODE | |
| LOW | python/providers/typesafe/composio_typesafe/__init__.py | 1 | CODE | |
| LOW | python/providers/typesafe/composio_typesafe/__init__.py | 1 | CODE | |
| LOW | python/providers/typesafe/composio_typesafe/__init__.py | 1 | CODE | |
| LOW | python/providers/typesafe/composio_typesafe/__init__.py | 1 | CODE | |
| LOW | python/providers/typesafe/composio_typesafe/__init__.py | 1 | CODE | |
| LOW | python/providers/typesafe/composio_typesafe/__init__.py | 8 | CODE | |
| LOW | python/providers/typesafe/composio_typesafe/__init__.py | 9 | CODE | |
| LOW | python/providers/typesafe/composio_typesafe/__init__.py | 9 | CODE | |
| LOW | python/providers/typesafe/composio_typesafe/__init__.py | 9 | CODE | |
| LOW | python/providers/typesafe/composio_typesafe/__init__.py | 9 | CODE | |
| LOW | python/providers/typesafe/composio_typesafe/__init__.py | 9 | CODE | |
| LOW | python/providers/typesafe/composio_typesafe/__init__.py | 9 | CODE | |
| LOW | python/providers/typesafe/composio_typesafe/__init__.py | 9 | CODE | |
| LOW | python/providers/typesafe/composio_typesafe/__init__.py | 9 | CODE | |
| LOW | python/providers/typesafe/composio_typesafe/__init__.py | 9 | CODE | |
| LOW | python/providers/typesafe/composio_typesafe/__init__.py | 9 | CODE | |
| LOW | python/providers/typesafe/composio_typesafe/__init__.py | 9 | CODE | |
| LOW | python/providers/typesafe/composio_typesafe/__init__.py | 9 | CODE | |
| LOW | python/providers/typesafe/composio_typesafe/__init__.py | 9 | CODE | |
| LOW | python/providers/typesafe/composio_typesafe/__init__.py | 9 | CODE | |
| LOW | python/providers/typesafe/composio_typesafe/__init__.py | 9 | CODE | |
| LOW | python/providers/typesafe/composio_typesafe/__init__.py | 9 | CODE | |
| LOW | python/providers/typesafe/composio_typesafe/__init__.py | 9 | CODE | |
| LOW | python/providers/typesafe/composio_typesafe/__init__.py | 9 | CODE | |
| LOW | python/providers/typesafe/composio_typesafe/__init__.py | 9 | CODE | |
| LOW | python/providers/typesafe/composio_typesafe/__init__.py | 9 | CODE | |
| LOW | python/providers/typesafe/composio_typesafe/__init__.py | 9 | CODE | |
| LOW | python/providers/typesafe/composio_typesafe/__init__.py | 9 | CODE | |
| LOW | python/providers/typesafe/composio_typesafe/__init__.py | 9 | CODE | |
| LOW | python/providers/typesafe/composio_typesafe/__init__.py | 9 | CODE | |
| LOW | python/providers/typesafe/composio_typesafe/__init__.py | 9 | CODE | |
| LOW | python/providers/typesafe/composio_typesafe/__init__.py | 9 | CODE | |
| LOW | python/providers/typesafe/composio_typesafe/__init__.py | 9 | CODE | |
| LOW | python/providers/typesafe/composio_typesafe/__init__.py | 9 | CODE | |
| LOW | python/providers/typesafe/composio_typesafe/__init__.py | 9 | CODE | |
| LOW | python/providers/typesafe/composio_typesafe/__init__.py | 9 | CODE | |
| LOW | python/providers/typesafe/composio_typesafe/__init__.py | 9 | CODE | |
| LOW | python/providers/typesafe/composio_typesafe/__init__.py | 9 | CODE | |
| LOW | python/providers/typesafe/composio_typesafe/__init__.py | 9 | CODE | |
| LOW | python/providers/typesafe/composio_typesafe/__init__.py | 9 | CODE | |
| LOW | python/providers/typesafe/composio_typesafe/__init__.py | 9 | CODE | |
| LOW | python/providers/typesafe/composio_typesafe/__init__.py | 9 | CODE | |
| LOW | python/providers/typesafe/composio_typesafe/__init__.py | 9 | CODE | |
| LOW | python/providers/typesafe/composio_typesafe/__init__.py | 9 | CODE | |
| LOW | python/providers/typesafe/composio_typesafe/__init__.py | 9 | CODE | |
| LOW | python/providers/typesafe/composio_typesafe/__init__.py | 9 | CODE | |
| LOW | python/providers/typesafe/composio_typesafe/response.py | 3 | CODE | |
| LOW | python/providers/typesafe/composio_typesafe/keys.py | 3 | CODE | |
| LOW | python/providers/typesafe/composio_typesafe/types.py | 3 | CODE | |
| LOW | python/providers/typesafe/composio_typesafe/decide.py | 3 | CODE | |
| 235 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | python/providers/langgraph/langgraph_demo_toolnode.py | 38 | # Define the two nodes we will cycle between | COMMENT |
| MEDIUM | python/providers/gemini/composio_gemini/provider.py | 177 | # Create a real function object (passes inspect.isfunction) | COMMENT |
| MEDIUM | python/providers/openai_agents/openai_agents_demo.py | 17 | # Create an agent with the tools | COMMENT |
| MEDIUM | …iders/openai_agents/composio_openai_agents/provider.py | 76 | # Create a function that accepts explicit JSON string for parameters | COMMENT |
| MEDIUM | …iders/openai_agents/composio_openai_agents/provider.py | 121 | # Create a custom FunctionTool with the appropriate schema | COMMENT |
| MEDIUM | …thon/providers/claude_agent_sdk/tests/test_provider.py | 242 | # Create a real wrapped tool to test the handler | COMMENT |
| MEDIUM | python/providers/autogen/autogen_demo.py | 32 | # Create a user proxy agent | COMMENT |
| MEDIUM | python/tests/test_tool_router.py | 1754 | # Create a proper modifier structure | COMMENT |
| MEDIUM | python/tests/test_tool_router.py | 1858 | # Create a new session | COMMENT |
| MEDIUM | python/tests/test_tool_router.py | 2026 | # Create a real Tools instance to test the execute function | COMMENT |
| MEDIUM | python/tests/test_tool_router.py | 2154 | # Create a real execute function with modifiers | COMMENT |
| MEDIUM | python/tests/test_tool_router.py | 2197 | # Create a real execute function | COMMENT |
| MEDIUM | python/tests/test_tool_execution.py | 308 | # Create a mock GitHub tool | COMMENT |
| MEDIUM | python/tests/test_tool_execution.py | 357 | # Create a mock GitHub tool | COMMENT |
| MEDIUM | python/tests/test_tool_execution.py | 407 | # Create a mock GitHub tool (not in toolkit_versions) | COMMENT |
| MEDIUM | python/tests/test_tool_execution.py | 455 | # Create a mock GitHub tool | COMMENT |
| MEDIUM | python/tests/test_tool_execution.py | 581 | # Create a mock GitHub tool with proper input_parameters for file helper | COMMENT |
| MEDIUM | python/tests/test_tool_execution.py | 610 | # Create a mock GitHub tool | COMMENT |
| MEDIUM | python/tests/test_tool_execution.py | 657 | # Create a mock GitHub tool | COMMENT |
| MEDIUM | python/tests/test_tool_execution.py | 707 | # Create a mock GitHub tool | COMMENT |
| MEDIUM | python/tests/test_tool_execution.py | 756 | # Create a mock GitHub tool | COMMENT |
| MEDIUM | python/tests/test_tool_execution.py | 803 | # Create a mock GitHub tool | COMMENT |
| MEDIUM | python/tests/test_tool_execution.py | 850 | # Create a mock GitHub tool | COMMENT |
| MEDIUM | python/tests/test_tool_execution.py | 898 | # Create a mock GitHub tool | COMMENT |
| MEDIUM | python/tests/test_tool_execution.py | 949 | # Create a mock GitHub tool | COMMENT |
| MEDIUM | python/tests/test_tool_execution.py | 967 | # Create a before_execute modifier that changes the arguments | COMMENT |
| MEDIUM | python/tests/test_tool_execution.py | 1005 | # Create a mock GitHub tool | COMMENT |
| MEDIUM | python/tests/test_tool_execution.py | 1023 | # Create an after_execute modifier that modifies the response | COMMENT |
| MEDIUM | python/tests/test_tool_execution.py | 1253 | # Create a mock GitHub tool with proper structure | COMMENT |
| MEDIUM | python/tests/test_tool_execution.py | 1306 | # Create a mock GitHub tool with proper structure | COMMENT |
| MEDIUM | python/tests/test_tool_execution.py | 1338 | # Create a mock GitHub tool | COMMENT |
| MEDIUM⚡ | python/tests/test_files.py | 2386 | # Create a filename exactly at the limit (100 chars by default) | COMMENT |
| MEDIUM | python/tests/test_files.py | 2502 | # Create a very long filename (hash-based, common in public buckets) | COMMENT |
| MEDIUM | python/examples/triggers.py | 28 | # Create a trigger instance pinned to a connected account | COMMENT |
| MEDIUM | python/examples/triggers.py | 84 | # Define a callback functions | COMMENT |
| MEDIUM | python/examples/experimental_tool_router_example.py | 26 | # Create a tool router session. mcp=True surfaces session.mcp on the | COMMENT |
| MEDIUM | python/examples/experimental_tool_router_example.py | 48 | # Create a tool router session with connection management | COMMENT |
| MEDIUM | python/examples/experimental_tool_router_example.py | 68 | # Create a session | COMMENT |
| MEDIUM⚡ | python/examples/experimental_tool_router_example.py | 93 | # Create a session | COMMENT |
| MEDIUM | python/examples/fastapi_app.py | 8 | # Create a FastAPI app | COMMENT |
| MEDIUM | python/examples/fastapi_app.py | 11 | # Create a Composio client | COMMENT |
| MEDIUM | python/examples/connected_accounts.py | 16 | # Create a new connected account (OAuth). The user may already have a | COMMENT |
| MEDIUM | python/examples/connected_accounts.py | 32 | # Create a new connected account (API Key) | COMMENT |
| MEDIUM | python/examples/tool_router/toolkits.py | 14 | # Create a tool router session | COMMENT |
| MEDIUM | python/examples/tool_router/tool_router_mcp.py | 31 | # Create a tool router session | COMMENT |
| MEDIUM | python/examples/tool_router/tool_router_mcp.py | 54 | # Create an agent with the tools from tool router | COMMENT |
| MEDIUM | python/examples/tool_router/files.py | 20 | # Create a session | COMMENT |
| MEDIUM | python/examples/tool_router/session_update.py | 16 | # Create a session with a per-toolkit tools map and a stored callback URL | COMMENT |
| MEDIUM | python/examples/tool_router/tools.py | 22 | # Create a tool router session for a specific user | COMMENT |
| MEDIUM | python/examples/tool_router/tools.py | 60 | # Create an agent with the tools from the session | COMMENT |
| MEDIUM | python/examples/tool_router/tools.py | 71 | # Define the task | COMMENT |
| MEDIUM⚡ | python/examples/tool_router/authorize.py | 22 | # Create a tool router session | COMMENT |
| MEDIUM⚡ | python/composio/core/models/tool_router.py | 918 | # Create a basic session | STRING |
| MEDIUM⚡ | python/composio/core/models/tool_router.py | 921 | # Create a session with specific toolkits | STRING |
| MEDIUM⚡ | python/composio/core/models/tool_router.py | 927 | # Create a direct-tools session when all needed tools are known upfront | STRING |
| MEDIUM⚡ | python/composio/core/models/tool_router.py | 934 | # Create a session with per-toolkit tool configuration | STRING |
| MEDIUM⚡ | python/composio/core/models/tool_router.py | 944 | # Create a session with global tag filtering | STRING |
| MEDIUM⚡ | python/composio/core/models/tool_router.py | 950 | # Create a session with toolkit-specific tag filtering (array format) | STRING |
| MEDIUM⚡ | python/composio/core/models/tool_router.py | 959 | # Create a session with toolkit-specific tag filtering (object format) | STRING |
| MEDIUM⚡ | python/composio/core/models/tool_router.py | 968 | # Create a session with connection management | STRING |
| 10 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | CONTRIBUTING.md | 259 | make create-provider name=my-provider agentic=true # agentic provider | CODE |
| MEDIUM | python/providers/openai/README.md | 15 | This package exports two providers: `OpenAIResponsesProvider` for the [Responses API](https://platform.openai.com/docs/a | CODE |
| MEDIUM | python/tests/test_tool_router.py | 2041 | # Verify execute was called with direct offload opt-in for agentic calls | COMMENT |
| MEDIUM | python/composio/core/models/tool_router_session.py | 379 | # For agentic providers: if custom tools are bound, create a routing | COMMENT |
| MEDIUM⚡ | python/composio/core/models/tools.py | 565 | # Dangerously skip version check for agentic tool execution via providers | COMMENT |
| MEDIUM⚡ | python/composio/core/models/tools.py | 566 | # This can be safe because most agentic flows users fetch latest version and then execute the tool | COMMENT |
| MEDIUM | python/composio/core/models/tools.py | 653 | # Provider-wrapped session tools are agentic calls, so they opt into | COMMENT |
| MEDIUM | docs/tests/integration/llm-endpoints.test.ts | 109 | // Default guardrails should be appended (session-based pattern) | COMMENT |
| MEDIUM | docs/decisions/llm-guardrails.md | 86 | ## Session guardrails content | COMMENT |
| MEDIUM | docs/decisions/llm-guardrails.md | 96 | ## Direct execution guardrails content | COMMENT |
| MEDIUM | docs/lib/llm-guardrails/direct-execution.ts | 25 | Create an **Auth Config** on [dashboard.composio.dev](https://dashboard.composio.dev?utm_source=docs&utm_medium=llm-guar | CODE |
| MEDIUM⚡ | ts/docs/advanced/modifiers.md | 129 | // With an agentic provider (e.g., Vercel, Langchain) | COMMENT |
| MEDIUM⚡ | ts/docs/advanced/modifiers.md | 136 | // All modifiers work with agentic providers | COMMENT |
| MEDIUM⚡ | ts/docs/advanced/modifiers.md | 149 | // Before execution modifier (only works with agentic providers) | COMMENT |
| MEDIUM⚡ | ts/docs/advanced/modifiers.md | 155 | // After execution modifier (only works with agentic providers) | COMMENT |
| MEDIUM⚡ | ts/docs/advanced/modifiers.md | 163 | // With a non-agentic provider (e.g., OpenAI) | COMMENT |
| MEDIUM⚡ | ts/docs/advanced/modifiers.md | 170 | // Only schema modifiers work with non-agentic providers | COMMENT |
| MEDIUM⚡ | ts/docs/advanced/modifiers.md | 183 | // These will be ignored by non-agentic providers | COMMENT |
| MEDIUM⚡ | ts/docs/advanced/modifiers.md | 184 | beforeExecute: () => {}, // No effect with non-agentic providers | CODE |
| MEDIUM⚡ | ts/docs/advanced/modifiers.md | 185 | afterExecute: () => {}, // No effect with non-agentic providers | CODE |
| MEDIUM | ts/docs/advanced/modifiers.md | 246 | // Non-agentic provider example (OpenAI) | COMMENT |
| MEDIUM | ts/docs/advanced/modifiers.md | 252 | // Schema modifiers work with non-agentic providers | COMMENT |
| MEDIUM | ts/docs/advanced/modifiers.md | 270 | // All modifiers work with agentic providers | COMMENT |
| MEDIUM | ts/docs/advanced/modifiers.md | 279 | // Execution modifiers (only work with agentic providers) | COMMENT |
| MEDIUM | ts/docs/advanced/modifiers.md | 654 | // Before Execution Modifier (supported by agentic providers only) | COMMENT |
| MEDIUM | ts/docs/advanced/modifiers.md | 661 | // After Execution Modifier (supported by agentic providers only) | COMMENT |
| MEDIUM | ts/docs/advanced/modifiers.md | 677 | beforeExecute?: beforeExecuteModifier; // Only applied by agentic providers | CODE |
| MEDIUM | ts/docs/advanced/modifiers.md | 678 | afterExecute?: afterExecuteModifier; // Only applied by agentic providers | CODE |
| MEDIUM | ts/docs/advanced/telemetry.md | 146 | isAgentic: boolean // Whether the provider is agentic | CODE |
| MEDIUM | ts/docs/advanced/telemetry.md | 241 | isAgentic: boolean; // Whether the provider is agentic | CODE |
| MEDIUM | ts/e2e-tests/cli/setup-plugins/e2e.test.ts | 20 | ? `# Keep this suite focused on packaged plugin orchestration. The standalone | CODE |
| MEDIUM | ts/scripts/create-provider.sh | 14 | # Check if provider should be agentic | COMMENT |
| MEDIUM | ts/packages/core/src/types/modifiers.types.ts | 560 | * // Configure agentic tools with schema and execution modifications | COMMENT |
| MEDIUM | ts/packages/core/src/types/modifiers.types.ts | 640 | * // With standard provider (non-agentic) | COMMENT |
| MEDIUM | ts/packages/core/src/types/modifiers.types.ts | 645 | * // With agentic provider (e.g., VercelProvider) | COMMENT |
| MEDIUM | ts/packages/core/src/models/Tools.ts | 919 | // dangerously skip version check for agentic tool execution via providers | COMMENT |
| MEDIUM | ts/packages/core/src/models/Tools.ts | 920 | // this can be safe because most agentic flows users fetch latest version and then execute the tool | COMMENT |
| MEDIUM | ts/packages/core/src/models/Tools.ts | 1224 | // Provider-wrapped session tools are agentic calls, so they opt into | COMMENT |
| MEDIUM | ts/packages/providers/vercel/README.md | 3 | Composio provider for the [Vercel AI SDK](https://sdk.vercel.ai) (`ai`). It converts Composio tools into the AI SDK's to | CODE |
| MEDIUM | ts/packages/cli/CHANGELOG.md | 251 | - fc17c37: Security: the CLI's tool file-upload path now enforces the sensitive-file denylist (issue #3746 / GHSA-hp3h-8 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …thon/providers/typesafe/composio_typesafe/companion.py | 124 | except TypesafeInvalidOptionsError: | CODE |
| HIGH | …thon/providers/typesafe/composio_typesafe/companion.py | 262 | except TypesafeInvalidOptionsError: | CODE |
| HIGH | …thon/providers/typesafe/composio_typesafe/companion.py | 232 | except Exception: | CODE |
| HIGH | python/providers/typesafe/composio_typesafe/types.py | 279 | except PydanticValidationError: | CODE |
| HIGH | python/providers/typesafe/composio_typesafe/decide.py | 191 | except PydanticValidationError: | CODE |
| HIGH | python/tests/test_typesafe_provider.py | 1724 | except threading.BrokenBarrierError: | CODE |
| HIGH | python/tests/test_schema_parser.py | 916 | except (RecursionError, ValueError): | CODE |
| HIGH | python/tests/test_schema_parser.py | 890 | except (ValueError, KeyError, TypeError): | CODE |
| HIGH | python/composio/core/models/_telemetry.py | 151 | except (httpx.TimeoutException, httpx.HTTPError, Exception): | CODE |
| HIGH | python/composio/core/models/custom_tool.py | 240 | except ImportError: | CODE |
| HIGH | python/composio/utils/redaction.py | 201 | except Exception: | CODE |
| HIGH | python/composio/utils/schema_converter.py | 1432 | except Exception: # noqa: BLE001 - pydantic raises SchemaError subclasses | CODE |
| HIGH | python/composio/utils/schema_converter.py | 2855 | except (SchemaError, CombinerError): | CODE |
| HIGH | python/composio/utils/schema_converter.py | 2857 | except Exception: | CODE |
| HIGH | python/composio/utils/schema_converter.py | 498 | except (ValueError, IndexError): | CODE |
| HIGH | python/composio/utils/shared.py | 460 | except ValueError: | CODE |
| HIGH | python/composio/utils/shared.py | 467 | except ValueError: | CODE |
| HIGH | python/composio/utils/upload_dir_allowlist.py | 48 | except OSError: | CODE |
| HIGH | python/composio/client/__init__.py | 243 | except ImportError: | CODE |
| HIGH | python/composio/client/__init__.py | 253 | except NameError: | CODE |
| HIGH | python/composio/client/__init__.py | 301 | except (FileNotFoundError, PermissionError): | CODE |
| HIGH | harness/trace-py/sitecustomize.py | 111 | except Exception: # noqa: BLE001 - tracing must never break the example | CODE |
| HIGH | harness/trace-py/sitecustomize.py | 60 | except OSError: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | docs/lib/llm-guardrails/direct-execution.ts | 35 | print(connection.redirect_url) # send user here to authenticate | CODE |
| HIGH | ts/packages/experimental/test/workbench/shim.test.ts | 80 | print(_json.dumps({ | CODE |
| HIGH | ts/packages/experimental/test/workbench/shim.test.ts | 144 | print(_json.dumps({ | CODE |
| HIGH | ts/packages/experimental/test/workbench/shim.test.ts | 230 | print(_json.dumps({"calls": _calls, "results": _results})) | CODE |
| HIGH | ts/packages/experimental/test/workbench/shim.test.ts | 337 | print(_json.dumps({ | CODE |
| HIGH⚡ | …experimental/src/workbench/python-helpers.generated.ts | 4 | 'import json\nimport os\nimport random\nimport time\nimport urllib.error\nimport urllib.parse\nimport urllib.request\n | CODE |
| HIGH⚡ | …experimental/src/workbench/python-helpers.generated.ts | 4 | 'import json\nimport os\nimport random\nimport time\nimport urllib.error\nimport urllib.parse\nimport urllib.request\n | CODE |
| HIGH | ts/packages/cli/test/__utils__/python-compiler.ts | 50 | print(result) | CODE |
| HIGH | ts/packages/cli/test/__utils__/python-compiler.ts | 63 | print(f"Area: {area}") | CODE |
| HIGH | ts/packages/cli/test/__utils__/python-compiler.ts | 93 | print(formatted) | CODE |
| HIGH | ts/packages/cli/test/__utils__/python-compiler.ts | 101 | print("This is missing a closing parenthesis" | CODE |
| HIGH | ts/packages/cli/test/__utils__/python-compiler.ts | 112 | print("Missing colon") | CODE |
| HIGH | ts/packages/cli/test/__utils__/python-compiler.ts | 137 | print(f"Result: {result}") | CODE |
| HIGH | ts/packages/cli/test/__utils__/python-compiler.ts | 160 | print(f"Calling {func.__name__}") | CODE |
| HIGH | ts/packages/cli/test/__utils__/python-compiler.ts | 169 | print(result) | CODE |
| HIGH | ts/packages/cli/test/__utils__/python-compiler.ts | 184 | print(result) | CODE |
| HIGH | ts/packages/cli/test/__utils__/python-compiler.ts | 204 | print(result) | CODE |
| HIGH⚡ | ts/packages/cli/test/__utils__/python-compiler.ts | 229 | print(f_string) | CODE |
| HIGH⚡ | ts/packages/cli/test/__utils__/python-compiler.ts | 247 | print("Hello",) # This trailing comma is valid | CODE |
| HIGH⚡ | ts/packages/cli/test/__utils__/python-compiler.ts | 248 | print("Hello",,) # This double comma is invalid | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …iders/openai_agents/composio_openai_agents/provider.py | 99 | except Exception as e: | CODE |
| LOW | …thon/providers/typesafe/composio_typesafe/companion.py | 232 | except Exception: | CODE |
| LOW | python/providers/typesafe/composio_typesafe/response.py | 76 | except Exception: | CODE |
| LOW | python/providers/typesafe/composio_typesafe/response.py | 123 | except Exception: | CODE |
| LOW | python/providers/typesafe/composio_typesafe/decide.py | 266 | except Exception as error: | CODE |
| LOW⚡ | python/providers/typesafe/composio_typesafe/decide.py | 302 | except Exception as error: | CODE |
| LOW | …claude_agent_sdk/composio_claude_agent_sdk/provider.py | 121 | except Exception as e: | CODE |
| LOW⚡ | python/examples/experimental_tool_router_example.py | 83 | except Exception as e: | CODE |
| MEDIUM⚡ | python/examples/experimental_tool_router_example.py | 84 | print(f"Error authorizing toolkit: {e}") | CODE |
| LOW | python/examples/experimental_tool_router_example.py | 134 | except Exception as e: | CODE |
| LOW | python/examples/experimental_tool_router_example.py | 178 | except Exception as e: | CODE |
| LOW | …/examples/experimental_tool_router_advanced_example.py | 206 | except Exception as e: | CODE |
| LOW | python/examples/custom_tools_agent_test.py | 160 | except Exception as e: | CODE |
| MEDIUM | python/examples/custom_tools_agent_test.py | 194 | print("Error: OPENAI_API_KEY env var required") | CODE |
| MEDIUM⚡ | python/examples/tool_router/authorize.py | 16 | print("Error: COMPOSIO_API_KEY environment variable not set") | CODE |
| LOW | python/examples/tool_router/authorize.py | 46 | except Exception as e: | CODE |
| MEDIUM | python/scripts/generate-docs.py | 35 | print("Error: griffe not installed. Run: pip install griffe") | CODE |
| LOW | python/scripts/generate-docs.py | 647 | except Exception as e: | STRING |
| MEDIUM | python/scripts/generate-docs.py | 648 | print(f"Error: {e}") | STRING |
| LOW | python/scripts/bump.py | 177 | except Exception as e: | CODE |
| LOW | python/composio/integration_test/conftest.py | 68 | except Exception as e: | CODE |
| LOW | python/composio/integration_test/conftest.py | 112 | except Exception as e: | CODE |
| LOW⚡ | python/composio/integration_test/test_mcp.py | 87 | except Exception as e: | CODE |
| LOW⚡ | python/composio/integration_test/test_mcp.py | 99 | except Exception as e: | CODE |
| LOW⚡ | python/composio/integration_test/test_mcp.py | 162 | except Exception as e: | CODE |
| LOW | python/composio/integration_test/test_mcp.py | 117 | except Exception as e: | CODE |
| LOW | python/composio/integration_test/test_mcp.py | 214 | except Exception as e: | CODE |
| LOW | python/composio/integration_test/test_mcp.py | 321 | except Exception as e: | CODE |
| LOW | python/composio/integration_test/test_mcp.py | 410 | except Exception as e: | CODE |
| LOW | python/composio/integration_test/test_mcp.py | 503 | except Exception as e: | CODE |
| LOW | python/composio/integration_test/test_mcp.py | 633 | except Exception as e: | CODE |
| LOW | python/composio/core/models/triggers.py | 628 | except Exception as e: | CODE |
| LOW | python/composio/core/models/triggers.py | 675 | except Exception as e: | CODE |
| LOW | python/composio/core/models/triggers.py | 715 | except Exception as e: | CODE |
| LOW | python/composio/core/models/triggers.py | 771 | except Exception: | CODE |
| LOW⚡ | python/composio/core/models/triggers.py | 824 | except Exception: | CODE |
| LOW | python/composio/core/models/triggers.py | 850 | except Exception: | CODE |
| LOW | python/composio/core/models/triggers.py | 854 | except Exception: | CODE |
| LOW | python/composio/core/models/triggers.py | 1033 | except Exception as e: | CODE |
| LOW | python/composio/core/models/triggers.py | 1124 | except Exception: | CODE |
| LOW⚡ | python/composio/core/models/triggers.py | 1691 | except Exception: | CODE |
| LOW | …thon/composio/core/models/tool_router_session_files.py | 53 | except Exception: | CODE |
| LOW | python/composio/core/models/tool_router_session.py | 651 | except Exception as error: | CODE |
| LOW | python/composio/core/models/custom_tool_execution.py | 114 | except Exception as e: | CODE |
| LOW | python/composio/core/models/_files.py | 299 | except Exception: | CODE |
| LOW | python/composio/core/models/mcp.py | 232 | except Exception as e: | CODE |
| LOW | python/composio/core/models/mcp.py | 290 | except Exception as e: | CODE |
| LOW | python/composio/core/models/mcp.py | 313 | except Exception as e: | CODE |
| LOW | python/composio/core/models/mcp.py | 413 | except Exception as e: | CODE |
| LOW | python/composio/core/models/mcp.py | 440 | except Exception as e: | CODE |
| LOW | python/composio/core/models/mcp.py | 500 | except Exception as e: | CODE |
| LOW | python/composio/core/models/custom_tool.py | 305 | except Exception: | CODE |
| LOW | python/composio/core/models/base.py | 57 | except Exception as e: | CODE |
| LOW | python/composio/utils/redaction.py | 196 | except Exception: | CODE |
| LOW | python/composio/utils/redaction.py | 201 | except Exception: | CODE |
| LOW | python/composio/utils/url_safety.py | 442 | except Exception: # pragma: no cover - platform proxy discovery can fail | CODE |
| LOW | python/composio/utils/schema_converter.py | 1432 | except Exception: # noqa: BLE001 - pydantic raises SchemaError subclasses | CODE |
| LOW | python/composio/utils/schema_converter.py | 1904 | except Exception: # noqa: BLE001 - pydantic raises SchemaError subclasses | CODE |
| LOW | python/composio/utils/schema_converter.py | 2713 | except Exception as e: | CODE |
| LOW | python/composio/utils/schema_converter.py | 2754 | except Exception as e: | CODE |
| 6 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/release-workflow.test.ts | 1562 | GITHUB_TOKEN: 'fake-token', | CODE |
| LOW | test/release-workflow.test.ts | 1581 | GITHUB_TOKEN: 'fake-token', | CODE |
| LOW | test/release-workflow.test.ts | 1608 | GITHUB_TOKEN: 'fake-token', | CODE |
| LOW | test/release-workflow.test.ts | 1638 | GITHUB_TOKEN: 'fake-token', | CODE |
| LOW | python/tests/test_tool_router.py | 2492 | "GMAIL_SEND_EMAIL", arguments={"to": "test@test.com"} | CODE |
| LOW | python/tests/test_tool_router.py | 2505 | ).execute("GMAIL_SEND_EMAIL", {"to": "test@test.com"}), | CODE |
| LOW | python/tests/test_tool_router.py | 2518 | "GMAIL_SEND_EMAIL", {"to": "test@test.com"} | CODE |
| LOW | python/tests/test_tool_router.py | 2667 | lambda ctx: ctx.execute("GMAIL_SEND_EMAIL", {"to": "test@test.com"}), | CODE |
| LOW⚡ | python/tests/test_provider.py | 904 | "for_rs": "user@example.com", | CODE |
| LOW⚡ | python/tests/test_provider.py | 913 | "for": "user@example.com", | CODE |
| LOW | python/tests/test_no_retry_writes.py | 200 | return execute("GMAIL_SEND_EMAIL", {"to": "test@test.com"}) | CODE |
| LOW | python/tests/test_no_retry_writes.py | 215 | "GMAIL_SEND_EMAIL", arguments={"to": "test@test.com"} | CODE |
| LOW | python/tests/test_no_retry_writes.py | 225 | "GMAIL_SEND_EMAIL", {"to": "test@test.com"} | CODE |
| LOW | python/docs/tool-router.md | 493 | ("placeholder", "{agent_scratchpad}"), | CODE |
| LOW | python/composio/sdk.py | 328 | session = composio.sessions.create(user_id="user@example.com") | STRING |
| LOW | docs/app/llms.mdx/[[...slug]]/route.ts | 264 | if (schema.format === 'email') return 'user@example.com'; | CODE |
| LOW | docs/kb/source/platform/self-hosted-helm/public.md | 19 | Do not set placeholder S3 credential values for IRSA deployments. Values such as `dummy-value` or a literal string `null | CODE |
| LOW | docs/kb/source/platform/self-hosted-helm/public.md | 53 | For IRSA, `S3_ACCESS_KEY_ID` and `S3_SECRET_ACCESS_KEY` should be absent from the Apollo container. Those secrets are op | CODE |
| LOW | docs/kb/articles/platform-self-hosted-helm.md | 7 | Do not set placeholder S3 credential values for IRSA deployments. Values such as `dummy-value` or a literal string `null | CODE |
| LOW | docs/kb/articles/platform-self-hosted-helm.md | 41 | For IRSA, `S3_ACCESS_KEY_ID` and `S3_SECRET_ACCESS_KEY` should be absent from the Apollo container. Those secrets are op | CODE |
| LOW | ts/docs/core-concepts.md | 77 | const userId = user.email; // e.g., "user@example.com" | CODE |
| LOW | …-tests/runtimes/node/json-schema-to-zod-v4/e2e.test.ts | 92 | name: 'Jane Doe', | CODE |
| LOW | …-tests/runtimes/node/json-schema-to-zod-v4/e2e.test.ts | 95 | { type: 'phone', value: '555-1234' }, | CODE |
| LOW | …-tests/runtimes/node/json-schema-to-zod-v3/e2e.test.ts | 93 | name: 'Jane Doe', | CODE |
| LOW | …-tests/runtimes/node/json-schema-to-zod-v3/e2e.test.ts | 96 | { type: 'phone', value: '555-1234' }, | CODE |
| LOW⚡ | ts/packages/core/test/models/noRetryExecution.test.ts | 92 | arguments: { to: 'test@test.com' }, | CODE |
| LOW⚡ | ts/packages/core/test/models/noRetryExecution.test.ts | 97 | run: client => createSession(client).execute('GMAIL_SEND_EMAIL', { to: 'test@test.com' }), | CODE |
| LOW⚡ | ts/packages/core/test/models/noRetryExecution.test.ts | 107 | to: 'test@test.com', | CODE |
| LOW | ts/packages/core/test/models/customToolRouting.test.ts | 368 | await session.execute('GMAIL_SEND_EMAIL', { to: 'test@test.com' }); | CODE |
| LOW | ts/packages/core/test/models/customToolRouting.test.ts | 374 | arguments: { to: 'test@test.com' }, | CODE |
| LOW | ts/packages/core/test/models/customToolRouting.test.ts | 450 | await session.execute('CHAINED_TOOL', { to: 'test@test.com' }); | CODE |
| LOW | ts/packages/core/test/models/customToolRouting.test.ts | 456 | arguments: { to: 'test@test.com' }, | CODE |
| LOW | ts/packages/core/test/models/customToolRouting.test.ts | 636 | tools: [{ tool_slug: 'GMAIL_SEND_EMAIL', arguments: { to: 'test@test.com' } }], | CODE |
| LOW | …ckages/core/test/models/inputRequiredExecution.test.ts | 86 | arguments: { to: 'test@test.com' }, | CODE |
| LOW | …ckages/core/test/models/inputRequiredExecution.test.ts | 92 | run: client => createSession(client).execute('GMAIL_SEND_EMAIL', { to: 'test@test.com' }), | CODE |
| LOW | …ckages/core/test/models/inputRequiredExecution.test.ts | 104 | to: 'test@test.com', | CODE |
| LOW | …ckages/core/test/models/inputRequiredExecution.test.ts | 248 | call: ctx => ctx.execute('GMAIL_SEND_EMAIL', { to: 'test@test.com' }), | CODE |
| LOW | ts/packages/core/test/models/toolRouter.test.ts | 2889 | to: 'user@example.com', | CODE |
| LOW | ts/packages/core/test/models/toolRouter.test.ts | 2898 | arguments: { to: 'user@example.com', subject: 'Hi', body: 'Hello' }, | CODE |
| LOW | ts/packages/core/test/models/toolRouter.test.ts | 2953 | await session.execute('GMAIL_SEND_EMAIL', { to: 'user@example.com' }, { account: 'work' }); | CODE |
| LOW | ts/packages/core/test/models/toolRouter.test.ts | 2959 | arguments: { to: 'user@example.com' }, | CODE |
| LOW | ts/packages/core/test/models/toolRouter.test.ts | 2990 | await session.execute('GMAIL_SEND_EMAIL', { to: 'user@example.com' }); | CODE |
| LOW | ts/packages/core/test/models/toolRouter.test.ts | 2996 | arguments: { to: 'user@example.com' }, | CODE |
| LOW | ts/packages/core/test/models/toolRouter.test.ts | 3235 | await routingExecute('GMAIL_SEND_EMAIL', { to: 'user@example.com' }); | CODE |
| LOW | ts/packages/core/test/models/toolRouter.test.ts | 3239 | { sessionId, arguments: { to: 'user@example.com' } }, | CODE |
| LOW | ts/packages/core/test/models/customTool.test.ts | 808 | const result = await ctx.execute('GMAIL_SEND_EMAIL', { to: 'test@test.com' }); | CODE |
| LOW | ts/packages/core/test/models/customTool.test.ts | 814 | arguments: { to: 'test@test.com' }, | CODE |
| LOW | ts/packages/core/test/models/customTool.test.ts | 844 | await ctx.execute('GMAIL_SEND_EMAIL', { to: 'test@test.com' }); | CODE |
| LOW | ts/packages/core/test/models/customTool.test.ts | 850 | arguments: { to: 'test@test.com' }, | CODE |
| LOW | …on-schema-to-zod/test/comprehensive-edge-case-tests.ts | 234 | user: { name: 'John Doe', email: 'john@example.com' }, | CODE |
| LOW | ts/packages/json-schema-to-zod/test/json-to-zod.test.ts | 760 | name: 'John Doe', | CODE |
| LOW | ts/packages/json-schema-to-zod/test/json-to-zod.test.ts | 772 | name: 'John Doe', | CODE |
| LOW | ts/packages/cli/test/src/models/project-keys.test.ts | 29 | email: 'test@test.com', | CODE |
| LOW | ts/packages/cli/test/src/models/project-keys.test.ts | 39 | expect(Option.getOrUndefined(result.email)).toBe('test@test.com'); | CODE |
| LOW | ts/packages/cli/test/src/models/project-keys.test.ts | 138 | email: Option.some('test@test.com'), | CODE |
| LOW | ts/packages/cli/test/src/models/project-keys.test.ts | 149 | expect(parsed.email).toBe('test@test.com'); | CODE |
| LOW | ts/packages/cli/test/src/models/project-keys.test.ts | 186 | email: Option.some('user@example.com'), | CODE |
| LOW | …ackages/cli/test/src/scripts/release-artifacts.test.ts | 30 | expect(pathsOfKind('placeholder')).toEqual([ | CODE |
| LOW | ts/packages/cli/scripts/_release-artifacts.ts | 20 | export type ArchiveCompanionEntryKind = 'copy' | 'placeholder'; | CODE |
| LOW | ts/packages/cli/scripts/_release-artifacts.ts | 47 | kind: 'placeholder' as const, | CODE |
| 1 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | install.sh | 401 | # bash/zsh and `set --export PATH "<dir>" $PATH` for fish -- so the set is | COMMENT |
| LOW | pnpm-workspace.yaml | 61 | zod: ^4.5.4 | COMMENT |
| LOW | pnpm-workspace.yaml | 101 | # (see pinnedDispatcher.node.ts -- Node's fetch rejects undici 8 dispatchers). | COMMENT |
| LOW | pnpm-workspace.yaml | 121 | 'undici@>=5.0.0 <6.28.1': '>=6.28.1 <7' | COMMENT |
| LOW | pnpm-workspace.yaml | 141 | 'ip-address@>=10.0.0 <10.7.1': '>=10.7.1 <11' | COMMENT |
| LOW | pnpm-workspace.yaml | 161 | # GHSA-rgw5-rvv9-x895, GHSA-6j4f-fj2g-mc7p, and GHSA-qhr7-859c-m2p7 raise | COMMENT |
| LOW | pnpm-workspace.yaml | 181 | auditConfig: | COMMENT |
| LOW | python/config/vulture_allowlist.py | 1 | # Vulture allowlist — confirmed false positives. | COMMENT |
| LOW | python/examples/triggers.py | 61 | # result = composio.triggers.verify_webhook( | COMMENT |
| LOW | python/scripts/create-provider.sh | 261 | :param modifiers: Modifiers to use for executing function calls. | COMMENT |
| LOW | python/scripts/create-provider.sh | 301 | tools = composio.tools.get( | COMMENT |
| LOW | python/scripts/create-provider.sh | 341 | # from ${PROVIDER_NAME} import ${TITLE_CASE_PROVIDER_NAME} # Import your AI client | COMMENT |
| LOW | python/scripts/create-provider.sh | 441 | toolkits=["github"] | COMMENT |
| LOW | python/composio/utils/schema_converter.py | 1861 | # their patterns: LLM tool arguments, including object keys. Python's `re` | COMMENT |
| LOW | docs/lib/eve-empty-module.js | 1 | // Browser stub for `node:module`. eve's bundled rolldown CJS-interop helper | COMMENT |
| LOW | docs/lib/toolkit-count.ts | 1 | import toolkitsData from '@/public/data/toolkits-list.json'; | COMMENT |
| LOW | .github/workflows/docs-agent-eval.yml | 1 | # Docs Agent Eval — label-triggered CI check (V1, informational) | COMMENT |
| LOW | .github/workflows/agent-substrate.yml | 1 | name: Agent Substrate | COMMENT |
| LOW | .github/workflows/claude.yml | 41 | allowed_bots: "devin-ai-integration[bot],decimal-pr-bot[bot],github-actions[bot],dependabot[bot],zen-agent" | COMMENT |
| LOW | .github/workflows/claude.yml | 61 | COMMENT | |
| LOW | .github/workflows/cli.install-health-check.yml | 61 | # edit on this ephemeral runner is harmless). Asset-aware and self-healing, so it is a | COMMENT |
| LOW | .github/workflows/docs-update-data.yml | 21 | pull-requests: write | COMMENT |
| LOW | .github/scripts/check-orphan-ci.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | .github/scripts/check-action-repos.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | …ithub/scripts/cli-release/verify-archive-companions.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | .github/scripts/cli-release/create-or-resume-draft.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | .github/scripts/cli-release/resolve-release-target.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | .github/scripts/cli-release/verify-assets.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | …examples/cloudflare-wrangler/worker-configuration.d.ts | 6681 | } : T; | COMMENT |
| LOW | ts/packages/core/test/AuthConfigs/authConfigs.test.ts | 681 | const apiError = new Error('Disable failed'); | COMMENT |
| LOW | ts/packages/core/test/AuthConfigs/authConfigs.test.ts | 701 | // logo: 'valid_logo', | COMMENT |
| LOW | ts/packages/core/test/models/toolRouter.test.ts | 781 | COMMENT | |
| LOW | ts/packages/core/test/models/toolRouter.test.ts | 801 | // mockClient.toolRouter.session.create.mockResolvedValueOnce(mockSessionCreateResponse); | COMMENT |
| LOW | ts/packages/core/test/models/toolRouter.test.ts | 821 | // }, | COMMENT |
| LOW | ts/packages/core/test/models/toolRouter.test.ts | 841 | COMMENT | |
| LOW | ts/packages/core/test/models/toolRouter.test.ts | 861 | // const config: ToolRouterCreateSessionConfig = { | COMMENT |
| LOW | ts/packages/core/test/models/toolRouter.test.ts | 881 | // execution: undefined, | COMMENT |
| LOW | ts/packages/core/test/models/toolRouter.test.ts | 901 | // tools: { | COMMENT |
| LOW | ts/packages/core/test/models/toolRouter.test.ts | 921 | // await toolRouter.create(userId, config); | COMMENT |
| LOW | ts/packages/core/test/models/toolRouter.test.ts | 941 | COMMENT | |
| LOW | ts/packages/core/test/models/toolRouter.test.ts | 961 | // gmail: { enable: ['GMAIL_FETCH_EMAILS'] }, | COMMENT |
| LOW | ts/packages/core/test/models/toolRouter.test.ts | 1441 | // tools: { | COMMENT |
| LOW | ts/packages/core/test/models/toolRouter.test.ts | 1461 | // }; | COMMENT |
| LOW | ts/packages/core/test/models/toolRouter.test.ts | 1481 | // tags: { include: ['important'] }, | COMMENT |
| LOW | ts/packages/core/test/models/toolRouter.test.ts | 1501 | // }, | COMMENT |
| LOW | ts/packages/core/test/models/toolRouter.test.ts | 1521 | // gmail: { disable: ['GMAIL_DELETE_EMAIL'] }, | COMMENT |
| LOW | ts/packages/core/test/models/toolRouter.test.ts | 1541 | // }, | COMMENT |
| LOW | ts/packages/core/test/models/toolRouter.test.ts | 1561 | // }, | COMMENT |
| LOW | ts/packages/core/src/types/tool.types.ts | 141 | not: JSONSchemaPropertySchema.optional(), | COMMENT |
| LOW | …ges/core/src/types/connectedAccountAuthStates.types.ts | 521 | // SnowflakeInitiatingSchema.extend({ | COMMENT |
| LOW | …es/cli-keyring/src/stores/macos-security-subprocess.ts | 121 | // If a previous composio version wrote this entry with a | COMMENT |
| LOW | …es/cli-keyring/src/stores/macos-security-subprocess.ts | 141 | // (produces a genuine allow-any ACL — the only configuration | COMMENT |
| LOW | …/packages/cli-keyring/src/stores/macos-security-ffi.ts | 461 | // (subprocess) because that is the ONLY path that reliably produces | COMMENT |
| LOW | …/packages/cli-keyring/src/stores/macos-security-ffi.ts | 481 | // produces per-binary ACLs — see the long comment block above), | COMMENT |
| LOW | ts/packages/cli/test/__utils__/services/mock-console.ts | 1 | // Adapted from `effect/testing`'s `TestConsole` (vendored at | COMMENT |
| LOW | ts/packages/cli/test/src/analytics.dispatch.test.ts | 41 | for (let index = 0; index < cwd.length; index += 1) { | COMMENT |
| LOW | …ges/cli/test/src/effect-errors/span-annotation.test.ts | 21 | describe('extractSpanStackFrames', () => { | COMMENT |
| LOW | ts/packages/cli/test/src/commands/install.cmd.test.ts | 61 | // The atomic-write tmp name embeds the pid, so litter checks scan the target's | COMMENT |
| LOW | …/cli/src/effect-errors/logic/errors/span-annotation.ts | 1 | import { type Reason, reasonAnnotations, StackTrace } from 'effect/Cause'; | COMMENT |
| LOW | ts/packages/cli/src/services/composio-clients-cached.ts | 181 | // `Effect.cached` memoizes the outcome, not just the success — a failed | COMMENT |
| 3 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | python/providers/typesafe/composio_typesafe/compile.py | 104 | return f'The request explicitly asks for no value (null) for "{argument}".' | CODE |
| HIGH | python/providers/typesafe/composio_typesafe/compile.py | 133 | f'The request explicitly asks for no value (null) for "{argument}".' | CODE |
| HIGH | python/tests/test_typesafe_provider.py | 688 | == 'The request explicitly asks for no value (null) for "flag".' | CODE |
| HIGH | python/tests/test_strict_schema.py | 891 | # The tool's own schema accepts the null, so it is forwarded. | COMMENT |
| HIGH | python/tests/test_strict_schema.py | 953 | # Both branches accept null, so `oneOf` rejects it; the second is only | COMMENT |
| HIGH | python/tests/test_schema_parser.py | 928 | Test that CustomFields with anyOf [object, null] returns Dict, not str. | STRING |
| HIGH | python/tests/test_schema_parser.py | 1178 | Test that anyOf [boolean, null] with boolean default preserves types. | STRING |
| HIGH | python/tests/test_schema_parser.py | 1639 | """Nullable anyOf [type, null] continues to resolve without raising.""" | STRING |
| HIGH | python/scripts/generate-docs.py | 8 | Run: cd python && uv run --with griffe python scripts/generate-docs.py | STRING |
| HIGH | …mental/src/workbench/python-helpers/composio_helper.py | 424 | # `status` can arrive as a string or null, so coerce it before comparing | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | python/providers/google/composio_google/provider.py | 128 | CODE | |
| LOW | …iders/openai_agents/composio_openai_agents/provider.py | 17 | CODE | |
| LOW | python/providers/typesafe/composio_typesafe/response.py | 127 | CODE | |
| LOW | python/providers/typesafe/composio_typesafe/decide.py | 462 | CODE | |
| LOW | python/tests/test_url_safety_pinning.py | 139 | CODE | |
| LOW | python/tests/test_strict_schema_properties.py | 52 | CODE | |
| LOW | python/tests/test_strict_schema_properties.py | 112 | CODE | |
| LOW | python/tests/test_sdk.py | 108 | CODE | |
| LOW | python/tests/test_sdk.py | 153 | CODE | |
| LOW | python/tests/test_sdk.py | 182 | CODE | |
| LOW | python/tests/test_path_join_guardrail.py | 321 | CODE | |
| LOW | python/tests/test_path_join_guardrail.py | 368 | CODE | |
| LOW | python/scripts/generate-docs.py | 197 | CODE | |
| LOW | python/scripts/generate-docs.py | 318 | CODE | |
| LOW | python/scripts/generate-docs.py | 389 | CODE | |
| LOW | python/scripts/generate-docs.py | 632 | CODE | |
| LOW | python/composio/integration_test/conftest.py | 40 | CODE | |
| LOW | …thon/composio/core/models/tool_router_session_files.py | 82 | CODE | |
| LOW | …thon/composio/core/models/tool_router_session_files.py | 193 | CODE | |
| LOW | python/composio/core/models/tool_router_session.py | 988 | CODE | |
| LOW | python/composio/core/models/tool_router.py | 664 | CODE | |
| LOW | python/composio/core/models/tool_router.py | 764 | CODE | |
| LOW | python/composio/core/models/_files.py | 381 | CODE | |
| LOW | python/composio/core/models/_files.py | 689 | CODE | |
| LOW | python/composio/core/models/_files.py | 831 | CODE | |
| LOW | python/composio/core/models/_modifiers.py | 595 | CODE | |
| LOW | python/composio/core/models/mcp.py | 316 | CODE | |
| LOW | python/composio/core/models/connected_accounts.py | 589 | CODE | |
| LOW | python/composio/utils/redaction.py | 60 | CODE | |
| LOW | python/composio/utils/redaction.py | 142 | CODE | |
| LOW | python/composio/utils/redaction.py | 147 | CODE | |
| LOW | python/composio/utils/strict_schema.py | 376 | CODE | |
| LOW | python/composio/utils/schema_converter.py | 234 | CODE | |
| LOW | python/composio/utils/schema_converter.py | 576 | CODE | |
| LOW | python/composio/utils/schema_converter.py | 736 | CODE | |
| LOW | python/composio/utils/schema_converter.py | 1529 | CODE | |
| LOW | python/composio/utils/schema_converter.py | 1672 | CODE | |
| LOW | python/composio/utils/schema_converter.py | 1715 | CODE | |
| LOW | python/composio/utils/schema_converter.py | 1801 | CODE | |
| LOW | python/composio/utils/schema_converter.py | 2338 | CODE | |
| LOW | python/composio/utils/schema_converter.py | 2515 | CODE | |
| LOW | python/composio/utils/schema_converter.py | 2599 | CODE | |
| LOW | python/composio/utils/schema_converter.py | 1978 | CODE | |
| LOW | python/composio/utils/openapi.py | 93 | CODE | |
| LOW | python/composio/utils/shared.py | 145 | CODE | |
| LOW | python/composio/utils/shared.py | 407 | CODE | |
| LOW | python/composio/utils/shared.py | 687 | CODE | |
| LOW | python/composio/utils/json_schema.py | 80 | CODE | |
| LOW | python/composio/utils/json_schema.py | 126 | CODE | |
| LOW | python/composio/utils/json_schema.py | 163 | CODE | |
| LOW | …mental/src/workbench/python-helpers/composio_helper.py | 303 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | python/tests/test_auto_upload_download_files.py | 0 | disable telemetry for all tests to prevent thread issues. | STRING |
| HIGH | python/tests/test_file_upload_robustness.py | 0 | disable telemetry for all tests to prevent thread issues. | STRING |
| HIGH | python/tests/test_gemini_provider.py | 0 | disable telemetry for all tests to prevent thread issues. | STRING |
| HIGH | python/tests/test_client_errors.py | 0 | disable telemetry for all tests to prevent thread issues. | STRING |
| HIGH | python/tests/test_tool_execution.py | 0 | disable telemetry for all tests to prevent thread issues. | STRING |
| HIGH | python/tests/test_provider.py | 0 | disable telemetry for all tests to prevent thread issues. | STRING |
| HIGH | python/tests/test_files.py | 0 | disable telemetry for all tests to prevent thread issues. | STRING |
| HIGH | python/tests/test_no_retry_writes.py | 0 | disable telemetry for all tests to prevent thread issues. | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | python/composio/integration_test/test_mcp.py | 474 | # Step 1: Create MCP config | COMMENT |
| LOW⚡ | python/composio/integration_test/test_mcp.py | 488 | # Step 2: Generate server instance | COMMENT |
| LOW⚡ | python/composio/integration_test/test_mcp.py | 492 | # Step 3: Verify server instance | COMMENT |
| LOW | python/composio/integration_test/test_mcp.py | 530 | # Step 1: CREATE MCP server | COMMENT |
| LOW | python/composio/integration_test/test_mcp.py | 551 | # Step 2: GET MCP server | COMMENT |
| LOW | python/composio/integration_test/test_mcp.py | 562 | # Step 3: UPDATE MCP server | COMMENT |
| LOW | python/composio/integration_test/test_mcp.py | 578 | # Step 4: GET updated MCP server | COMMENT |
| LOW | .claude/commands/api-update.md | 7 | ### Step 1: Check for Open PRs | COMMENT |
| LOW⚡ | .claude/commands/api-update.md | 20 | ### Step 2: Get PR Patches | COMMENT |
| LOW⚡ | .claude/commands/api-update.md | 28 | ### Step 3: Analyze Changes | COMMENT |
| LOW⚡ | .claude/commands/api-update.md | 38 | ### Step 4: Identify SDK Impact | COMMENT |
| LOW | .claude/commands/api-update.md | 62 | ### Step 5: Check Current Client Versions | COMMENT |
| LOW | .claude/commands/api-update.md | 68 | ### Step 6: Create Update Plan | COMMENT |
| LOW | ts/docs/getting-started.md | 206 | // Step 1: Authorize the toolkit | COMMENT |
| LOW | ts/docs/getting-started.md | 212 | // Step 2: Wait for the connection to be established | COMMENT |
| LOW | ts/docs/advanced/error-handling.md | 105 | // Step 1: Authorize the toolkit | COMMENT |
| LOW | ts/docs/advanced/error-handling.md | 108 | // Step 2: Wait for the connection to be established | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | python/scripts/create-provider.sh | 3 | # Check if provider name is provided | COMMENT |
| LOW | python/scripts/create-provider.sh | 41 | # Check if provider directory already exists | COMMENT |
| LOW⚡ | python/composio/core/models/triggers.py | 1686 | # Check if any of the provided signatures match (timing-safe) | COMMENT |
| LOW | python/composio/core/models/tool_router_session.py | 929 | # Check if this is a local tool (by original or final slug) | COMMENT |
| LOW | python/composio/core/models/tools.py | 717 | # Check if the version is 'latest' and dangerously_skip_version_check is not True | COMMENT |
| LOW | python/composio/core/models/_modifiers.py | 625 | # Check if modifier should be applied | COMMENT |
| LOW | python/composio/core/models/_modifiers.py | 643 | # Check if modifier should be applied | COMMENT |
| LOW | python/composio/core/models/connected_accounts.py | 633 | # Check if there are multiple connected accounts for the authConfig of the user | COMMENT |
| LOW | python/composio/core/models/base.py | 29 | # Check if the method is a class method | COMMENT |
| LOW | python/composio/utils/toolkit_version.py | 73 | # Check if there are envs similar to COMPOSIO_TOOLKIT_VERSION_GITHUB then extract the toolkit name | COMMENT |
| LOW | python/composio/utils/shared.py | 508 | # Check if the field name is a reserved Pydantic name | COMMENT |
| LOW | python/composio/client/__init__.py | 296 | # Check if running in a container (generic) | COMMENT |
| LOW | .github/workflows/cli.test-installation.yml | 452 | # Check if binary is gone | COMMENT |
| LOW | ts/scripts/create-example.sh | 3 | # Check if example name is provided | COMMENT |
| LOW | ts/scripts/create-example.sh | 14 | # Check if example directory already exists | COMMENT |
| LOW | ts/scripts/create-provider.sh | 3 | # Check if provider name is provided | COMMENT |
| LOW | ts/scripts/create-provider.sh | 14 | # Check if provider should be agentic | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | python/providers/openai/composio_openai/provider.py | 8 | __all__ = ["OpenAIProvider", "OpenAIResponsesProvider"] | CODE |
| LOW | python/composio/types.py | 24 | __all__ = [ | CODE |
| LOW | python/composio/integration_test/__init__.py | 8 | __all__ = [] | CODE |
| LOW | python/composio/core/types.py | 15 | __all__ = [ | CODE |
| LOW | python/composio/core/provider/__init__.py | 7 | __all__ = [ | CODE |
| LOW | python/composio/core/provider/base.py | 86 | def set_execute_tool_fn(self, execute_tool_fn: ExecuteToolFn) -> None: | CODE |
| LOW | python/composio/core/models/triggers.py | 208 | __all__ = [ | CODE |
| LOW | python/composio/core/models/triggers.py | 867 | def set_alive(self) -> None: | CODE |
| LOW | python/composio/core/models/tools.py | 911 | __all__ = [ | CODE |
| LOW | python/composio/core/models/__init__.py | 47 | __all__ = [ | CODE |
| LOW | python/composio/core/models/tool_router.py | 70 | logger = logging.getLogger(__name__) | CODE |
| LOW | python/composio/core/models/tool_router.py | 1430 | __all__ = [ | CODE |
| LOW | python/composio/core/models/connected_accounts.py | 30 | logger = logging.getLogger(__name__) | CODE |
| LOW | python/composio/utils/__init__.py | 27 | __all__ = [ | CODE |
| LOW | python/composio/utils/shared.py | 35 | __all__ = [ | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | harness/trace-py/sitecustomize.py | 16 | # Mirrors harness/backend-url.mjs: COMPOSIO_BASE_URL selects the backend and | COMMENT |
| MEDIUM | .github/workflows/examples-live.yml | 7 | # (harness/run.mjs sweep). | COMMENT |
| MEDIUM | .github/workflows/examples-live.yml | 61 | # Keep unavailable coverage explicit. The harness records excluded entry ids | COMMENT |
| MEDIUM | .github/workflows/cli.install-e2e.yml | 33 | # provisioned in production yet — they 404. Until they ship, the harness's prod | COMMENT |
| MEDIUM | .github/workflows/cli.install-health-check.yml | 150 | # This mirrors the harness's assert_login_bash_path clean-environment probe. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | python/composio/integration_test/test_mcp.py | 474 | # Step 1: Create MCP config | COMMENT |
| LOW⚡ | python/composio/integration_test/test_mcp.py | 488 | # Step 2: Generate server instance | COMMENT |
| LOW⚡ | python/composio/integration_test/test_mcp.py | 492 | # Step 3: Verify server instance | COMMENT |
| LOW | python/composio/integration_test/test_mcp.py | 530 | # Step 1: CREATE MCP server | COMMENT |
| LOW | python/composio/integration_test/test_mcp.py | 551 | # Step 2: GET MCP server | COMMENT |
| LOW | python/composio/integration_test/test_mcp.py | 562 | # Step 3: UPDATE MCP server | COMMENT |
| LOW | python/composio/integration_test/test_mcp.py | 578 | # Step 4: GET updated MCP server | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | python/composio/core/models/_files.py | 235 | Upload file to presigned S3 URL. Args: url: Presigned S3 upload URL file: Path to file to upload | STRING |
| HIGH | python/composio/core/models/_files.py | 385 | Fetch file content from a URL with security protections. Security features: - Response size limiting (prevents | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | .github/workflows/docs.sdk-change-sync.yml | 160 | Generated by Claude Code via GitHub Actions. | CODE |
| HIGH | .github/workflows/docs.sync-connect-clients.yml | 100 | Generated by Claude Code via GitHub Actions. | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | python/providers/typesafe/composio_typesafe/provider.py | 267 | CODE | |
| LOW | python/examples/mcp_example.py | 44 | CODE | |
| LOW | python/composio/core/models/tool_router_session.py | 246 | CODE | |
| LOW | python/composio/core/models/tool_router_session.py | 1064 | CODE | |
| LOW | python/composio/core/models/tools.py | 743 | CODE | |
| LOW | python/composio/core/models/tool_router.py | 707 | CODE | |
| LOW | python/composio/core/models/tool_router.py | 736 | CODE | |
| LOW | python/composio/core/models/tool_router.py | 764 | CODE | |
| LOW | python/composio/client/__init__.py | 327 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | ts/packages/cli/test/__utils__/python-compiler.ts | 236 | def test_function(): | CODE |
| LOW⚡ | ts/packages/cli/test/__utils__/python-compiler.ts | 246 | def test_function(): | CODE |