Open-source security automation platform for teams and AI agents
This report presents the forensic synthetic code analysis of TracecatHQ/tracecat, a Python project with 3,782 GitHub stars. SynthScan v2.0 examined 986,987 lines of code across 4042 source files, recording 13081 pattern matches distributed across 26 syntactic categories. The overall adjusted score of 15.1 places this repository in the Moderate AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 13081 distinct pattern matches across 26 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | frontend/tests/case-comments-section.test.tsx | 244 | function createAgentPresetFixtures(): AgentPresetReadMinimal[] { | CODE |
| LOW | frontend/tests/memo-render-count.test.tsx | 108 | function makeCompletedToolMessages(toolInput: unknown, toolOutput: unknown) { | CODE |
| LOW | frontend/tests/org-vcs-github-manual-form.test.tsx | 37 | function installDeferredFileReader() { | CODE |
| LOW | frontend/tests/use-chat.test.tsx | 57 | function createSessionReadWithMessages( | CODE |
| LOW | frontend/tests/workspace-sync-settings.test.tsx | 113 | function createCatalogMappingRequirement( | CODE |
| LOW | frontend/tests/workspace-sync-settings.test.tsx | 139 | function createMcpMappingRequirement( | CODE |
| LOW | frontend/tests/smoke/utils/auth.ts | 87 | export async function createOrganizationInvitation( | CODE |
| LOW | frontend/src/types/workspace-chat-artifacts.ts | 231 | export function parseWorkspaceChatArtifactStreamPart( | CODE |
| LOW | …rc/app/organization/settings/service-accounts/page.tsx | 11 | export default function OrganizationServiceAccountsPage() { | CODE |
| LOW | …src/app/organization/settings/custom-registry/page.tsx | 10 | export default function CustomRegistrySettingsPage() { | CODE |
| LOW | …anization/settings/custom-registry/versions/layout.tsx | 7 | export default function CustomRegistryVersionsLayout({ | CODE |
| LOW | …rganization/settings/custom-registry/versions/page.tsx | 13 | export default function CustomRegistryVersionsPage() { | CODE |
| LOW | frontend/src/app/admin/registry/settings/page.tsx | 5 | export default function AdminRegistrySettingsPage() { | CODE |
| LOW | frontend/src/app/admin/registry/versions/page.tsx | 5 | export default function AdminRegistryVersionsPage() { | CODE |
| LOW | …kspaceId]/workflows/[workflowId]/executions/layout.tsx | 49 | function WorkflowExecutionsPanelGroup({ | CODE |
| LOW | …src/app/workspaces/[workspaceId]/integrations/page.tsx | 91 | function getIntegrationDisplayType( | CODE |
| LOW | …p/workspaces/[workspaceId]/service-accounts/layout.tsx | 7 | export default function WorkspaceServiceAccountsLayout({ | CODE |
| LOW | …app/workspaces/[workspaceId]/service-accounts/page.tsx | 7 | export default function WorkspaceServiceAccountsPage() { | CODE |
| LOW | …/src/app/workspaces/[workspaceId]/mcp-servers/page.tsx | 92 | function connectionSpecFromIntegration( | CODE |
| LOW | …/src/app/workspaces/[workspaceId]/mcp-servers/page.tsx | 145 | function workspaceIntegrationToCatalogEntry( | CODE |
| LOW | …/src/app/workspaces/[workspaceId]/mcp-servers/page.tsx | 176 | function workspaceIntegrationMatches( | CODE |
| LOW | …/src/app/workspaces/[workspaceId]/mcp-servers/page.tsx | 240 | function isCatalogEntryConnectable(entry: PlatformMCPCatalogRead) { | CODE |
| LOW | frontend/src/providers/builder.tsx | 51 | function readPersistedSelectedNode({ | CODE |
| LOW | frontend/src/providers/builder.tsx | 73 | function writePersistedSelectedNode({ | CODE |
| LOW | frontend/src/providers/agent-preset-detail.tsx | 43 | export function AgentPresetDetailProvider({ | CODE |
| LOW | frontend/src/providers/agent-preset-detail.tsx | 66 | export function useAgentPresetDetailContext(): AgentPresetDetailContextValue | null { | CODE |
| LOW | frontend/src/components/error-boundaries.tsx | 159 | export function WorkflowBuilderErrorBoundary({ | CODE |
| LOW | frontend/src/components/error-boundaries.tsx | 180 | export function TemplatePillErrorBoundary({ | CODE |
| LOW | frontend/src/components/mcp-catalog-icons.tsx | 16 | function createEmbeddedCatalogIcon(href: string, darkHref?: string) { | CODE |
| LOW | frontend/src/components/dynamic-lucide-icon.tsx | 7 | function buildLegacyIconCandidates(rawName: string): string[] { | CODE |
| LOW | frontend/src/components/provider-config-form.tsx | 573 | export function ProviderConfigFormSkeleton() { | CODE |
| LOW | frontend/src/components/icons.tsx | 301 | function createCatalogIconRenderer( | CODE |
| LOW | frontend/src/components/icons.tsx | 314 | function createColoredLucideRenderer(Icon: LucideIcon, colorClassName: string) { | CODE |
| LOW | …nd/src/components/entitlement-required-empty-state.tsx | 25 | export function EntitlementRequiredEmptyState({ | CODE |
| LOW | …ntend/src/components/service-account-json-uploader.tsx | 28 | export function ServiceAccountJsonUploader({ | CODE |
| LOW | …d/src/components/organization/workspace-mcp-access.tsx | 103 | function getDefaultCustomExpiration(): string { | CODE |
| LOW⚡ | …end/src/components/organization/org-settings-agent.tsx | 2486 | function handleProviderCredentialsSaved() { | CODE |
| LOW⚡ | …end/src/components/organization/org-settings-agent.tsx | 2496 | function handleOpenAddCatalogModel(providerSlug: string) { | CODE |
| LOW⚡ | …end/src/components/organization/org-settings-agent.tsx | 2503 | function handleOpenEditCatalogModel(model: BuiltInCatalogEntry) { | CODE |
| LOW | …end/src/components/organization/org-settings-agent.tsx | 257 | function buildCloudCatalogDefaults( | CODE |
| LOW | …end/src/components/organization/org-settings-agent.tsx | 304 | function buildCatalogCreatePayload( | CODE |
| LOW | …end/src/components/organization/org-settings-agent.tsx | 350 | function buildCatalogUpdatePayload(values: CloudCatalogModelFormValues) { | CODE |
| LOW | …end/src/components/organization/org-settings-agent.tsx | 575 | function getCustomSourceFlavorLabel(flavor?: string | null): string | null { | CODE |
| LOW | …end/src/components/organization/org-settings-agent.tsx | 638 | function getCustomSourceModelTitle( | CODE |
| LOW | …end/src/components/organization/org-settings-agent.tsx | 688 | function canEnableBuiltInCatalogModel(model: BuiltInCatalogEntry): boolean { | CODE |
| LOW | …end/src/components/organization/org-settings-agent.tsx | 720 | function getProviderDialogDefaults( | CODE |
| LOW | …end/src/components/organization/org-settings-agent.tsx | 736 | function buildProviderCreatePayload( | CODE |
| LOW | …end/src/components/organization/org-settings-agent.tsx | 749 | function buildProviderUpdatePayload( | CODE |
| LOW | …end/src/components/organization/org-settings-agent.tsx | 1192 | function ProviderAllowlistModelRow({ | CODE |
| LOW | …end/src/components/organization/org-settings-agent.tsx | 2209 | function invalidateOrganizationAgentQueries() { | CODE |
| LOW | …end/src/components/organization/org-settings-agent.tsx | 2221 | function invalidateBuiltInAgentQueries() { | CODE |
| LOW | …end/src/components/organization/org-settings-agent.tsx | 2321 | async function handleDeleteBuiltInCredentials( | CODE |
| LOW | …end/src/components/organization/org-settings-agent.tsx | 2380 | async function handleEnableAllProviderModels( | CODE |
| LOW | …end/src/components/organization/org-settings-agent.tsx | 2415 | async function handleDisableAllProviderModels( | CODE |
| LOW | …end/src/components/organization/org-settings-agent.tsx | 2451 | async function handleRefreshCustomProvider(source: CustomSourceCard) { | CODE |
| LOW | …end/src/components/organization/org-settings-agent.tsx | 2469 | async function handleDeleteCustomProvider(provider: AgentCustomProviderRead) { | CODE |
| LOW | …end/src/components/organization/org-settings-agent.tsx | 2517 | function handleOpenDeleteCatalogModel(model: BuiltInCatalogEntry) { | CODE |
| LOW | …end/src/components/organization/org-settings-agent.tsx | 2525 | async function handleConfirmDeleteCatalogEntry(entry: AgentCatalogRead) { | CODE |
| LOW | …end/src/components/organization/org-settings-audit.tsx | 218 | function normalizePayloadAttribute(value: string | null | undefined): string { | CODE |
| LOW | …mponents/organization/org-settings-custom-registry.tsx | 53 | export function OrgSettingsCustomRegistryForm() { | CODE |
| 9315 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | frontend/src/components/skills/use-skills-studio.ts | 188 | // ── State ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/components/skills/use-skills-studio.ts | 216 | // ── Data fetching ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/components/skills/use-skills-studio.ts | 258 | // ── Derived ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/components/skills/use-skills-studio.ts | 285 | // ── Effects ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/components/skills/use-skills-studio.ts | 314 | // ── Stable callbacks ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/components/skills/use-skills-studio.ts | 335 | // ── Handlers ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/components/skills/use-skills-studio.ts | 786 | // ── Return ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/lib/hooks.tsx | 6333 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/lib/hooks.tsx | 6335 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/conftest.py | 281 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/conftest.py | 283 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/conftest.py | 296 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/conftest.py | 298 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/conftest.py | 1997 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/conftest.py | 2000 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/conftest.py | 2114 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/conftest.py | 2116 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/temporal/test_durable_agent_workflow.py | 146 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | tests/temporal/test_durable_agent_workflow.py | 148 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | tests/temporal/test_durable_agent_workflow.py | 578 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | tests/temporal/test_durable_agent_workflow.py | 580 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | tests/temporal/test_durable_agent_workflow.py | 2667 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | tests/temporal/test_durable_agent_workflow.py | 2669 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | tests/temporal/test_durable_agent_workflow.py | 3162 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | tests/temporal/test_durable_agent_workflow.py | 3164 | # ============================================================================= | COMMENT |
| MEDIUM | tests/temporal/test_durable_agent_workflow.py | 437 | # ============================================================================= | COMMENT |
| MEDIUM | tests/temporal/test_durable_agent_workflow.py | 439 | # ============================================================================= | COMMENT |
| MEDIUM | tests/temporal/test_agent_config_workflow_boundary.py | 217 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/temporal/test_agent_config_workflow_boundary.py | 227 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/test_deduplicate.py | 23 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/test_deduplicate.py | 25 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/test_deduplicate.py | 60 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/test_deduplicate.py | 62 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/test_deduplicate.py | 86 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/test_deduplicate.py | 88 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/test_deduplicate.py | 171 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/test_deduplicate.py | 173 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/test_registry_repository.py | 81 | # ============================================================================= | COMMENT |
| MEDIUM | tests/unit/test_registry_repository.py | 83 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | tests/unit/test_registry_repository.py | 255 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | tests/unit/test_registry_repository.py | 257 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | tests/unit/test_claude_adapter.py | 43 | # ============================================================================== | COMMENT |
| MEDIUM⚡ | tests/unit/test_claude_adapter.py | 45 | # ============================================================================== | COMMENT |
| MEDIUM⚡ | tests/unit/test_claude_adapter.py | 53 | # ============================================================================== | COMMENT |
| MEDIUM⚡ | tests/unit/test_claude_adapter.py | 55 | # ============================================================================== | COMMENT |
| MEDIUM⚡ | tests/unit/test_claude_adapter.py | 134 | # ============================================================================== | COMMENT |
| MEDIUM⚡ | tests/unit/test_claude_adapter.py | 136 | # ============================================================================== | COMMENT |
| MEDIUM⚡ | tests/unit/test_claude_adapter.py | 230 | # ============================================================================== | COMMENT |
| MEDIUM⚡ | tests/unit/test_claude_adapter.py | 232 | # ============================================================================== | COMMENT |
| MEDIUM⚡ | tests/unit/test_claude_adapter.py | 472 | # ============================================================================== | COMMENT |
| MEDIUM⚡ | tests/unit/test_claude_adapter.py | 474 | # ============================================================================== | COMMENT |
| MEDIUM⚡ | tests/unit/test_claude_adapter.py | 553 | # ============================================================================== | COMMENT |
| MEDIUM⚡ | tests/unit/test_claude_adapter.py | 555 | # ============================================================================== | COMMENT |
| MEDIUM⚡ | tests/unit/test_claude_adapter.py | 588 | # ============================================================================== | COMMENT |
| MEDIUM⚡ | tests/unit/test_claude_adapter.py | 590 | # ============================================================================== | COMMENT |
| MEDIUM⚡ | tests/unit/test_claude_adapter.py | 639 | # ============================================================================== | COMMENT |
| MEDIUM⚡ | tests/unit/test_claude_adapter.py | 641 | # ============================================================================== | COMMENT |
| MEDIUM | tests/unit/test_claude_adapter.py | 26 | # ============================================================================== | COMMENT |
| MEDIUM | tests/unit/test_claude_adapter.py | 28 | # ============================================================================== | COMMENT |
| MEDIUM | tests/unit/test_claude_adapter.py | 74 | # ============================================================================== | COMMENT |
| 588 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/_route_utils.py | 16 | CODE | |
| LOW | tests/shared.py | 3 | CODE | |
| LOW | tests/temporal/test_payload_encryption.py | 3 | CODE | |
| LOW | tests/temporal/test_agent_config_sandbox_parity.py | 3 | CODE | |
| LOW | tests/temporal/test_workflow_concurrency_limits.py | 8 | CODE | |
| LOW | tests/temporal/test_agent_config_workflow_boundary.py | 9 | CODE | |
| LOW | tests/temporal/test_large_collection_regressions.py | 10 | CODE | |
| LOW | tests/temporal/test_dsl_workflow_replay.py | 3 | CODE | |
| LOW | tests/unit/test_temporal_errors.py | 1 | CODE | |
| LOW | tests/unit/test_agent_session_search_attributes.py | 3 | CODE | |
| LOW | tests/unit/test_workspace_sync_service.py | 3 | CODE | |
| LOW | tests/unit/test_control_plane_audit.py | 1 | CODE | |
| LOW | tests/unit/test_saml_client_config.py | 1 | CODE | |
| LOW | tests/unit/test_deduplicate.py | 9 | CODE | |
| LOW | tests/unit/test_executor_template_actions.py | 7 | CODE | |
| LOW | tests/unit/test_watchtower_service.py | 1 | CODE | |
| LOW | tests/unit/test_service_accounts_update.py | 1 | CODE | |
| LOW | tests/unit/test_dsl_workflow_activity_retry.py | 1 | CODE | |
| LOW | tests/unit/test_agent_factory.py | 1 | CODE | |
| LOW | tests/unit/test_agent_llm_proxy.py | 1 | CODE | |
| LOW | tests/unit/test_registry_repository.py | 1 | CODE | |
| LOW | tests/unit/test_dynamic_workspace_service_rls.py | 1 | CODE | |
| LOW | tests/unit/test_agent_mcp_proxy_server.py | 1 | CODE | |
| LOW | tests/unit/test_admin_users_service.py | 3 | CODE | |
| LOW | tests/unit/test_registry_repositories_service.py | 3 | CODE | |
| LOW | tests/unit/test_registry_artifact_keys.py | 3 | CODE | |
| LOW | tests/unit/test_agent_session_approval_sink.py | 1 | CODE | |
| LOW | tests/unit/conftest.py | 1 | CODE | |
| LOW | tests/unit/test_mcp_config.py | 1 | CODE | |
| LOW | tests/unit/test_agent_sandbox_entrypoint.py | 1 | CODE | |
| LOW | tests/unit/test_temporal_codec.py | 1 | CODE | |
| LOW | tests/unit/test_role_acl.py | 1 | CODE | |
| LOW | tests/unit/test_dsl_workflow_logging.py | 1 | CODE | |
| LOW | tests/unit/test_mcp_auth.py | 1 | CODE | |
| LOW | tests/unit/test_workflow_execution_object_resolution.py | 1 | CODE | |
| LOW | tests/unit/test_tier_limits_cache.py | 1 | CODE | |
| LOW | tests/unit/test_rbac_service.py | 3 | CODE | |
| LOW | tests/unit/test_slack_helpers.py | 1 | CODE | |
| LOW | tests/unit/test_dsl_workflow_concurrency.py | 1 | CODE | |
| LOW | tests/unit/test_rbac_scopes.py | 3 | CODE | |
| LOW | tests/unit/test_dsl_validation.py | 1 | CODE | |
| LOW | tests/unit/test_mcp_json_patch.py | 1 | CODE | |
| LOW | tests/unit/test_workflow_execution_schemas.py | 1 | CODE | |
| LOW | tests/unit/test_stdio_probe_nsjail.py | 3 | CODE | |
| LOW | tests/unit/test_inbox_service.py | 1 | CODE | |
| LOW | tests/unit/test_tenant_rls_registry.py | 1 | CODE | |
| LOW | tests/unit/test_registry_sync_runner.py | 1 | CODE | |
| LOW | tests/unit/test_mcp_server.py | 1 | CODE | |
| LOW | tests/unit/test_agent_nsjail.py | 1 | CODE | |
| LOW | tests/unit/test_sandbox_networking.py | 1 | CODE | |
| LOW | tests/unit/test_agent_sandbox_litellm.py | 1 | CODE | |
| LOW | tests/unit/test_sanitization.py | 1 | CODE | |
| LOW | tests/unit/test_runtime_errors.py | 1 | CODE | |
| LOW | tests/unit/test_registry_sync_subprocess.py | 3 | CODE | |
| LOW | tests/unit/test_executor_token_service_id.py | 1 | CODE | |
| LOW | tests/unit/test_auth_discovery_service.py | 3 | CODE | |
| LOW | tests/unit/test_registry_import_race.py | 21 | CODE | |
| LOW | tests/unit/test_agent_skill_internal_router.py | 1 | CODE | |
| LOW | tests/unit/test_worker_activity_registration.py | 1 | CODE | |
| LOW | tests/unit/test_workspace_sync_acceptance_contract.py | 7 | CODE | |
| 944 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tracecat/store.py | 32 | Fetch the content for a specific source. Args: path: Path to the source file in the repository. | STRING |
| HIGH | tracecat/config.py | 672 | Parse a comma-separated environment variable into validated IP networks. Args: name: Environment variable n | STRING |
| HIGH | tracecat/ssh.py | 381 | Get a Git SSH command for the given Git URL. Args: git_url: Git URL object containing repository informatio | STRING |
| HIGH | tracecat/pagination.py | 600 | Execute a stable keyset-paginated SQLAlchemy query. The statement must not already contain ``ORDER BY``, ``LIMIT``, | STRING |
| HIGH | tracecat/base62.py | 9 | Convert a non-negative integer to a base62 string. Args: num: Non-negative integer to encode Returns: | STRING |
| HIGH | tracecat/base62.py | 35 | Convert a base62 string back to an integer. Args: encoded: Base62 encoded string Returns: Deco | STRING |
| HIGH | tracecat/organization/service.py | 63 | Accept an invitation and create organization membership + RBAC assignment. This is a standalone function (not a met | STRING |
| HIGH | tracecat/organization/service.py | 266 | Retrieve a member of the organization by their user ID. Args: user_id (UserID): The unique identifi | STRING |
| HIGH | tracecat/organization/service.py | 373 | Update a member of the organization. This method updates the details of a specified member within the | STRING |
| HIGH | tracecat/organization/service.py | 614 | Get an invitation by ID (must belong to this organization). Args: invitation_id: The invitation UUI | STRING |
| HIGH | tracecat/organization/service.py | 635 | Get an invitation by its unique token. This method does not require scope checks as it is used during t | STRING |
| HIGH | tracecat/organization/service.py | 659 | Accept an invitation and create organization membership + RBAC assignment. This method validates the invitation | STRING |
| HIGH | tracecat/organization/service.py | 801 | Revoke a pending invitation. Args: invitation_id: The invitation UUID. Returns: | STRING |
| HIGH | tracecat/organization/management.py | 116 | Create an organization record. Args: session: Database session. name: Organization name. sl | STRING |
| HIGH | tracecat/organization/management.py | 154 | Create a new organization with default settings and workspace. This is the canonical way to create an organization. | STRING |
| HIGH | tracecat/organization/management.py | 296 | Get the ID of the first/default organization. Args: session: Database session. Returns: Organi | STRING |
| HIGH | tracecat/tables/service.py | 303 | List all lookup tables for a workspace. Args: workspace_id: The ID of the workspace to list tables | STRING |
| HIGH | tracecat/tables/service.py | 366 | Get a lookup table by name. Args: table_name: The name of the table to get Returns: | STRING |
| HIGH | tracecat/tables/service.py | 403 | Create a new lookup table. Args: params: Parameters for creating the table Returns: | STRING |
| HIGH | tracecat/tables/service.py | 547 | Add a new column to an existing table. Args: table: The table to add the column to para | STRING |
| HIGH | tracecat/tables/service.py | 624 | Update a column in an existing table. Args: column: The column to update params: Parame | STRING |
| HIGH | tracecat/tables/service.py | 909 | Insert a new row into the table. Args: table: The table to insert into params: The row | STRING |
| HIGH | tracecat/tables/service.py | 1038 | Update an existing row in the table. Args: table: The table containing the row to update | STRING |
| HIGH | tracecat/tables/service.py | 1369 | List rows in a table with cursor-based pagination. Args: table: The table to search in | STRING |
| HIGH | tracecat/tables/service.py | 1555 | Insert multiple rows into the table atomically. Args: table: The table to insert into r | STRING |
| HIGH | tracecat/tables/service.py | 1980 | Add a new column to an existing table. Args: params: Parameters for the new column Returns | STRING |
| HIGH | tracecat/tables/service.py | 2036 | Update a column in an existing table. Args: params: Parameters for updating the column Ret | STRING |
| HIGH | tracecat/tables/service.py | 2263 | Update an existing row in the table. Args: row_id: The ID of the row to update data: Di | STRING |
| HIGH | tracecat/tables/common.py | 246 | Convert a value to a SQL-compatible string based on type. Args: value: The value to convert to SQL format | STRING |
| HIGH | tracecat/auth/credentials.py | 1001 | Factory for FastAPI dependency that enforces role-based access control. This function creates a dependency for | STRING |
| HIGH | tracecat/secrets/service.py | 221 | Get a workspace secret by name. Args: secret_name: The name of the secret to retrieve e | STRING |
| HIGH | tracecat/secrets/encryption.py | 38 | Encrypt a string using Fernet encryption. Args: value: The string to encrypt key: The encryption ke | STRING |
| HIGH | tracecat/secrets/encryption.py | 57 | Decrypt a Fernet-encrypted value back to a string. Args: encrypted_value: The encrypted bytes key: | STRING |
| HIGH | tracecat/cases/service.py | 712 | Get a case with its associated custom fields. Args: case_id: UUID of the case to retrieve | STRING |
| HIGH | tracecat/cases/service.py | 953 | Update a case and optionally its custom fields. Args: case: The case object to update p | STRING |
| HIGH | tracecat/cases/service.py | 1828 | Ensure a workspace data row exists for the given case. Args: case_id: The case ID to ensure a row e | STRING |
| HIGH | tracecat/cases/service.py | 1925 | Upsert custom field values for a case. This method ensures the workspace row exists and updates field values. | STRING |
| HIGH | tracecat/cases/service.py | 2804 | Update an existing comment. Args: comment: The comment to update params: The updated co | STRING |
| HIGH | tracecat/cases/service.py | 3003 | Get a task by ID. Args: task_id: The ID of the task to get Returns: The task | STRING |
| HIGH | tracecat/cases/service.py | 3078 | Create a new task for a case. Args: case_id: The ID of the case to create a task for pa | STRING |
| HIGH | tracecat/cases/service.py | 3150 | Update a task. Args: task_id: The ID of the task to update params: The task update para | STRING |
| HIGH | tracecat/cases/agent_invocations/prompts.py | 32 | Build hidden thread context and the invoking comment's visible message. Args: context: Ordered thread snaps | STRING |
| HIGH | tracecat/cases/agent_invocations/output.py | 20 | Convert terminal agent output into valid case-comment content. Plain text is preserved through the normal comment v | STRING |
| HIGH | tracecat/cases/agent_sessions/service.py | 55 | Resolve a session or continuation to its Inbox-facing root session. Args: session_id: Agent session | STRING |
| HIGH | tracecat/cases/agent_sessions/service.py | 102 | Upsert one case interaction without committing the caller's transaction. Args: case_id: Case touche | STRING |
| HIGH | tracecat/cases/attachments/service.py | 204 | Create a new attachment for a case with security validations. Args: case: The case to attach the fi | STRING |
| HIGH | tracecat/cases/attachments/service.py | 412 | Download an attachment's content. Args: case: The case the attachment belongs to attach | STRING |
| HIGH | tracecat/cases/attachments/service.py | 452 | Generate a presigned URL for downloading an attachment. Args: case: The case the attachment belongs | STRING |
| HIGH | tracecat/agent/tools.py | 44 | Execute a Tracecat action in a subprocess. This spawns a separate process to run the action, providing process isol | STRING |
| HIGH | tracecat/agent/tools.py | 147 | Create a Tool from a registry action using index-based lookup. Args: action_name: Full canonical action nam | STRING |
| HIGH | tracecat/agent/tools.py | 276 | Build tools from a list of actions using index-based lookups. Args: namespaces: Optional list of namespace | STRING |
| HIGH | tracecat/agent/tokens.py | 206 | Verify MCP JWT and return extracted claims. Args: token: The JWT string to verify Returns: MCP | STRING |
| HIGH | tracecat/agent/tokens.py | 397 | Verify LLM JWT and return extracted claims. Args: token: The JWT string to verify Returns: LLM | STRING |
| HIGH | tracecat/agent/tokens.py | 499 | Verify an Agent OTel relay JWT and return extracted claims. Args: token: The JWT string to verify. Ret | STRING |
| HIGH | tracecat/agent/skill/service.py | 529 | Normalize and validate a relative POSIX draft path. Args: path: User-provided file path. R | STRING |
| HIGH | tracecat/agent/stream/writers.py | 111 | Event stream handler for TemporalAgent. Args: run_context: The run context for the agent. even | STRING |
| HIGH | tracecat/agent/runtime/pydantic_ai/runtime.py | 97 | Run an AI agent with specified configuration and actions. This function creates and executes a Tracecat AI agent wi | STRING |
| HIGH | tracecat/agent/mcp/user_client.py | 336 | Execute a tool on a user MCP server. Args: server_name: Name of the MCP server (from config). | STRING |
| HIGH | tracecat/agent/mcp/executor.py | 86 | Execute a registry UDF through the shared executor queue. Args: action_name: The action to execute (e.g., " | STRING |
| HIGH | tracecat/agent/common/socket_io.py | 61 | Read a framed message from the socket. Args: reader: The asyncio stream reader. expected_type: If p | STRING |
| 106 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | docker/sandbox/build.sh | 42 | # Create a temporary container and export its filesystem | COMMENT |
| MEDIUM | tests/conftest.py | 572 | # Create a registry repository for core actions | STRING |
| MEDIUM | tests/temporal/test_workflows.py | 764 | # Create the child workflow | COMMENT |
| MEDIUM | tests/temporal/test_workflows.py | 2089 | # Create a simple configuration variable | COMMENT |
| MEDIUM | tests/temporal/test_workflows.py | 3503 | # Create the child workflow | COMMENT |
| MEDIUM | tests/temporal/test_workflows.py | 4361 | # Create a simple child workflow that doubles the input | COMMENT |
| MEDIUM | tests/temporal/test_workflows.py | 6244 | # Define the DSL workflow | COMMENT |
| MEDIUM | tests/temporal/test_workflows.py | 6375 | # Define the DSL workflow | COMMENT |
| MEDIUM | tests/temporal/test_workflows.py | 6461 | # Define the DSL workflow | COMMENT |
| MEDIUM | tests/temporal/test_workflows.py | 6662 | # Create a workflow with sequential actions to verify time advances | COMMENT |
| MEDIUM | tests/temporal/test_workflows.py | 6799 | # Create a child workflow that returns the current time | COMMENT |
| MEDIUM | tests/temporal/test_workflows.py | 6821 | # Create a parent workflow that calls the child and also captures its own time | COMMENT |
| MEDIUM | tests/temporal/test_durable_agent_workflow.py | 222 | # Create a mock registry lock for the tools | COMMENT |
| MEDIUM | tests/unit/test_oauth_state.py | 248 | # Create a valid state | COMMENT |
| MEDIUM | tests/unit/test_oauth_state.py | 261 | # Create an expired state | COMMENT |
| MEDIUM | tests/unit/test_oauth_state.py | 274 | # Create a second workspace for the "wrong workspace" test | COMMENT |
| MEDIUM | tests/unit/test_oauth_state.py | 284 | # Create a state with wrong workspace | COMMENT |
| MEDIUM | tests/unit/test_executor_template_actions.py | 166 | # Create a 2-step template: step1 adds 100, step2 multiplies by 2 | COMMENT |
| MEDIUM | tests/unit/test_executor_template_actions.py | 251 | # Create a template that passes data between steps using steps context | COMMENT |
| MEDIUM | tests/unit/test_executor_template_actions.py | 334 | # Create a template with a complex returns expression | COMMENT |
| MEDIUM | tests/unit/test_executor_template_actions.py | 421 | # Create a secret | COMMENT |
| MEDIUM | tests/unit/test_executor_template_actions.py | 617 | # Create a simple template | COMMENT |
| MEDIUM | tests/unit/test_identifiers.py | 121 | # Create a different UUID for comparison | COMMENT |
| MEDIUM | tests/unit/test_identifiers.py | 201 | # Create a model instance | COMMENT |
| MEDIUM⚡ | tests/unit/test_registry.py | 127 | # Create a new module | COMMENT |
| MEDIUM⚡ | tests/unit/test_registry.py | 130 | # Create a module spec for the test module | COMMENT |
| MEDIUM⚡ | tests/unit/test_registry.py | 139 | # Create a file for the sync function | COMMENT |
| MEDIUM⚡ | tests/unit/test_registry.py | 270 | # Create a new test module with datetime/UUID UDFs | COMMENT |
| MEDIUM⚡ | tests/unit/test_registry.py | 279 | # Create a file with UDF that accepts datetime | COMMENT |
| MEDIUM | tests/unit/test_registry.py | 158 | # Create a file for the async function | COMMENT |
| MEDIUM | tests/unit/test_registry.py | 177 | # Create a file for the deprecated function | COMMENT |
| MEDIUM | tests/unit/test_registry.py | 488 | # Create a test directory structure | COMMENT |
| MEDIUM⚡ | tests/unit/test_concurrency.py | 484 | # Create a generator that would be expensive if fully loaded | COMMENT |
| MEDIUM | tests/unit/test_concurrency.py | 19 | # Create a GatheringTaskGroup instance | COMMENT |
| MEDIUM | tests/unit/test_webhook.py | 425 | # Create a mock webhook with the ID attribute | COMMENT |
| MEDIUM | tests/unit/test_webhook.py | 455 | # Create a mock webhook with the ID attribute | COMMENT |
| MEDIUM | tests/unit/test_workflow_folders_service.py | 42 | # Create a test workflow | COMMENT |
| MEDIUM | tests/unit/test_workflow_folders_service.py | 178 | # Create a folder to rename | COMMENT |
| MEDIUM | tests/unit/test_workflow_folders_service.py | 182 | # Create a child folder to verify path updates | COMMENT |
| MEDIUM | tests/unit/test_workflow_folders_service.py | 240 | # Create a folder hierarchy | COMMENT |
| MEDIUM⚡ | tests/unit/test_workflow_folders_service.py | 265 | # Create a folder to delete | COMMENT |
| MEDIUM | tests/unit/test_workflow_folders_service.py | 296 | # Create a folder hierarchy | COMMENT |
| MEDIUM | tests/unit/test_workflow_folders_service.py | 344 | # Create a folder | COMMENT |
| MEDIUM | tests/unit/test_validation.py | 658 | # Create a test template action with both AC and CC OAuth secrets as optional | COMMENT |
| MEDIUM | tests/unit/test_validation.py | 702 | # Create a second template action with required OAuth credential | COMMENT |
| MEDIUM | tests/unit/test_validation.py | 879 | # Create a template action with optional OAuth credentials (both AC and CC) | COMMENT |
| MEDIUM | tests/unit/test_validation.py | 935 | # Create a DSL that uses this action | COMMENT |
| MEDIUM⚡ | tests/unit/test_agent_preset_service.py | 3281 | # Create a preset with comprehensive configuration | COMMENT |
| MEDIUM⚡ | tests/unit/test_template_actions.py | 149 | # Create a new module | COMMENT |
| MEDIUM⚡ | tests/unit/test_template_actions.py | 152 | # Create a module spec for the test module | COMMENT |
| MEDIUM | tests/unit/test_template_actions.py | 859 | # Create a template action that uses VARS expressions | COMMENT |
| MEDIUM | tests/unit/test_template_actions.py | 1044 | # Create a template action with multi-level fallback | COMMENT |
| MEDIUM | tests/unit/test_template_actions.py | 1174 | # Create a manifest with: | COMMENT |
| MEDIUM | tests/unit/test_mcp_integrations.py | 4220 | # Create a second OAuth integration | COMMENT |
| MEDIUM | tests/unit/test_mcp_integrations.py | 6391 | # Create a dummy MCP provider for testing | COMMENT |
| MEDIUM | tests/unit/test_parse.py | 98 | # Create a temporary pyproject.toml file | COMMENT |
| MEDIUM⚡ | tests/unit/test_pydantic_ai_adapter.py | 279 | # Create a mock event that doesn't match any known type | COMMENT |
| MEDIUM | tests/unit/test_secrets_service.py | 614 | # Create a secret | COMMENT |
| MEDIUM⚡ | tests/unit/test_case_events_service.py | 454 | # Create an event with the original service (original user) | COMMENT |
| MEDIUM⚡ | tests/unit/test_case_events_service.py | 462 | # Create a service with a different user | COMMENT |
| 177 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/conftest.py | 242 | except Exception as exc: | CODE |
| LOW | tests/conftest.py | 325 | except Exception: | CODE |
| LOW | tests/conftest.py | 382 | except Exception as e: | CODE |
| LOW | tests/conftest.py | 1562 | except Exception as e: | CODE |
| LOW | tests/conftest.py | 1594 | except Exception as e: | CODE |
| LOW | tests/conftest.py | 1695 | except Exception as e: | CODE |
| LOW | tests/conftest.py | 1708 | except Exception as inner_e: | CODE |
| LOW | tests/conftest.py | 1726 | except Exception as e: | CODE |
| LOW | tests/conftest.py | 1780 | except Exception: | CODE |
| LOW | tests/conftest.py | 1204 | except Exception as e: | STRING |
| LOW | tests/conftest.py | 1209 | except Exception as e: | STRING |
| LOW | tests/conftest.py | 1373 | except Exception as exc: | STRING |
| LOW | tests/temporal/test_workflows.py | 426 | except Exception as e: | CODE |
| LOW⚡ | tests/temporal/test_durable_agent_workflow.py | 2782 | except Exception: | CODE |
| LOW⚡ | tests/temporal/test_durable_agent_workflow.py | 2786 | except Exception: | CODE |
| LOW⚡ | tests/temporal/test_durable_agent_workflow.py | 2900 | except Exception: | CODE |
| LOW⚡ | tests/temporal/test_durable_agent_workflow.py | 2904 | except Exception: | CODE |
| LOW⚡ | tests/temporal/test_durable_agent_workflow.py | 3021 | except Exception: | CODE |
| LOW⚡ | tests/temporal/test_durable_agent_workflow.py | 3025 | except Exception: | CODE |
| LOW⚡ | tests/temporal/test_durable_agent_workflow.py | 3153 | except Exception: | CODE |
| LOW⚡ | tests/temporal/test_durable_agent_workflow.py | 3157 | except Exception: | CODE |
| LOW | tests/unit/test_interactions.py | 177 | except Exception: | CODE |
| LOW | tests/unit/test_interactions.py | 181 | except Exception: | CODE |
| LOW | tests/unit/test_agent_preset_service.py | 84 | except Exception: | CODE |
| MEDIUM | tests/unit/test_agent_sandbox_litellm.py | 1411 | " print('Error parsing JSON response', file=sys.stderr, flush=True)", | CODE |
| LOW | tests/unit/test_registry_import_race.py | 100 | except Exception as e: # noqa: BLE001 - we collect all exceptions | CODE |
| LOW | tests/unit/test_registry_import_race.py | 145 | except Exception as e: # noqa: BLE001 - we collect all exceptions | CODE |
| LOW | tests/unit/test_registry_import_race.py | 187 | except Exception as e: # noqa: BLE001 - regression guard | CODE |
| LOW | tests/unit/test_registry_import_race.py | 250 | except Exception as e: # noqa: BLE001 - collect all errors for assertion | CODE |
| MEDIUM | tests/unit/test_registry_import_race.py | 184 | def reloader() -> None: | CODE |
| LOW | tests/unit/test_skill_service.py | 88 | except Exception: | CODE |
| LOW⚡ | tests/unit/test_action_environment_override.py | 317 | except Exception: | CODE |
| LOW⚡ | tests/unit/test_action_environment_override.py | 325 | except Exception: | CODE |
| LOW | tests/unit/test_action_environment_override.py | 384 | except Exception: | CODE |
| LOW | tests/unit/test_tables_service.py | 2211 | except Exception as e: | STRING |
| LOW | tests/unit/test_workflow_import_simple.py | 152 | except Exception as e: | CODE |
| LOW | tests/unit/test_agent_otel_relay.py | 223 | except Exception: | CODE |
| LOW | tests/unit/test_agent_otel_relay.py | 866 | except Exception: | CODE |
| LOW | tests/unit/test_agent_otel_relay.py | 898 | except Exception: | CODE |
| LOW | tests/unit/test_agent_otel_relay.py | 927 | except Exception: | CODE |
| LOW | tests/unit/test_agent_otel_relay.py | 980 | except Exception: | CODE |
| LOW | tests/unit/test_agent_otel_relay.py | 1047 | except Exception: | CODE |
| LOW | tests/unit/test_agent_otel_relay.py | 1080 | except Exception: | CODE |
| LOW | tests/unit/test_agent_otel_relay.py | 1116 | except Exception: | CODE |
| LOW | tests/unit/test_workflow_import_service.py | 754 | except Exception as e: | CODE |
| LOW | tests/unit/test_case_attachments_service.py | 46 | except Exception: | CODE |
| LOW | tests/unit/executor/test_run_python_sdk_context.py | 280 | except Exception as exc: | CODE |
| LOW | …sts/integration/test_registry_artifact_loop_hotplug.py | 466 | except Exception as error: | CODE |
| LOW | tests/integration/test_syncv2_execv2_e2e.py | 469 | except Exception: | CODE |
| LOW | tests/integration/test_syncv2_execv2_e2e.py | 739 | except Exception as e: | CODE |
| LOW | tests/integration/test_syncv2_execv2_e2e.py | 778 | except Exception: | CODE |
| LOW | tests/integration/test_case_duration_benchmarks.py | 309 | except Exception: | CODE |
| LOW | tests/integration/test_case_duration_benchmarks.py | 450 | except Exception: | CODE |
| LOW⚡ | tests/backends/conftest.py | 84 | except Exception: | CODE |
| LOW | tests/backends/test_backend_benchmarks.py | 209 | except Exception: | CODE |
| MEDIUM | tests/registry/test_core_python.py | 542 | def main(): | CODE |
| MEDIUM | tests/registry/test_core_python.py | 591 | def main(): | CODE |
| MEDIUM | tests/registry/test_core_python.py | 714 | def main(): | CODE |
| LOW⚡ | tests/registry/test_core_python.py | 547 | except Exception as e: | CODE |
| LOW⚡ | tests/registry/test_core_python.py | 721 | except Exception as e: | CODE |
| 635 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/unit/test_oauth_state.py | 0 | create an integration service instance for testing. | STRING |
| HIGH | tests/unit/test_mcp_integrations.py | 0 | create an integration service instance for testing. | STRING |
| HIGH | tests/unit/test_integrations_service.py | 0 | create an integration service instance for testing. | STRING |
| HIGH | tests/unit/test_executor_template_actions.py | 0 | test helper: execute action using production code path. | STRING |
| HIGH | tests/unit/test_validation.py | 0 | test helper: execute action using production code path. | STRING |
| HIGH | tests/unit/test_template_actions.py | 0 | test helper: execute action using production code path. | STRING |
| HIGH | tests/unit/test_registry.py | 0 | pytest fixture that creates a mock package with files and cleans up after the test. | STRING |
| HIGH | tests/unit/test_template_actions.py | 0 | pytest fixture that creates a mock package with files and cleans up after the test. | STRING |
| HIGH | tests/unit/test_executor.py | 0 | pytest fixture that creates a mock package with files and cleans up after the test. | STRING |
| HIGH | tests/unit/test_dynamic_workspace_service_rls.py | 0 | disable minio-dependent workflow bucket setup for these tests. | STRING |
| HIGH | tests/unit/test_tables_service.py | 0 | disable minio-dependent workflow bucket setup for these tests. | STRING |
| HIGH | tests/unit/test_case_fields_service.py | 0 | disable minio-dependent workflow bucket setup for these tests. | STRING |
| HIGH | tests/unit/test_workflow_folders_service.py | 0 | create a test workflow in the database and return its id. | STRING |
| HIGH | tests/unit/test_workflow_definitions_service.py | 0 | create a test workflow in the database and return its id. | STRING |
| HIGH | tests/unit/test_tags_service.py | 0 | create a test workflow in the database and return its id. | STRING |
| HIGH | tests/unit/test_tenant_rls_registry.py | 0 | disable minio-dependent workflow bucket setup for pure unit repro tests. | STRING |
| HIGH | tests/unit/test_rls.py | 0 | disable minio-dependent workflow bucket setup for pure unit repro tests. | STRING |
| HIGH | tests/unit/test_rls_failure_repros.py | 0 | disable minio-dependent workflow bucket setup for pure unit repro tests. | STRING |
| HIGH | tests/unit/test_case_events_service.py | 0 | test that service initialization requires a workspace id. | STRING |
| HIGH | tests/unit/test_integrations_service.py | 0 | test that service initialization requires a workspace id. | STRING |
| HIGH | tests/unit/test_cases_service.py | 0 | test that service initialization requires a workspace id. | STRING |
| HIGH | tests/unit/test_case_comments_service.py | 0 | test that service initialization requires a workspace id. | STRING |
| HIGH | tests/unit/test_case_fields_service.py | 0 | test that service initialization requires a workspace id. | STRING |
| HIGH | tests/migration/test_dynamic_workspace_rls_migration.py | 0 | select pg_terminate_backend(pg_stat_activity.pid) from pg_stat_activity where pg_stat_activity.datname = '{test_db_name} | STRING |
| HIGH | tests/migration/test_case_fields_migration.py | 0 | select pg_terminate_backend(pg_stat_activity.pid) from pg_stat_activity where pg_stat_activity.datname = '{test_db_name} | STRING |
| HIGH | tests/migration/test_migration_advisory_lock.py | 0 | select pg_terminate_backend(pg_stat_activity.pid) from pg_stat_activity where pg_stat_activity.datname = '{test_db_name} | STRING |
| HIGH | …s/migration/test_uuid_timestamp_user_type_migration.py | 0 | select pg_terminate_backend(pg_stat_activity.pid) from pg_stat_activity where pg_stat_activity.datname = '{test_db_name} | STRING |
| HIGH | …sts/migration/test_case_numbers_workspace_migration.py | 0 | select pg_terminate_backend(pg_stat_activity.pid) from pg_stat_activity where pg_stat_activity.datname = '{db_name}' and | STRING |
| HIGH | …emove_legacy_org_scoped_builtin_registry_repository.py | 0 | select pg_terminate_backend(pg_stat_activity.pid) from pg_stat_activity where pg_stat_activity.datname = '{db_name}' and | STRING |
| HIGH | …ts/migration/test_workspace_skills_preset_migration.py | 0 | select pg_terminate_backend(pg_stat_activity.pid) from pg_stat_activity where pg_stat_activity.datname = '{db_name}' and | STRING |
| HIGH | tests/migration/test_case_versions_migration.py | 0 | select pg_terminate_backend(pg_stat_activity.pid) from pg_stat_activity where pg_stat_activity.datname = '{db_name}' and | STRING |
| HIGH | tests/migration/test_skill_slug_migration.py | 0 | select pg_terminate_backend(pg_stat_activity.pid) from pg_stat_activity where pg_stat_activity.datname = '{db_name}' and | STRING |
| HIGH | …tion/test_deferred_case_number_allocation_migration.py | 0 | select pg_terminate_backend(pg_stat_activity.pid) from pg_stat_activity where pg_stat_activity.datname = '{db_name}' and | STRING |
| HIGH | …sts/migration/test_comment_activity_audit_migration.py | 0 | select pg_terminate_backend(pg_stat_activity.pid) from pg_stat_activity where pg_stat_activity.datname = '{db_name}' and | STRING |
| HIGH | …emove_legacy_org_scoped_builtin_registry_repository.py | 0 | insert into organization (id, name, slug, is_active) values (:id, 'preset org', :slug, true) | STRING |
| HIGH | tests/migration/test_case_versions_migration.py | 0 | insert into organization (id, name, slug, is_active) values (:id, 'preset org', :slug, true) | STRING |
| HIGH | …sts/migration/test_comment_activity_audit_migration.py | 0 | insert into organization (id, name, slug, is_active) values (:id, 'preset org', :slug, true) | STRING |
| HIGH | …ts/migration/test_workspace_skills_preset_migration.py | 0 | insert into organization (id, name, slug, is_active) values (:id, 'preset org', :slug, true) | STRING |
| HIGH | tracecat/admin/registry/service.py | 0 | promote a registry version to be the current version for a repository. | STRING |
| HIGH | tracecat/admin/registry/router.py | 0 | promote a registry version to be the current version for a repository. | STRING |
| HIGH | packages/tracecat-admin/tracecat_admin/client.py | 0 | promote a registry version to be the current version for a repository. | STRING |
| HIGH | tracecat/workflow/management/schemas.py | 0 | convert any valid workflow id format to workflowuuid. | STRING |
| HIGH | tracecat/workflow/executions/internal_router.py | 0 | convert any valid workflow id format to workflowuuid. | STRING |
| HIGH | tracecat/dsl/schemas.py | 0 | convert any valid workflow id format to workflowuuid. | STRING |
| HIGH | tracecat/dsl/common.py | 0 | convert any valid workflow id format to workflowuuid. | STRING |
| HIGH | tracecat/expressions/functions.py | 0 | return object with single level of keys (as jsonpath) and values. | STRING |
| HIGH | …acecat-registry/tracecat_registry/_internal/flatten.py | 0 | return object with single level of keys (as jsonpath) and values. | STRING |
| HIGH | …/tracecat-registry/tracecat_registry/core/transform.py | 0 | return object with single level of keys (as jsonpath) and values. | STRING |
| HIGH | packages/tracecat-admin/tracecat_admin/client.py | 0 | list versions for a specific repository in an organization. | STRING |
| HIGH | …tracecat-ee/tracecat_ee/admin/organizations/service.py | 0 | list versions for a specific repository in an organization. | STRING |
| HIGH | …/tracecat-ee/tracecat_ee/admin/organizations/router.py | 0 | list versions for a specific repository in an organization. | STRING |
| HIGH | packages/tracecat-admin/tracecat_admin/client.py | 0 | promote a registry version to be the current version for an org repository. | STRING |
| HIGH | …tracecat-ee/tracecat_ee/admin/organizations/service.py | 0 | promote a registry version to be the current version for an org repository. | STRING |
| HIGH | …/tracecat-ee/tracecat_ee/admin/organizations/router.py | 0 | promote a registry version to be the current version for an org repository. | STRING |
| HIGH | packages/tracecat-admin/tracecat_admin/client.py | 0 | update organization's tier assignment and overrides. | STRING |
| HIGH | packages/tracecat-ee/tracecat_ee/admin/tiers/service.py | 0 | update organization's tier assignment and overrides. | STRING |
| HIGH | packages/tracecat-ee/tracecat_ee/admin/tiers/router.py | 0 | update organization's tier assignment and overrides. | STRING |
| HIGH | packages/tracecat-admin/tracecat_admin/cli.py | 0 | decorator to run async functions in typer commands. | STRING |
| HIGH | packages/tracecat-admin/tracecat_admin/commands/auth.py | 0 | decorator to run async functions in typer commands. | STRING |
| HIGH | …ges/tracecat-admin/tracecat_admin/commands/registry.py | 0 | decorator to run async functions in typer commands. | STRING |
| 7 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/conftest.py | 234 | CODE | |
| LOW | tests/conftest.py | 435 | CODE | |
| LOW | tests/conftest.py | 550 | CODE | |
| LOW | tests/conftest.py | 1640 | CODE | |
| LOW | tests/conftest.py | 445 | CODE | |
| LOW | tests/conftest.py | 566 | CODE | |
| LOW | tests/temporal/test_workflows.py | 352 | CODE | |
| LOW | tests/temporal/test_durable_agent_workflow.py | 2677 | CODE | |
| LOW | tests/temporal/test_durable_agent_workflow.py | 2796 | CODE | |
| LOW | tests/temporal/test_durable_agent_workflow.py | 2914 | CODE | |
| LOW | tests/temporal/test_durable_agent_workflow.py | 3035 | CODE | |
| LOW | tests/unit/test_interactions.py | 76 | CODE | |
| LOW | tests/unit/test_mcp_server.py | 10663 | CODE | |
| LOW | tests/unit/test_workflow_executions.py | 125 | CODE | |
| LOW | tests/unit/test_workflow_executions.py | 634 | CODE | |
| LOW | tests/unit/test_workflow_executions.py | 730 | CODE | |
| LOW | tests/unit/test_storage_cache.py | 21 | CODE | |
| LOW | tests/unit/test_vercel_sse_resume.py | 37 | CODE | |
| LOW | tests/unit/test_tables_service.py | 286 | CODE | |
| LOW | tests/unit/test_executor_sandbox_nsjail.py | 645 | CODE | |
| LOW | tests/unit/test_executor_sandbox_nsjail.py | 1006 | CODE | |
| LOW | tests/unit/test_config.py | 245 | CODE | |
| LOW | tests/unit/test_formatters.py | 331 | CODE | |
| LOW | tests/unit/test_agent_socket_io.py | 74 | CODE | |
| LOW | tests/unit/test_agent_socket_io.py | 184 | CODE | |
| LOW | tests/unit/test_agent_socket_io.py | 279 | CODE | |
| LOW | tests/unit/test_agent_socket_io.py | 352 | CODE | |
| LOW | tests/unit/test_agent_socket_io.py | 414 | CODE | |
| LOW | …/unit/executor/test_action_gateway_signal_lifecycle.py | 93 | CODE | |
| LOW | …ration/test_registry_artifact_cache_mount_lifecycle.py | 567 | CODE | |
| LOW | tests/registry/test_core_transform.py | 771 | CODE | |
| LOW | tests/migration/test_dynamic_workspace_rls_migration.py | 1047 | CODE | |
| LOW | tests/migration/test_dynamic_workspace_rls_migration.py | 1185 | CODE | |
| LOW | tracecat/ssh.py | 151 | CODE | |
| LOW | tracecat/pagination.py | 386 | CODE | |
| LOW | tracecat/temporal/errors.py | 278 | CODE | |
| LOW | tracecat/temporal/codec.py | 313 | CODE | |
| LOW | tracecat/tables/service.py | 242 | CODE | |
| LOW | tracecat/tables/service.py | 619 | CODE | |
| LOW | tracecat/tables/service.py | 904 | CODE | |
| LOW | tracecat/tables/service.py | 1357 | CODE | |
| LOW | tracecat/tables/service.py | 1547 | CODE | |
| LOW | tracecat/tables/service.py | 1690 | CODE | |
| LOW | tracecat/tables/service.py | 2214 | CODE | |
| LOW | tracecat/tables/service.py | 2262 | CODE | |
| LOW | tracecat/tables/importer.py | 49 | CODE | |
| LOW | tracecat/tables/schemas.py | 66 | CODE | |
| LOW | tracecat/tables/common.py | 27 | CODE | |
| LOW | tracecat/workspace_sync/service.py | 926 | CODE | |
| LOW | tracecat/workspace_sync/service.py | 1414 | CODE | |
| LOW | tracecat/workspace_sync/service.py | 1611 | CODE | |
| LOW | tracecat/workspace_sync/resources.py | 36 | CODE | |
| LOW | tracecat/workspace_sync/resources.py | 369 | CODE | |
| LOW | tracecat/workspace_sync/resources.py | 514 | CODE | |
| LOW | tracecat/workspace_sync/adapters/agent_preset.py | 461 | CODE | |
| LOW | tracecat/workspace_sync/adapters/agent_preset.py | 968 | CODE | |
| LOW | tracecat/workspace_sync/adapters/case_field.py | 89 | CODE | |
| LOW | tracecat/workspace_sync/adapters/case_field.py | 198 | CODE | |
| LOW | tracecat/auth/credentials.py | 482 | CODE | |
| LOW | tracecat/auth/credentials.py | 858 | CODE | |
| 205 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | env-migration.sh | 33 | # Check if .env file exists | COMMENT |
| LOW | env-migration.sh | 39 | # Check if .env.template file exists | COMMENT |
| LOW | env.sh | 24 | # Check if running on macOS and adjust sed_option accordingly | COMMENT |
| LOW | …src/components/builder/panel/action-panel-tooltips.tsx | 27 | # Check if user has admin role | COMMENT |
| LOW | …src/components/builder/panel/action-panel-tooltips.tsx | 37 | # Check if failed login attempts exceed threshold | COMMENT |
| LOW | tests/conftest.py | 1476 | # Check if organization exists | COMMENT |
| LOW | tests/conftest.py | 1517 | # Check if organization exists in this session | COMMENT |
| LOW | tests/conftest.py | 1601 | # Check if organization exists | COMMENT |
| LOW | tests/conftest.py | 1655 | # Set timeouts to avoid deadlocks with parallel workers | COMMENT |
| LOW | tests/conftest.py | 1680 | # Set timeouts to avoid deadlocks with parallel workers | COMMENT |
| LOW | tests/conftest.py | 1713 | # Set timeouts to avoid deadlocks with parallel workers | COMMENT |
| LOW | tests/temporal/test_durable_agent_workflow.py | 464 | # Check if user already exists | COMMENT |
| LOW⚡ | tests/unit/test_registry.py | 133 | # Set __path__ to the temporary directory | COMMENT |
| LOW | tests/unit/test_validation.py | 435 | # Check if any error message matches the expected pattern | COMMENT |
| LOW⚡ | tests/unit/test_template_actions.py | 155 | # Set __path__ to the temporary directory | COMMENT |
| LOW | tests/unit/test_integrations_service.py | 779 | # Set expiration to 4 minutes in future (within refresh window) | COMMENT |
| LOW⚡ | tests/unit/test_executor.py | 302 | # Set __path__ to the temporary directory | COMMENT |
| LOW | tests/unit/test_rls_policies.py | 298 | # Set context to a random workspace ID (likely no matching rows) | COMMENT |
| LOW | tests/unit/test_rls_policies.py | 319 | # Set context to a random org ID | COMMENT |
| LOW | tests/integration/test_syncv2_execv2_e2e.py | 300 | # Check if organization exists | COMMENT |
| LOW⚡ | tests/backends/conftest.py | 77 | # Check if any registry version has a tarball (regardless of org) | COMMENT |
| LOW | tests/registry/test_core_python.py | 20 | # Check if nsjail is available (required for the sandbox) | COMMENT |
| LOW | tests/registry/test_core_python.py | 23 | # Check if the sandbox rootfs exists | COMMENT |
| LOW | .devcontainer/safe-yolo.sh | 7 | # Check if Docker is installed | COMMENT |
| LOW | .devcontainer/safe-yolo.sh | 13 | # Check if Docker is running | COMMENT |
| LOW | tracecat/ssh.py | 176 | # Check if host already exists in known_hosts | COMMENT |
| LOW | tracecat/organization/service.py | 536 | # Check if user with this email is already a member (case-insensitive) | COMMENT |
| LOW | tracecat/organization/management.py | 320 | # Check if any organization exists | COMMENT |
| LOW | tracecat/organization/router.py | 730 | # Check if authenticated user's email matches the invitation (case-insensitive) | COMMENT |
| LOW | tracecat/tables/service.py | 760 | # Check if another index already exists | COMMENT |
| LOW | tracecat/tables/service.py | 956 | # Check if we have any unique columns to use for conflict resolution | COMMENT |
| LOW | tracecat/auth/users.py | 132 | # Check if this is attempting to be the first user (superadmin) | COMMENT |
| LOW | tracecat/auth/credentials.py | 736 | # Check if user is an org owner/admin via RBAC - they can access all workspaces | COMMENT |
| LOW | tracecat/auth/saml.py | 768 | # Check if request has expired but don't delete yet | COMMENT |
| LOW | tracecat/auth/saml.py | 843 | # Check if the request has expired | COMMENT |
| LOW | tracecat/cases/service.py | 3230 | # Check if the field was provided in the update payload using model_fields_set | COMMENT |
| LOW | tracecat/cases/tags/service.py | 294 | # Check if already exists | COMMENT |
| LOW | tracecat/cases/attachments/service.py | 300 | # Check if file already exists (deduplication) | COMMENT |
| LOW | tracecat/cases/attachments/service.py | 353 | # Check if attachment already exists for this case and file | COMMENT |
| LOW | tracecat/cases/attachments/service.py | 516 | # Check if user has permission (must be creator or admin) | COMMENT |
| LOW | tracecat/cases/attachments/router.py | 91 | # Read file content with bounded memory to avoid DoS via large uploads | COMMENT |
| LOW⚡ | tracecat/agent/service.py | 408 | # Check if credentials already exist | COMMENT |
| LOW | tracecat/agent/context.py | 73 | # Check if any tool returns need truncation | COMMENT |
| LOW | tracecat/agent/context.py | 155 | # Check if next message has matching returns | COMMENT |
| LOW | tracecat/agent/context.py | 171 | # Check if previous kept message has matching calls | COMMENT |
| LOW | tracecat/agent/preset/service.py | 677 | # Check if all requested IDs exist | COMMENT |
| LOW | tracecat/agent/mcp/proxy_server.py | 186 | # Check if this is a user MCP tool | COMMENT |
| LOW | tracecat/agent/session/service.py | 2851 | # Check if this is a forked session (has parent_session_id) | COMMENT |
| LOW | tracecat/agent/session/router.py | 383 | # Check if this is a legacy chat (read-only) | COMMENT |
| LOW | tracecat/agent/session/router.py | 461 | # Check if this is a legacy chat (read-only) | COMMENT |
| LOW | tracecat/agent/session/router.py | 512 | # Check if this is a legacy chat (read-only) | COMMENT |
| LOW | tracecat/workspaces/service.py | 369 | # Check if the existing invitation is expired - if so, delete and retry | COMMENT |
| LOW | tracecat/workspaces/service.py | 482 | # Check if user is already a member of the organization | COMMENT |
| LOW | tracecat/workspaces/service.py | 501 | # Check if user is already a member of the workspace | COMMENT |
| LOW | tracecat/tags/service.py | 58 | # Check if ref already exists | COMMENT |
| LOW | tracecat/integrations/service.py | 2403 | # Check if integration configuration already exists for this provider | COMMENT |
| LOW | tracecat/integrations/service.py | 2621 | # Check if integration is properly connected (has access tokens) | COMMENT |
| LOW | tracecat/integrations/service.py | 2625 | # Check if provider is an MCP provider | COMMENT |
| LOW | tracecat/integrations/service.py | 2649 | # Check if MCP integration already exists for this OAuth integration. | COMMENT |
| LOW | tracecat/integrations/router.py | 737 | # Check if provider is configured | COMMENT |
| 53 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | frontend/tests/profile-settings.test.ts | 5 | expect(getProfileNameUpdate("Jane Doe", " Jane Doe ")).toBeNull() | CODE |
| LOW⚡ | frontend/tests/profile-settings.test.ts | 9 | expect(getProfileNameUpdate("Jane Doe", " ")).toEqual({ | CODE |
| LOW⚡ | frontend/tests/profile-settings.test.ts | 16 | expect(getProfileNameUpdate("Jane Doe", " Ada Lovelace ")).toEqual({ | CODE |
| LOW | frontend/tests/auth-ui-matrix.test.tsx | 297 | target: { value: "user@example.com" }, | CODE |
| LOW | frontend/tests/auth-ui-matrix.test.tsx | 304 | email: "user@example.com", | CODE |
| LOW⚡ | frontend/tests/auth-ui-matrix.test.tsx | 328 | target: { value: "user@example.com" }, | CODE |
| LOW⚡ | frontend/tests/auth-ui-matrix.test.tsx | 335 | email: "user@example.com", | CODE |
| LOW⚡ | frontend/tests/auth-ui-matrix.test.tsx | 345 | mockUser = { email: "admin@example.com", isSuperuser: true } | CODE |
| LOW | frontend/tests/auth-ui-matrix.test.tsx | 358 | mockUser = { email: "admin@example.com", isSuperuser: true } | CODE |
| LOW | frontend/tests/auth-ui-matrix.test.tsx | 415 | mockUser = { email: "admin@example.com", isSuperuser: true } | CODE |
| LOW | frontend/tests/auth-ui-matrix.test.tsx | 426 | mockUser = { email: "admin@example.com", isSuperuser: true } | CODE |
| LOW | frontend/tests/auth-ui-matrix.test.tsx | 436 | mockUser = { email: "admin@example.com", isSuperuser: true } | CODE |
| LOW | frontend/tests/auth-ui-matrix.test.tsx | 454 | mockUser = { email: "user@example.com", isSuperuser: false } | CODE |
| LOW | frontend/tests/workspace-sync-settings.test.tsx | 269 | "placeholder", | CODE |
| LOW | …ntend/src/components/service-account-json-uploader.tsx | 299 | placeholder="user@example.com" | CODE |
| LOW | …tend/src/components/organization/org-members-table.tsx | 145 | placeholder="user@example.com" | CODE |
| LOW | …nd/src/components/admin/create-organization-dialog.tsx | 133 | placeholder="Acme Inc" | CODE |
| LOW | frontend/src/components/admin/admin-users-table.tsx | 227 | placeholder="user@example.com" | CODE |
| LOW | …/src/components/admin/admin-org-invitations-dialog.tsx | 201 | placeholder="user@example.com" | CODE |
| LOW⚡ | tests/unit/test_table_csv_importer.py | 206 | csv_row = {"csv_name": "John Doe"} | CODE |
| LOW⚡ | tests/unit/test_table_csv_importer.py | 215 | "\ufeffcsv_name": "John Doe", | CODE |
| LOW | tests/unit/test_table_csv_importer.py | 130 | "csv_name": "John Doe", | CODE |
| LOW | tests/unit/test_table_csv_importer.py | 148 | "name": "John Doe", | CODE |
| LOW | tests/unit/test_table_csv_importer.py | 226 | "name": "John Doe", | CODE |
| LOW | tests/unit/test_table_csv_importer.py | 269 | "csv_name": "John Doe", | CODE |
| LOW | tests/unit/test_table_csv_importer.py | 282 | "name": "John Doe", | CODE |
| LOW⚡ | tests/unit/test_saml_client_config.py | 161 | fake_session, uuid.uuid4(), "user@example.com" | CODE |
| LOW⚡ | tests/unit/test_saml_client_config.py | 239 | fake_session, uuid.uuid4(), ["user@example.com"] | CODE |
| LOW⚡ | tests/unit/test_saml_client_config.py | 242 | assert email == "user@example.com" | CODE |
| LOW⚡ | tests/unit/test_saml_client_config.py | 338 | fake_session, uuid.uuid4(), ["admin@example.com"] | CODE |
| LOW⚡ | tests/unit/test_saml_client_config.py | 341 | assert email == "admin@example.com" | CODE |
| LOW⚡ | tests/unit/test_saml_client_config.py | 403 | monkeypatch.setattr(saml, "TRACECAT__AUTH_SUPERADMIN_EMAIL", "admin@example.com") | CODE |
| LOW⚡ | tests/unit/test_saml_client_config.py | 408 | fake_session, "admin@example.com" | CODE |
| LOW⚡ | tests/unit/test_saml_client_config.py | 417 | monkeypatch.setattr(saml, "TRACECAT__AUTH_SUPERADMIN_EMAIL", "admin@example.com") | CODE |
| LOW⚡ | tests/unit/test_saml_client_config.py | 422 | fake_session, "admin@example.com" | CODE |
| LOW⚡ | tests/unit/test_saml_client_config.py | 431 | monkeypatch.setattr(saml, "TRACECAT__AUTH_SUPERADMIN_EMAIL", "admin@example.com") | CODE |
| LOW⚡ | tests/unit/test_saml_client_config.py | 435 | fake_session, "user@example.com" | CODE |
| LOW | tests/unit/test_saml_client_config.py | 363 | fake_session, uuid.uuid4(), ["admin@example.com"] | CODE |
| LOW | tests/unit/test_saml_client_config.py | 455 | fake_session, org_id, "admin@example.com" | CODE |
| LOW | tests/unit/test_saml_client_config.py | 474 | fake_session, uuid.uuid4(), "admin@example.com" | CODE |
| LOW | tests/unit/test_watchtower_service.py | 220 | last_user_email="user@example.com", | CODE |
| LOW | tests/unit/test_watchtower_service.py | 282 | email="user@example.com", | CODE |
| LOW | tests/unit/test_expressions.py | 159 | "metadata": {"name": "John Doe", "age": 30}, | CODE |
| LOW | tests/unit/test_expressions.py | 202 | "metadata": {"name": "John Doe", "age": 30}, | CODE |
| LOW | tests/unit/test_invitation.py | 132 | email="admin@example.com", | CODE |
| LOW | tests/unit/test_invitation.py | 364 | email="admin@example.com", | CODE |
| LOW⚡ | tests/unit/test_mcp_auth.py | 803 | assert merged.claims["email"] == "user@example.com" | CODE |
| LOW⚡ | tests/unit/test_mcp_auth.py | 821 | email="user@example.com", | CODE |
| LOW⚡ | tests/unit/test_mcp_auth.py | 840 | "email": "user@example.com", | CODE |
| LOW⚡ | tests/unit/test_mcp_auth.py | 878 | email="user@example.com", | CODE |
| LOW⚡ | tests/unit/test_mcp_auth.py | 1059 | email="user@example.com", | CODE |
| LOW⚡ | tests/unit/test_mcp_auth.py | 1076 | assert captured["email"] == "user@example.com" | CODE |
| LOW⚡ | tests/unit/test_mcp_auth.py | 1087 | email="user@example.com", | CODE |
| LOW⚡ | tests/unit/test_mcp_auth.py | 1138 | assert captured["email"] == "user@example.com" | CODE |
| LOW⚡ | tests/unit/test_mcp_auth.py | 1152 | email="user@example.com", | CODE |
| LOW | tests/unit/test_mcp_auth.py | 634 | assert email == "user@example.com" | CODE |
| LOW | tests/unit/test_mcp_auth.py | 647 | assert claims == {"email": "user@example.com"} | CODE |
| LOW | tests/unit/test_mcp_auth.py | 974 | assert identity.email == "user@example.com" | CODE |
| LOW | tests/unit/test_mcp_auth.py | 1103 | assert captured["email"] == "user@example.com" | CODE |
| LOW | tests/unit/test_mcp_auth.py | 1197 | email="user@example.com", | CODE |
| 97 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/unit/test_rbac_scopes.py | 44 | def _set_role_with_scopes(scopes: frozenset[str]) -> None: | CODE |
| LOW | tests/unit/test_mcp_server.py | 2464 | async def update_schedule(self, schedule_id: uuid.UUID, params: Any) -> None: | CODE |
| LOW | tests/unit/test_gitlab_vcs.py | 818 | async def _update_org_secret(self, secret: Any, params: Any) -> None: | CODE |
| LOW | tests/unit/test_agent_filesystem.py | 687 | async def update_current_snapshot(self, **_kwargs: Any) -> None: | CODE |
| LOW | tests/unit/test_agent_filesystem.py | 922 | async def update_current_snapshot(self, **_kwargs: Any) -> None: | CODE |
| LOW | tests/unit/test_agent_otel_relay.py | 61 | def set_outcomes(self, *outcomes: int | httpx.TransportError) -> None: | CODE |
| LOW | tests/unit/test_agent_provider_service.py | 37 | def set_db_encryption_key(monkeypatch: pytest.MonkeyPatch) -> None: | CODE |
| LOW | tests/unit/test_audit_service.py | 1734 | async def update_secret(self, *, secret: SimpleNamespace) -> None: | CODE |
| LOW | tests/unit/test_agent_channel_service.py | 38 | def set_db_encryption_key(monkeypatch: pytest.MonkeyPatch) -> None: | CODE |
| LOW | tests/unit/test_agent_channel_service.py | 492 | def _set_signing_secret(monkeypatch: pytest.MonkeyPatch) -> None: | CODE |
| LOW | tests/unit/executor/test_minimal_runner_protocol.py | 205 | def set_context(ctx: LegacyRegistryContext) -> None: | CODE |
| LOW | tracecat/config.py | 13 | logger = logging.getLogger(__name__) | CODE |
| LOW | tracecat/ssh.py | 29 | __all__ = [ | CODE |
| LOW | tracecat/contexts.py | 16 | __all__ = [ | CODE |
| LOW | tracecat/middleware/__init__.py | 5 | __all__ = [ | CODE |
| LOW⚡ | tracecat/settings/service.py | 317 | async def update_git_settings(self, params: GitSettingsUpdate) -> None: | CODE |
| LOW⚡ | tracecat/settings/service.py | 325 | async def update_saml_settings(self, params: SAMLSettingsUpdate) -> None: | CODE |
| LOW⚡ | tracecat/settings/service.py | 331 | async def update_audit_settings(self, params: AuditSettingsUpdate) -> None: | CODE |
| LOW⚡ | tracecat/settings/service.py | 338 | async def update_app_settings(self, params: AppSettingsUpdate) -> None: | CODE |
| LOW⚡ | tracecat/settings/service.py | 344 | async def update_agent_settings(self, params: AgentSettingsUpdate) -> None: | CODE |
| LOW⚡ | tracecat/settings/service.py | 350 | async def update_agent_otel_settings(self, params: AgentOtelSettingsUpdate) -> None: | CODE |
| LOW | tracecat/feature_flags/__init__.py | 12 | __all__ = ["is_feature_enabled", "FeatureFlag"] | CODE |
| LOW | tracecat/tables/service.py | 2035 | async def update_column(self, column_name: str, params: TableColumnUpdate) -> None: | CODE |
| LOW | tracecat/workspace_sync/importer.py | 17 | __all__ = ["ImportedResource", "WorkspaceResourceImportService"] | CODE |
| LOW | tracecat/workspace_sync/projector.py | 22 | __all__ = [ | CODE |
| LOW | tracecat/workspace_sync/adapters/__init__.py | 40 | __all__ = [ | CODE |
| LOW | tracecat/logger/__init__.py | 3 | __all__ = ["logger"] | CODE |
| LOW | tracecat/auth/sandbox.py | 100 | def _set_secrets(self) -> None: | CODE |
| LOW | tracecat/ee/interactions/connectors.py | 10 | __all__ = ["parse_slack_interaction_input"] | CODE |
| LOW | tracecat/ee/interactions/decorators.py | 19 | __all__ = ["maybe_interactive"] | CODE |
| LOW | tracecat/secrets/service.py | 68 | async def _update_secret(self, secret: BaseSecret, params: SecretUpdate) -> None: | CODE |
| LOW | tracecat/secrets/service.py | 280 | async def update_secret(self, secret: Secret, params: SecretUpdate) -> None: | CODE |
| LOW | tracecat/custom_fields/service.py | 176 | async def update_field(self, field_id: str, params: CustomFieldUpdate) -> None: | CODE |
| LOW | tracecat/custom_fields/service.py | 202 | __all__ = ["CustomFieldsService"] | CODE |
| LOW | tracecat/custom_fields/__init__.py | 4 | __all__ = [ | CODE |
| LOW | tracecat/custom_fields/schemas.py | 81 | __all__ = [ | CODE |
| LOW | tracecat/cases/durations/__init__.py | 16 | __all__ = [ | CODE |
| LOW | tracecat/cases/attachments/__init__.py | 11 | __all__ = [ | CODE |
| LOW⚡ | tracecat/agent/service.py | 310 | async def _set_org_setting_value(self, *, key: str, value: str) -> None: | CODE |
| LOW | tracecat/agent/litellm_compat.py | 15 | logger = logging.getLogger(__name__) | CODE |
| LOW | tracecat/agent/catalog/loader.py | 13 | logger = logging.getLogger(__name__) | CODE |
| LOW | tracecat/agent/mcp/stdio_probe.py | 45 | __all__ = [ | CODE |
| LOW | tracecat/agent/mcp/proxy_server.py | 36 | __all__ = [ | CODE |
| LOW | tracecat/agent/common/__init__.py | 52 | __all__ = [ | CODE |
| LOW | tracecat/agent/folders/service.py | 649 | async def _update_descendant_paths(self, old_path: str, new_path: str) -> None: | CODE |
| LOW | tracecat/agent/approvals/__init__.py | 8 | __all__ = [ | CODE |
| LOW | tracecat/agent/channels/sinks/__init__.py | 5 | __all__ = ["ExternalChannelSink"] | CODE |
| LOW | tracecat/agent/channels/sinks/slack.py | 143 | async def _set_in_progress_reaction(self) -> None: | CODE |
| LOW | tracecat/agent/channels/sinks/slack.py | 155 | async def _set_terminal_reaction(self, *, is_error: bool) -> None: | CODE |
| LOW | tracecat/agent/channels/handlers/slack_helpers.py | 76 | async def set_in_progress(client: AsyncWebClient, *, channel_id: str, ts: str) -> None: | CODE |
| LOW | tracecat/agent/channels/handlers/slack_helpers.py | 88 | async def set_complete(client: AsyncWebClient, *, channel_id: str, ts: str) -> None: | CODE |
| LOW | tracecat/agent/channels/handlers/slack_helpers.py | 106 | async def set_error(client: AsyncWebClient, *, channel_id: str, ts: str) -> None: | CODE |
| LOW⚡ | tracecat/mcp/server.py | 1551 | async def _update_template_file_artifact(artifact: TemplateFileArtifact) -> None: | CODE |
| LOW | tracecat/observability/otel.py | 36 | logger = logging.getLogger(__name__) | CODE |
| LOW | tracecat/observability/otel.py | 177 | def set_current_span_attributes(attributes: dict[str, str | int | bool | None]) -> None: | CODE |
| LOW | tracecat/identifiers/__init__.py | 103 | __all__ = [ | CODE |
| LOW | tracecat/storage/object.py | 364 | def set_object_storage(storage: ObjectStorage | None) -> None: | CODE |
| LOW | tracecat/storage/object.py | 425 | __all__ = [ | CODE |
| LOW | tracecat/storage/backends/__init__.py | 6 | __all__ = [ | CODE |
| LOW | …cecat/integrations/providers/google/service_account.py | 27 | __all__ = [ | CODE |
| 37 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/temporal/test_workflows.py | 5684 | items="${{ ACTIONS.is_one.result || ACTIONS.is_two.result || ACTIONS.is_three.result }}" | CODE |
| HIGH | tests/temporal/test_workflows.py | 5751 | "value": "${{ ACTIONS.is_one.result || ACTIONS.is_two.result }}" | CODE |
| HIGH | tests/unit/test_template_actions.py | 637 | "data": "${{ inputs.limit || 100 }}", | CODE |
| HIGH | tests/unit/test_template_actions.py | 886 | "value": "${{ inputs.url || VARS.test.url }}", | CODE |
| HIGH | tests/unit/test_template_actions.py | 910 | "value": "${{ inputs.custom_timeout || VARS.test.timeout }}", | CODE |
| HIGH | tests/unit/test_template_actions.py | 1065 | "value": '${{ inputs.url || VARS.config.url || "http://default-url.com" }}', | CODE |
| HIGH⚡ | tests/unit/test_template_actions.py | 1021 | """Test template action with multi-level fallback chain using || operator. | STRING |
| HIGH⚡ | tests/unit/test_template_actions.py | 1024 | ${{ inputs.url || VARS.config.url || "http://default-url.com" }} | STRING |
| HIGH | tests/unit/test_template_actions.py | 835 | 3. VARS expressions work with fallback logic (e.g., inputs.value || VARS.default) | STRING |
| HIGH | tests/registry/test_core_http.py | 1570 | "previous": null, | STRING |
| HIGH | …sts/migration/test_comment_activity_audit_migration.py | 165 | f'{{"comment_id":"{comment_id}","parent_id":null,' | STRING |
| HIGH | tracecat/agent/service.py | 792 | non-null) are intentionally left alone — they represent explicit | STRING |
| HIGH | tracecat/agent/tokens.py | 307 | "and catalog_id is null, the gateway resolves workspace provider " | CODE |
| HIGH | tracecat/agent/session/schemas.py | 62 | "If null, the session follows the preset's current version." | CODE |
| HIGH | tracecat/workflow/management/router.py | 1082 | If folder_id is null, the workflow will be moved to the root (no folder). | STRING |
| HIGH | tracecat/db/models.py | 2499 | doc="The ID of the user who made the comment. If null, the comment is system generated.", | CODE |
| HIGH | tracecat/db/models.py | 2529 | doc="The ID of the parent comment. If null, the comment is a top-level comment.", | CODE |
| HIGH | tracecat/db/models.py | 2690 | doc="The ID of the user who made the event. If null, the event is system generated.", | CODE |
| HIGH | …istry/tracecat_registry/integrations/cloudflare_sdk.py | 112 | "If null, fetches every page." | CODE |
| HIGH | …-registry/tracecat_registry/integrations/google_api.py | 465 | description="Maximum number of pages to fetch. If null, fetches every page.", | CODE |
| HIGH | …ges/tracecat-ee/tracecat_ee/agent/workflows/durable.py | 443 | "If null, the run follows the preset's current version." | CODE |
| HIGH | …ges/tracecat-ee/tracecat_ee/agent/approvals/service.py | 20 | from sqlalchemy import func, null, select | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/unit/test_inbox_service.py | 30 | CODE | |
| LOW | tracecat/concurrency.py | 114 | CODE | |
| LOW | tracecat/tables/service.py | 1321 | CODE | |
| LOW | tracecat/inbox/service.py | 40 | CODE | |
| LOW | tracecat/inbox/types.py | 55 | CODE | |
| LOW | tracecat/inbox/router.py | 39 | CODE | |
| LOW | tracecat/workspace_sync/adapters/base.py | 626 | CODE | |
| LOW | tracecat/cases/service.py | 270 | CODE | |
| LOW | tracecat/cases/service.py | 391 | CODE | |
| LOW | tracecat/cases/service.py | 596 | CODE | |
| LOW | tracecat/cases/internal_router.py | 121 | CODE | |
| LOW | tracecat/cases/internal_router.py | 209 | CODE | |
| LOW | tracecat/cases/router.py | 167 | CODE | |
| LOW | tracecat/cases/router.py | 271 | CODE | |
| LOW | tracecat/cases/router.py | 436 | CODE | |
| LOW | tracecat/agent/runtime/pydantic_ai/runtime.py | 78 | CODE | |
| LOW | tracecat/agent/sandbox/config.py | 231 | CODE | |
| LOW | tracecat/agent/sandbox/nsjail.py | 132 | CODE | |
| LOW | tracecat/agent/channels/sinks/slack.py | 205 | CODE | |
| LOW | tracecat/mcp/server.py | 5256 | CODE | |
| LOW | tracecat/mcp/server.py | 5486 | CODE | |
| LOW | tracecat/mcp/server.py | 7784 | CODE | |
| LOW | tracecat/mcp/server.py | 7864 | CODE | |
| LOW | tracecat/mcp/oidc/endpoints.py | 404 | CODE | |
| LOW | tracecat/mcp/oidc/endpoints.py | 527 | CODE | |
| LOW | tracecat/sandbox/service.py | 322 | CODE | |
| LOW | tracecat/sandbox/service.py | 419 | CODE | |
| LOW | tracecat/ai/ranker.py | 369 | CODE | |
| LOW | tracecat/workflow/management/management.py | 1495 | CODE | |
| LOW | tracecat/workflow/executions/service.py | 431 | CODE | |
| LOW | tracecat/workflow/executions/common.py | 322 | CODE | |
| LOW | tracecat/workflow/executions/router.py | 415 | CODE | |
| LOW | tracecat/expressions/expectations.py | 144 | CODE | |
| LOW | tracecat/registry/sync/base_service.py | 277 | CODE | |
| LOW | tracecat/webhooks/router.py | 573 | CODE | |
| LOW | …cecat-registry/tracecat_registry/_internal/registry.py | 11 | CODE | |
| LOW | …es/tracecat-registry/tracecat_registry/core/presets.py | 30 | CODE | |
| LOW | …es/tracecat-registry/tracecat_registry/core/presets.py | 207 | CODE | |
| LOW | …ages/tracecat-registry/tracecat_registry/core/cases.py | 58 | CODE | |
| LOW | …ages/tracecat-registry/tracecat_registry/core/cases.py | 133 | CODE | |
| LOW | …ages/tracecat-registry/tracecat_registry/core/cases.py | 390 | CODE | |
| LOW | …ages/tracecat-registry/tracecat_registry/core/email.py | 102 | CODE | |
| LOW | …kages/tracecat-registry/tracecat_registry/core/http.py | 591 | CODE | |
| LOW | …kages/tracecat-registry/tracecat_registry/core/http.py | 710 | CODE | |
| LOW | …kages/tracecat-registry/tracecat_registry/core/http.py | 858 | CODE | |
| LOW | …ages/tracecat-registry/tracecat_registry/core/agent.py | 241 | CODE | |
| LOW | …ages/tracecat-registry/tracecat_registry/core/agent.py | 375 | CODE | |
| LOW | …ages/tracecat-registry/tracecat_registry/core/table.py | 101 | CODE | |
| LOW | …s/tracecat-registry/tracecat_registry/core/workflow.py | 33 | CODE | |
| LOW | …y/tracecat_registry/integrations/google_secops_soar.py | 46 | CODE | |
| LOW | …ecat-registry/tracecat_registry/integrations/tavily.py | 39 | CODE | |
| LOW | …at-registry/tracecat_registry/integrations/okta_sdk.py | 954 | CODE | |
| LOW | …at-registry/tracecat_registry/integrations/okta_sdk.py | 1167 | CODE | |
| LOW | …at-registry/tracecat_registry/integrations/okta_sdk.py | 1225 | CODE | |
| LOW | …-registry/tracecat_registry/integrations/google_api.py | 437 | CODE | |
| LOW | …gistry/tracecat_registry/integrations/mcp/runreveal.py | 79 | CODE | |
| LOW | …-registry/tracecat_registry/integrations/mcp/linear.py | 79 | CODE | |
| LOW | …at-registry/tracecat_registry/integrations/mcp/jira.py | 82 | CODE | |
| LOW | …-registry/tracecat_registry/integrations/mcp/notion.py | 79 | CODE | |
| LOW | …-registry/tracecat_registry/integrations/mcp/github.py | 79 | CODE | |
| 21 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | tests/unit/test_agent_preset_service.py | 3281 | # Create a preset with comprehensive configuration | COMMENT |
| MEDIUM⚡ | tests/unit/test_action_environment_override.py | 493 | # Create a comprehensive workflow with various environment scenarios | COMMENT |
| LOW | tests/unit/test_tables_service.py | 2194 | # Don't start a new transaction, just use the existing one | STRING |
| MEDIUM⚡ | tests/unit/test_functions.py | 1809 | # Definitely not the year 2000 | COMMENT |
| MEDIUM | tracecat/tables/importer.py | 155 | """Normalize CSV headers for robust matching across parsers.""" | STRING |
| MEDIUM | tracecat/agent/types.py | 70 | # These are used by the legacy pydantic-ai harness, not the sandbox runtime | COMMENT |
| MEDIUM | tracecat/agent/types.py | 108 | # Union type for messages from either harness | COMMENT |
| MEDIUM | tracecat/agent/exceptions.py | 28 | # Build comprehensive error message with debug info | COMMENT |
| MEDIUM | tracecat/agent/adapter/vercel.py | 1121 | # Unified approval request from any harness (pydantic-ai or claude) | COMMENT |
| MEDIUM | tracecat/agent/adapter/vercel.py | 1708 | # Skip approval header for both harness types | COMMENT |
| MEDIUM | tracecat/agent/executor/aio.py | 52 | # This is an execution harness for an agent that adds persistence + streaming | COMMENT |
| MEDIUM | tracecat/agent/executor/aio.py | 144 | # Unified streaming: emit harness-agnostic event | COMMENT |
| MEDIUM | tracecat/storage/validation.py | 88 | # Normalize extensions: trim whitespace and lowercase for robust comparison | COMMENT |
| LOW | tracecat/sandbox/service.py | 270 | # beat us), this will fail on POSIX - that's fine, we just use theirs. | COMMENT |
| LOW | tracecat/registry/actions/service.py | 1600 | # If this action is already in the repo, we can just use it | COMMENT |
| MEDIUM | tracecat/db/models.py | 3087 | # Agent harness fields | COMMENT |
| LOW | tracecat/executor/service.py | 864 | # ExecutionError already has proper error info, just add loop context if needed | COMMENT |
| LOW | tracecat/webhooks/router.py | 419 | # Currently just return the last response's wf_exec_id | COMMENT |
| MEDIUM | …plates/tools/splunk/kv_store/batch_save_kv_entries.yml | 9 | doc_url: https://help.splunk.com/en/splunk-cloud-platform/leverage-rest-apis/rest-api-reference/10.0.2503/kv-store-end | CODE |
| MEDIUM | packages/tracecat-benchmark/docker-compose.loadtest.yml | 166 | # Internal benchmark bootstrap. This is fixed harness wiring, not an | COMMENT |
| MEDIUM | packages/tracecat-benchmark/docker-compose.loadtest.yml | 185 | # Internal benchmark bootstrap. This is fixed harness wiring, not an | COMMENT |
| MEDIUM | packages/tracecat-benchmark/docker-compose.loadtest.yml | 221 | # Internal benchmark bootstrap. This is fixed harness wiring, not an | COMMENT |
| MEDIUM | …/tracecat-ee/tracecat_ee/inbox/providers/agent_runs.py | 72 | # not appear here. Add a harness to this set to make its runs inbox-eligible. | COMMENT |
| MEDIUM | …/tracecat-ee/tracecat_ee/inbox/providers/agent_runs.py | 189 | # Root sessions only: runs of any inbox-eligible harness, plus legacy | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …ontend/src/components/builder/canvas/selector-node.tsx | 370 | // Step 1: create node | COMMENT |
| LOW | …ontend/src/components/builder/canvas/selector-node.tsx | 385 | // Step 2: connect incoming edge to the new node | COMMENT |
| LOW⚡ | tests/integration/test_mcp_oidc_flow.py | 378 | # Step 1: Authorize — get redirect with code | COMMENT |
| LOW⚡ | tests/integration/test_mcp_oidc_flow.py | 402 | # Step 2: Exchange code for tokens | COMMENT |
| LOW⚡ | tests/integration/test_mcp_oidc_flow.py | 411 | # Step 3: Verify access token claims | COMMENT |
| LOW⚡ | tests/integration/test_mcp_oidc_flow.py | 420 | # Step 4: Verify id_token claims | COMMENT |
| LOW | tracecat/registry/sync/artifact.py | 402 | # Step 1: Create a minimal venv using uv | COMMENT |
| LOW | tracecat/registry/sync/artifact.py | 417 | # Step 2: Install the package and all dependencies into the venv | COMMENT |
| LOW | tracecat/registry/sync/artifact.py | 439 | # Step 3: Locate the site-packages directory (PYTHONPATH entry) | COMMENT |
| LOW | tracecat/registry/sync/artifact.py | 452 | # Step 4: Pre-compile Python bytecode for faster imports in sandbox | COMMENT |
| LOW | tracecat/registry/sync/artifact.py | 472 | # Step 5: Pack site-packages into a SquashFS image | COMMENT |
| LOW | tracecat/registry/sync/artifact.py | 488 | # Step 6: Compute content hash | COMMENT |
| LOW⚡ | …ges/tracecat-admin/tracecat_admin/commands/registry.py | 152 | # Step 1: Fetch repositories | COMMENT |
| LOW⚡ | …ges/tracecat-admin/tracecat_admin/commands/registry.py | 159 | # Step 2: Display numbered list of repositories | COMMENT |
| LOW | …ges/tracecat-admin/tracecat_admin/commands/registry.py | 178 | # Step 3: Prompt user to select repository | COMMENT |
| LOW⚡ | …ges/tracecat-admin/tracecat_admin/commands/registry.py | 192 | # Step 4: Fetch versions for selected repository | COMMENT |
| LOW⚡ | …ges/tracecat-admin/tracecat_admin/commands/registry.py | 201 | # Step 5: Display numbered list of versions | COMMENT |
| LOW | …ges/tracecat-admin/tracecat_admin/commands/registry.py | 227 | # Step 6: Prompt user to select version | COMMENT |
| LOW⚡ | …ges/tracecat-admin/tracecat_admin/commands/registry.py | 251 | # Step 7: Confirm selection | COMMENT |
| LOW⚡ | …ges/tracecat-admin/tracecat_admin/commands/registry.py | 260 | # Step 8: Call promote endpoint | COMMENT |
| LOW⚡ | …ges/tracecat-admin/tracecat_admin/commands/registry.py | 266 | # Step 9: Display result | COMMENT |
| LOW | …4f54f0a2b_canonicalize_duplicate_custom_scope_links.py | 26 | # Step 1: Remap role_scope links from duplicate custom scopes to the | COMMENT |
| LOW | …4f54f0a2b_canonicalize_duplicate_custom_scope_links.py | 55 | # Step 2: Drop stale role_scope links that point to custom duplicates. | COMMENT |
| LOW | …4f54f0a2b_canonicalize_duplicate_custom_scope_links.py | 80 | # Step 3: Delete the now-orphaned custom scope rows that are duplicates | COMMENT |
| LOW⚡ | …mbic/versions/a6c2d9e7f5b1_add_owner_to_case_fields.py | 18 | # Step 1: Add the owner_id column to case_fields table as nullable initially | COMMENT |
| LOW⚡ | …mbic/versions/a6c2d9e7f5b1_add_owner_to_case_fields.py | 26 | # Step 2: Create an index on the owner_id column for better query performance | COMMENT |
| LOW⚡ | …mbic/versions/a6c2d9e7f5b1_add_owner_to_case_fields.py | 36 | # Step 3: Populate the new owner_id column with data from the related cases table | COMMENT |
| LOW | …mbic/versions/a6c2d9e7f5b1_add_owner_to_case_fields.py | 51 | # Step 4: Delete orphaned case_fields records that don't have a valid owner_id | COMMENT |
| LOW | …mbic/versions/a6c2d9e7f5b1_add_owner_to_case_fields.py | 62 | # Step 5: Create a foreign key constraint linking owner_id to workspace.id | COMMENT |
| LOW | …mbic/versions/a6c2d9e7f5b1_add_owner_to_case_fields.py | 76 | # Step 6: Make the owner_id column NOT NULL after populating it with data | COMMENT |
| LOW⚡ | …mbic/versions/a6c2d9e7f5b1_add_owner_to_case_fields.py | 87 | # Step 1: Remove the foreign key constraint first (dependencies must be removed before columns) | COMMENT |
| LOW⚡ | …mbic/versions/a6c2d9e7f5b1_add_owner_to_case_fields.py | 90 | # Step 2: Remove the index on owner_id column | COMMENT |
| LOW⚡ | …mbic/versions/a6c2d9e7f5b1_add_owner_to_case_fields.py | 97 | # Step 3: Finally, drop the owner_id column entirely | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …ontend/src/components/builder/canvas/selector-node.tsx | 370 | // Step 1: create node | COMMENT |
| LOW | …ontend/src/components/builder/canvas/selector-node.tsx | 385 | // Step 2: connect incoming edge to the new node | COMMENT |
| LOW⚡ | tests/integration/test_mcp_oidc_flow.py | 378 | # Step 1: Authorize — get redirect with code | COMMENT |
| LOW⚡ | tests/integration/test_mcp_oidc_flow.py | 402 | # Step 2: Exchange code for tokens | COMMENT |
| LOW⚡ | tests/integration/test_mcp_oidc_flow.py | 411 | # Step 3: Verify access token claims | COMMENT |
| LOW⚡ | tests/integration/test_mcp_oidc_flow.py | 420 | # Step 4: Verify id_token claims | COMMENT |
| LOW | tracecat/registry/sync/artifact.py | 402 | # Step 1: Create a minimal venv using uv | COMMENT |
| LOW | tracecat/registry/sync/artifact.py | 417 | # Step 2: Install the package and all dependencies into the venv | COMMENT |
| LOW | tracecat/registry/sync/artifact.py | 439 | # Step 3: Locate the site-packages directory (PYTHONPATH entry) | COMMENT |
| LOW | tracecat/registry/sync/artifact.py | 452 | # Step 4: Pre-compile Python bytecode for faster imports in sandbox | COMMENT |
| LOW | tracecat/registry/sync/artifact.py | 472 | # Step 5: Pack site-packages into a SquashFS image | COMMENT |
| LOW | tracecat/registry/sync/artifact.py | 488 | # Step 6: Compute content hash | COMMENT |
| LOW⚡ | …ges/tracecat-admin/tracecat_admin/commands/registry.py | 152 | # Step 1: Fetch repositories | COMMENT |
| LOW⚡ | …ges/tracecat-admin/tracecat_admin/commands/registry.py | 159 | # Step 2: Display numbered list of repositories | COMMENT |
| LOW | …ges/tracecat-admin/tracecat_admin/commands/registry.py | 178 | # Step 3: Prompt user to select repository | COMMENT |
| LOW⚡ | …ges/tracecat-admin/tracecat_admin/commands/registry.py | 192 | # Step 4: Fetch versions for selected repository | COMMENT |
| LOW⚡ | …ges/tracecat-admin/tracecat_admin/commands/registry.py | 201 | # Step 5: Display numbered list of versions | COMMENT |
| LOW | …ges/tracecat-admin/tracecat_admin/commands/registry.py | 227 | # Step 6: Prompt user to select version | COMMENT |
| LOW⚡ | …ges/tracecat-admin/tracecat_admin/commands/registry.py | 251 | # Step 7: Confirm selection | COMMENT |
| LOW⚡ | …ges/tracecat-admin/tracecat_admin/commands/registry.py | 260 | # Step 8: Call promote endpoint | COMMENT |
| LOW⚡ | …ges/tracecat-admin/tracecat_admin/commands/registry.py | 266 | # Step 9: Display result | COMMENT |
| LOW | …4f54f0a2b_canonicalize_duplicate_custom_scope_links.py | 26 | # Step 1: Remap role_scope links from duplicate custom scopes to the | COMMENT |
| LOW | …4f54f0a2b_canonicalize_duplicate_custom_scope_links.py | 55 | # Step 2: Drop stale role_scope links that point to custom duplicates. | COMMENT |
| LOW | …4f54f0a2b_canonicalize_duplicate_custom_scope_links.py | 80 | # Step 3: Delete the now-orphaned custom scope rows that are duplicates | COMMENT |
| LOW⚡ | …mbic/versions/a6c2d9e7f5b1_add_owner_to_case_fields.py | 18 | # Step 1: Add the owner_id column to case_fields table as nullable initially | COMMENT |
| LOW⚡ | …mbic/versions/a6c2d9e7f5b1_add_owner_to_case_fields.py | 26 | # Step 2: Create an index on the owner_id column for better query performance | COMMENT |
| LOW⚡ | …mbic/versions/a6c2d9e7f5b1_add_owner_to_case_fields.py | 36 | # Step 3: Populate the new owner_id column with data from the related cases table | COMMENT |
| LOW | …mbic/versions/a6c2d9e7f5b1_add_owner_to_case_fields.py | 51 | # Step 4: Delete orphaned case_fields records that don't have a valid owner_id | COMMENT |
| LOW | …mbic/versions/a6c2d9e7f5b1_add_owner_to_case_fields.py | 62 | # Step 5: Create a foreign key constraint linking owner_id to workspace.id | COMMENT |
| LOW | …mbic/versions/a6c2d9e7f5b1_add_owner_to_case_fields.py | 76 | # Step 6: Make the owner_id column NOT NULL after populating it with data | COMMENT |
| LOW⚡ | …mbic/versions/a6c2d9e7f5b1_add_owner_to_case_fields.py | 87 | # Step 1: Remove the foreign key constraint first (dependencies must be removed before columns) | COMMENT |
| LOW⚡ | …mbic/versions/a6c2d9e7f5b1_add_owner_to_case_fields.py | 90 | # Step 2: Remove the index on owner_id column | COMMENT |
| LOW⚡ | …mbic/versions/a6c2d9e7f5b1_add_owner_to_case_fields.py | 97 | # Step 3: Finally, drop the owner_id column entirely | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | tests/registry/test_core_http.py | 229 | assert route.calls.last.request.content.replace(b" ", b"") == b'{"data":"value"}' | CODE |
| CRITICAL | tests/registry/test_core_http.py | 641 | content_type_header = route.calls.last.request.headers.get("content-type", "") | CODE |
| CRITICAL | tests/registry/test_core_http.py | 703 | content_type_header = route.calls.last.request.headers.get("content-type", "") | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/unit/test_mcp_server.py | 3110 | # The publish orchestration lives in WorkflowsManagementService.publish_workflow; | COMMENT |
| MEDIUM | tests/unit/api/test_api_workflows.py | 261 | # The build/validate/lock/commit orchestration lives in | COMMENT |
| MEDIUM | tracecat/executor/service.py | 853 | # This handles both template orchestration and UDF execution | COMMENT |
| MEDIUM | …at-ee/tracecat_ee/mcp/catalog/mcp_catalog_private.json | 740 | "docs": "https://docs.wiz.io/docs/connect-remote-wiz-mcp-server#agentic-workflows", | CODE |
| MEDIUM | …at-ee/tracecat_ee/mcp/catalog/mcp_catalog_private.json | 740 | "docs": "https://docs.wiz.io/docs/connect-remote-wiz-mcp-server#agentic-workflows", | CODE |
| MEDIUM | …at-ee/tracecat_ee/mcp/catalog/mcp_catalog_private.json | 1821 | "docs": "https://docs.snyk.io/integrations/snyk-studio-agentic-integrations", | CODE |
| MEDIUM | …at-ee/tracecat_ee/mcp/catalog/mcp_catalog_private.json | 1876 | "https://docs.snyk.io/cli-ide-and-ci-cd-integrations/snyk-cli/developer-guardrails-for-agentic-workflows/sny | CODE |
| MEDIUM | …at-ee/tracecat_ee/mcp/catalog/mcp_catalog_private.json | 1877 | "https://docs.snyk.io/integrations/developer-guardrails-for-agentic-workflows/quickstart-guides-for-mcp" | CODE |
| MEDIUM | …at-ee/tracecat_ee/mcp/catalog/mcp_catalog_private.json | 2217 | "https://www.redhat.com/en/blog/it-automation-agentic-ai-introducing-mcp-server-red-hat-ansible-automation-p | CODE |
| MEDIUM | …at-ee/tracecat_ee/mcp/catalog/mcp_catalog_private.json | 2258 | "notes": "This is the Microsoft Agent 365 \"Work IQ User\" MCP server (internal server ID mcp_MeServer, displa | CODE |
| MEDIUM | …at-ee/tracecat_ee/mcp/catalog/mcp_catalog_private.json | 2369 | "notes": "The official first-party SharePoint MCP server is the \"Work IQ SharePoint\" server in Microsoft Age | CODE |
| MEDIUM | …workspace_chat/skills/tracecat-platform-guide/SKILL.md | 71 | ## Correctness guardrails | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | alembic.ini | 1 | # A generic, single database configuration. | COMMENT |
| LOW | alembic.ini | 21 | # Any required deps can installed by adding `alembic[tz]` to the pip requirements | COMMENT |
| LOW | alembic.ini | 41 | # The path separator used here should be the separator specified by "version_path_separator" below. | COMMENT |
| LOW | alembic.ini | 61 | # output_encoding = utf-8 | COMMENT |
| LOW | env-migration.sh | 1 | #!/bin/bash | COMMENT |
| LOW | docker/sandbox/build.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | frontend/jest.setup.js | 101 | // Alternatively, | COMMENT |
| LOW | frontend/next-env.d.ts | 1 | /// <reference types="next" /> | COMMENT |
| LOW | …ontend/src/components/agents/agent-presets-builder.tsx | 1721 | } | COMMENT |
| LOW | …de/mermaid-code-block-node/mermaid-code-block-node.tsx | 201 | #${svgId} foreignObject span, | COMMENT |
| LOW | frontend/src/lib/workspace.ts | 1 | // Workspace role utilities are now handled via RBAC roles. | COMMENT |
| LOW | tests/conftest.py | 281 | # --------------------------------------------------------------------------- | COMMENT |
| LOW | tests/temporal/test_workflows.py | 5261 | ), | COMMENT |
| LOW | tests/temporal/test_error_handling.py | 41 | COMMENT | |
| LOW | tests/temporal/test_error_handling.py | 61 | # ), | COMMENT |
| LOW | tracecat/agent/session/service.py | 3241 | COMMENT | |
| LOW | tracecat/dsl/scheduler.py | 721 | # Update child indegrees | COMMENT |
| LOW | packages/tracecat-benchmark/docker-compose.loadtest.yml | 1 | # PostgreSQL scatter load-test override. | COMMENT |
| LOW | packages/tracecat-benchmark/docker-compose.loadtest.yml | 81 | cpus: "${TRACECAT__LOADTEST_REDIS_CPUS:-0}" | COMMENT |
| LOW | packages/tracecat-benchmark/docker-compose.loadtest.yml | 101 | # idle connections of the non-load services against the same budget. | COMMENT |
| LOW | packages/tracecat-benchmark/docker-compose.loadtest.yml | 121 | # pins LiteLLM to 1 worker). Executor sandbox workers use the executor-local | COMMENT |
| LOW | packages/tracecat-benchmark/docker-compose.loadtest.yml | 141 | # | COMMENT |
| LOW | …tracecat-benchmark/tracecat_benchmark/pgdog/users.toml | 1 | # Runtime users and independent logical database pools come from | COMMENT |
| LOW | .github/workflows/run-integration-tests.yml | 121 | # | COMMENT |
| LOW | alembic/env.py | 61 | # this is the Alembic Config object, which provides | COMMENT |
| LOW | deployments/fargate/modules/ecs/secrets.tf | 1 | # Required secrets in AWS Secrets Manager (all services): | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/unit/test_agent_runtime.py | 165 | CODE | |
| MEDIUM | tests/unit/test_agent_runtime.py | 762 | CODE | |
| MEDIUM | tests/unit/test_agent_runtime.py | 802 | CODE | |
| MEDIUM | tests/unit/test_agent_runtime.py | 1845 | CODE | |
| MEDIUM | tests/unit/test_concurrency.py | 425 | CODE | |
| MEDIUM | tests/unit/test_agent_otel_relay.py | 47 | CODE | |
| MEDIUM | tests/unit/test_tier_permits.py | 42 | CODE | |
| MEDIUM | tests/unit/test_tier_permits.py | 111 | CODE | |
| MEDIUM | tests/unit/test_agent_socket_io.py | 68 | CODE | |
| MEDIUM | tests/unit/api/test_api_audit_webhook_test.py | 91 | CODE | |
| MEDIUM | tracecat/agent/stream/connector.py | 426 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tracecat/integrations/service.py | 1120 | # means "as requested"; a declared-empty [] means the AS stripped grants. | COMMENT |
| HIGH | tracecat/integrations/types.py | 55 | # None = grant_types omitted ("as requested"); [] = AS stripped all grants. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/unit/test_registry.py | 152 | def test_function(num: int) -> int: | STRING |
| LOW⚡ | tests/registry/test_core_python.py | 90 | def helper(): | CODE |
| LOW⚡ | tests/registry/test_core_python.py | 103 | def process_data(x): | CODE |
| LOW | tests/registry/test_core_python.py | 152 | def process_data(a, b, c): | CODE |
| LOW | tests/registry/test_core_python.py | 745 | def process_data(data): | CODE |
| LOW | tracecat/dsl/workflow.py | 709 | async def execute_task(self, task: ActionStatement) -> TaskResult: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | frontend/tests/markdown-with-frontmatter.test.tsx | 102 | print("hello") | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …at-ee/tracecat_ee/mcp/catalog/mcp_catalog_private.json | 651 | "description": "The Iru API key sent as the X-API-Key HTTP header. Must be copied exactly as Iru shows it, i | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | frontend/src/middleware.ts | 31 | * Feel free to modify this pattern to include more paths. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docker-compose.sandbox.yml | 2 | # Usage: | COMMENT |