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,730 GitHub stars. SynthScan v2.0 examined 813,543 lines of code across 3053 source files, recording 11034 pattern matches distributed across 25 syntactic categories. The overall adjusted score of 16.3 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 11034 distinct pattern matches across 25 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | frontend/tests/memo-render-count.test.tsx | 106 | 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/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 | 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 | 83 | 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 | 90 | function connectionSpecFromIntegration( | CODE |
| LOW | …/src/app/workspaces/[workspaceId]/mcp-servers/page.tsx | 143 | function workspaceIntegrationToCatalogEntry( | CODE |
| LOW | …/src/app/workspaces/[workspaceId]/mcp-servers/page.tsx | 174 | function workspaceIntegrationMatches( | CODE |
| LOW | …/src/app/workspaces/[workspaceId]/mcp-servers/page.tsx | 219 | 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/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 | 8 | function createEmbeddedCatalogIcon(href: 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 | 574 | export function ProviderConfigFormSkeleton() { | CODE |
| LOW | frontend/src/components/icons.tsx | 284 | function createCatalogIconRenderer( | CODE |
| LOW | frontend/src/components/icons.tsx | 297 | 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 | 2444 | function handleProviderCredentialsSaved() { | CODE |
| LOW⚡ | …end/src/components/organization/org-settings-agent.tsx | 2454 | function handleOpenAddCatalogModel(providerSlug: string) { | CODE |
| LOW⚡ | …end/src/components/organization/org-settings-agent.tsx | 2461 | 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 | 571 | function getCustomSourceFlavorLabel(flavor?: string | null): string | null { | CODE |
| LOW | …end/src/components/organization/org-settings-agent.tsx | 634 | function getCustomSourceModelTitle( | CODE |
| LOW | …end/src/components/organization/org-settings-agent.tsx | 684 | function canEnableBuiltInCatalogModel(model: BuiltInCatalogEntry): boolean { | CODE |
| LOW | …end/src/components/organization/org-settings-agent.tsx | 716 | function getProviderDialogDefaults( | CODE |
| LOW | …end/src/components/organization/org-settings-agent.tsx | 732 | function buildProviderCreatePayload( | CODE |
| LOW | …end/src/components/organization/org-settings-agent.tsx | 745 | function buildProviderUpdatePayload( | CODE |
| LOW | …end/src/components/organization/org-settings-agent.tsx | 1156 | function ProviderAllowlistModelRow({ | CODE |
| LOW | …end/src/components/organization/org-settings-agent.tsx | 2173 | function invalidateOrganizationAgentQueries() { | CODE |
| LOW | …end/src/components/organization/org-settings-agent.tsx | 2185 | function invalidateBuiltInAgentQueries() { | CODE |
| LOW | …end/src/components/organization/org-settings-agent.tsx | 2279 | async function handleDeleteBuiltInCredentials( | CODE |
| LOW | …end/src/components/organization/org-settings-agent.tsx | 2338 | async function handleEnableAllProviderModels( | CODE |
| LOW | …end/src/components/organization/org-settings-agent.tsx | 2373 | async function handleDisableAllProviderModels( | CODE |
| LOW | …end/src/components/organization/org-settings-agent.tsx | 2409 | async function handleRefreshCustomProvider(source: CustomSourceCard) { | CODE |
| LOW | …end/src/components/organization/org-settings-agent.tsx | 2427 | async function handleDeleteCustomProvider(provider: AgentCustomProviderRead) { | CODE |
| LOW | …end/src/components/organization/org-settings-agent.tsx | 2475 | function handleOpenDeleteCatalogModel(model: BuiltInCatalogEntry) { | CODE |
| LOW | …end/src/components/organization/org-settings-agent.tsx | 2483 | async function handleConfirmDeleteCatalogEntry(entry: AgentCatalogRead) { | CODE |
| LOW | …end/src/components/organization/org-settings-audit.tsx | 216 | function normalizePayloadAttribute(value: string | null | undefined): string { | CODE |
| LOW | …mponents/organization/org-settings-custom-registry.tsx | 45 | export function OrgSettingsCustomRegistryForm() { | CODE |
| LOW | …mponents/organization/org-agent-credentials-dialog.tsx | 54 | function getCredentialLayoutSections( | CODE |
| LOW | …ponents/organization/org-settings-service-accounts.tsx | 18 | export function OrgSettingsServiceAccounts() { | CODE |
| LOW | …c/components/organization/service-accounts-manager.tsx | 291 | function matchesServiceAccountStatusFilter( | CODE |
| LOW | …c/components/organization/service-accounts-manager.tsx | 313 | function matchesServiceAccountSearchQuery( | CODE |
| LOW | …c/components/organization/service-accounts-manager.tsx | 415 | function ServiceAccountDetailPanel({ | CODE |
| LOW | …rc/components/organization/org-settings-agent-utils.ts | 15 | export function getAgentCatalogSourceName( | CODE |
| LOW | …tend/src/components/organization/org-secret-delete.tsx | 18 | export function DeleteOrgSecretAlertDialog({ | CODE |
| 7465 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 | 6167 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/lib/hooks.tsx | 6169 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/conftest.py | 223 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/conftest.py | 225 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/conftest.py | 238 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/conftest.py | 240 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/conftest.py | 1925 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/conftest.py | 1928 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/conftest.py | 2042 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/conftest.py | 2044 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/temporal/test_durable_agent_workflow.py | 115 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | tests/temporal/test_durable_agent_workflow.py | 117 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | tests/temporal/test_durable_agent_workflow.py | 484 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | tests/temporal/test_durable_agent_workflow.py | 486 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | tests/temporal/test_durable_agent_workflow.py | 2210 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | tests/temporal/test_durable_agent_workflow.py | 2212 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | tests/temporal/test_durable_agent_workflow.py | 2700 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | tests/temporal/test_durable_agent_workflow.py | 2702 | # ============================================================================= | COMMENT |
| MEDIUM | tests/temporal/test_durable_agent_workflow.py | 343 | # ============================================================================= | COMMENT |
| MEDIUM | tests/temporal/test_durable_agent_workflow.py | 345 | # ============================================================================= | 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 |
| 603 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/unit/test_agent_session_search_attributes.py | 3 | CODE | |
| LOW | tests/unit/test_workspace_sync_service.py | 3 | 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_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_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 | |
| LOW | tests/unit/test_admin_registry_service.py | 3 | CODE | |
| LOW | tests/unit/test_webhook_execution_path.py | 11 | CODE | |
| LOW | …/unit/test_durable_agent_workflow_search_attributes.py | 3 | CODE | |
| LOW | tests/unit/test_agent_runtime_broker.py | 1 | CODE | |
| LOW | tests/unit/test_workflow_registry_resolution.py | 3 | CODE | |
| LOW | tests/unit/test_agent_preset_activities.py | 1 | CODE | |
| LOW | tests/unit/test_redis_client.py | 1 | CODE | |
| 826 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/ssh.py | 328 | Get a Git SSH command for the given Git URL. Args: git_url: Git URL object containing repository informatio | 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 | 626 | Get an invitation by ID (must belong to this organization). Args: invitation_id: The invitation UUI | STRING |
| HIGH | tracecat/organization/service.py | 647 | 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 | 671 | Accept an invitation and create organization membership + RBAC assignment. This method validates the invitation | STRING |
| HIGH | tracecat/organization/service.py | 813 | 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 | 299 | List all lookup tables for a workspace. Args: workspace_id: The ID of the workspace to list tables | STRING |
| HIGH | tracecat/tables/service.py | 362 | Get a lookup table by name. Args: table_name: The name of the table to get Returns: | STRING |
| HIGH | tracecat/tables/service.py | 399 | Create a new lookup table. Args: params: Parameters for creating the table Returns: | STRING |
| HIGH | tracecat/tables/service.py | 543 | Add a new column to an existing table. Args: table: The table to add the column to para | STRING |
| HIGH | tracecat/tables/service.py | 620 | Update a column in an existing table. Args: column: The column to update params: Parame | STRING |
| HIGH | tracecat/tables/service.py | 874 | Insert a new row into the table. Args: table: The table to insert into params: The row | STRING |
| HIGH | tracecat/tables/service.py | 1003 | Update an existing row in the table. Args: table: The table containing the row to update | STRING |
| HIGH | tracecat/tables/service.py | 1334 | List rows in a table with cursor-based pagination. Args: table: The table to search in | STRING |
| HIGH | tracecat/tables/service.py | 1605 | Insert multiple rows into the table atomically. Args: table: The table to insert into r | STRING |
| HIGH | tracecat/tables/service.py | 2026 | Add a new column to an existing table. Args: params: Parameters for the new column Returns | STRING |
| HIGH | tracecat/tables/service.py | 2082 | Update a column in an existing table. Args: params: Parameters for updating the column Ret | STRING |
| HIGH | tracecat/tables/service.py | 2309 | 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 | 1014 | 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 | 800 | Get a case with its associated custom fields. Args: case_id: UUID of the case to retrieve | STRING |
| HIGH | tracecat/cases/service.py | 992 | Update a case and optionally its custom fields. Args: case: The case object to update p | STRING |
| HIGH | tracecat/cases/service.py | 1468 | 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 | 1565 | Upsert custom field values for a case. This method ensures the workspace row exists and updates field values. | STRING |
| HIGH | tracecat/cases/service.py | 2228 | Update an existing comment. Args: comment: The comment to update params: The updated co | STRING |
| HIGH | tracecat/cases/service.py | 2531 | Get a task by ID. Args: task_id: The ID of the task to get Returns: The task | STRING |
| HIGH | tracecat/cases/service.py | 2606 | 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 | 2674 | Update a task. Args: task_id: The ID of the task to update params: The task update para | 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 | 39 | 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 | 142 | Create a Tool from a registry action using index-based lookup. Args: action_name: Full canonical action nam | STRING |
| HIGH | tracecat/agent/tools.py | 271 | Build tools from a list of actions using index-based lookups. Args: namespaces: Optional list of namespace | STRING |
| HIGH | tracecat/agent/tokens.py | 205 | Verify MCP JWT and return extracted claims. Args: token: The JWT string to verify Returns: MCP | STRING |
| HIGH | tracecat/agent/tokens.py | 396 | Verify LLM JWT and return extracted claims. Args: token: The JWT string to verify Returns: LLM | STRING |
| HIGH | tracecat/agent/skill/service.py | 287 | 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 | 264 | 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 |
| HIGH | tracecat/agent/sandbox/config.py | 226 | Build nsjail protobuf config for agent runtime execution. Args: rootfs: Path to the sandbox rootfs (same as | STRING |
| HIGH | tracecat/agent/sandbox/config.py | 490 | Construct a sanitized environment for the nsjail agent process. Args: config: Agent sandbox configuration. | STRING |
| HIGH | tracecat/agent/sandbox/nsjail.py | 145 | Spawn the Claude shim inside an NSJail sandbox or direct subprocess. This is the entrypoint for the orchestrator to | STRING |
| HIGH | tracecat/agent/sandbox/nsjail.py | 506 | Wait for a jailed runtime process to complete. Args: process: The nsjail subprocess. timeout_second | STRING |
| HIGH | tracecat/agent/executor/activity.py | 372 | Create one direct passthrough route. Args: base_url: Resolved custom provider base URL. | STRING |
| HIGH | tracecat/agent/session/service.py | 1345 | Run a session turn by spawning a DurableAgentWorkflow. This method prepares the chat turn and spawns a DurableA | STRING |
| HIGH | tracecat/agent/session/service.py | 1828 | Build agent configuration for a session based on its entity type. Args: agent_session: The session | STRING |
| 92 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 | 513 | # 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 | 2091 | # Create a simple configuration variable | COMMENT |
| MEDIUM | tests/temporal/test_workflows.py | 3505 | # Create the child workflow | COMMENT |
| MEDIUM | tests/temporal/test_workflows.py | 4363 | # Create a simple child workflow that doubles the input | COMMENT |
| MEDIUM | tests/temporal/test_workflows.py | 6246 | # Define the DSL workflow | COMMENT |
| MEDIUM | tests/temporal/test_workflows.py | 6377 | # Define the DSL workflow | COMMENT |
| MEDIUM | tests/temporal/test_workflows.py | 6463 | # Define the DSL workflow | COMMENT |
| MEDIUM | tests/temporal/test_workflows.py | 6664 | # Create a workflow with sequential actions to verify time advances | COMMENT |
| MEDIUM | tests/temporal/test_workflows.py | 6801 | # Create a child workflow that returns the current time | COMMENT |
| MEDIUM | tests/temporal/test_workflows.py | 6823 | # Create a parent workflow that calls the child and also captures its own time | COMMENT |
| MEDIUM | tests/temporal/test_durable_agent_workflow.py | 191 | # 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 | 483 | # Create a generator that would be expensive if fully loaded | COMMENT |
| MEDIUM | tests/unit/test_concurrency.py | 18 | # 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 | 2847 | # Create a second OAuth integration | COMMENT |
| MEDIUM | tests/unit/test_mcp_integrations.py | 4277 | # 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 | 417 | # Create an event with the original service (original user) | COMMENT |
| MEDIUM⚡ | tests/unit/test_case_events_service.py | 425 | # Create a service with a different user | COMMENT |
| 179 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/conftest.py | 184 | except Exception as exc: | CODE |
| LOW | tests/conftest.py | 267 | except Exception: | CODE |
| LOW | tests/conftest.py | 322 | except Exception as e: | CODE |
| LOW | tests/conftest.py | 1494 | except Exception as e: | CODE |
| LOW | tests/conftest.py | 1528 | except Exception as e: | CODE |
| LOW | tests/conftest.py | 1629 | except Exception as e: | CODE |
| LOW | tests/conftest.py | 1642 | except Exception as inner_e: | CODE |
| LOW | tests/conftest.py | 1660 | except Exception as e: | CODE |
| LOW | tests/conftest.py | 1714 | except Exception: | CODE |
| LOW | tests/conftest.py | 1145 | except Exception as e: | STRING |
| LOW | tests/conftest.py | 1150 | except Exception as e: | STRING |
| LOW | tests/conftest.py | 1305 | 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 | 2325 | except Exception: | CODE |
| LOW⚡ | tests/temporal/test_durable_agent_workflow.py | 2329 | except Exception: | CODE |
| LOW⚡ | tests/temporal/test_durable_agent_workflow.py | 2443 | except Exception: | CODE |
| LOW⚡ | tests/temporal/test_durable_agent_workflow.py | 2447 | except Exception: | CODE |
| LOW⚡ | tests/temporal/test_durable_agent_workflow.py | 2563 | except Exception: | CODE |
| LOW⚡ | tests/temporal/test_durable_agent_workflow.py | 2567 | except Exception: | CODE |
| LOW⚡ | tests/temporal/test_durable_agent_workflow.py | 2691 | except Exception: | CODE |
| LOW⚡ | tests/temporal/test_durable_agent_workflow.py | 2695 | 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 | 954 | " 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 | 76 | 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 | 2096 | except Exception as e: | STRING |
| LOW | tests/unit/test_workflow_import_simple.py | 152 | except Exception as e: | 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 | 278 | except Exception as exc: | 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_pool_integration.py | 1116 | except Exception: | CODE |
| LOW | tests/integration/test_pool_integration.py | 756 | except Exception: | CODE |
| LOW | tests/integration/test_case_duration_benchmarks.py | 281 | except Exception: | CODE |
| LOW | tests/integration/test_case_duration_benchmarks.py | 351 | 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 |
| LOW | tests/registry/test_core_python.py | 596 | except Exception as e: | CODE |
| LOW | …cat-automation-best-practices/references/run-python.md | 73 | except Exception as exc: | CODE |
| LOW | tracecat/ssh.py | 215 | except Exception as e: | CODE |
| LOW | tracecat/ssh.py | 257 | except Exception as e: | CODE |
| LOW | tracecat/pagination.py | 109 | except Exception as e: | CODE |
| LOW | tracecat/pagination.py | 147 | except Exception: | CODE |
| LOW | tracecat/pagination.py | 184 | except Exception: | CODE |
| 597 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_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 | …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 | …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/integrations/providers/google/sheets.py | 0 | google docs oauth provider using service account credentials. | STRING |
| HIGH | …cecat/integrations/providers/google/service_account.py | 0 | google docs oauth provider using service account credentials. | STRING |
| HIGH | tracecat/integrations/providers/google/docs.py | 0 | google docs oauth provider using service account credentials. | 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 | tracecat/executor/backends/ephemeral.py | 0 | get artifact uris for registry environment (deterministic ordering). | STRING |
| HIGH | tracecat/executor/backends/test.py | 0 | get artifact uris for registry environment (deterministic ordering). | STRING |
| HIGH | tracecat/executor/backends/pool/backend.py | 0 | get artifact uris for registry environment (deterministic ordering). | 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 |
| 10 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 | docker/scripts/entrypoint.sh | 14 | # Check if we need to run migrations (only for API) | COMMENT |
| LOW | …src/components/builder/panel/action-panel-tooltips.tsx | 26 | # Check if user has admin role | COMMENT |
| LOW | …src/components/builder/panel/action-panel-tooltips.tsx | 36 | # Check if failed login attempts exceed threshold | COMMENT |
| LOW | tests/conftest.py | 1408 | # Check if organization exists | COMMENT |
| LOW | tests/conftest.py | 1449 | # Check if organization exists in this session | COMMENT |
| LOW | tests/conftest.py | 1535 | # Check if organization exists | COMMENT |
| LOW | tests/conftest.py | 1589 | # Set timeouts to avoid deadlocks with parallel workers | COMMENT |
| LOW | tests/conftest.py | 1614 | # Set timeouts to avoid deadlocks with parallel workers | COMMENT |
| LOW | tests/conftest.py | 1647 | # Set timeouts to avoid deadlocks with parallel workers | COMMENT |
| LOW | tests/temporal/test_durable_agent_workflow.py | 370 | # 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 | 749 | # Set expiration to 4 minutes in future (within refresh window) | COMMENT |
| LOW⚡ | tests/unit/test_executor.py | 185 | # 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 | 155 | # Check if host already exists in known_hosts | COMMENT |
| LOW | tracecat/organization/service.py | 548 | # 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 | 756 | # Check if another index already exists | COMMENT |
| LOW | tracecat/tables/service.py | 921 | # Check if we have any unique columns to use for conflict resolution | COMMENT |
| LOW | tracecat/tables/service.py | 1456 | # Check if cursor was created with the same sort column | COMMENT |
| LOW | tracecat/tables/service.py | 1554 | # Check if there are more items | COMMENT |
| LOW | tracecat/auth/users.py | 131 | # Check if this is attempting to be the first user (superadmin) | COMMENT |
| LOW | tracecat/auth/credentials.py | 755 | # 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 | 485 | # Check if cursor was created with the same sort column (for proper pagination) | COMMENT |
| LOW | tracecat/cases/service.py | 569 | # Check if there are more items | COMMENT |
| LOW | tracecat/cases/service.py | 2754 | # 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 | 675 | # Check if all requested IDs exist | COMMENT |
| LOW | tracecat/agent/mcp/proxy_server.py | 187 | # Check if this is a user MCP tool | COMMENT |
| LOW | tracecat/agent/session/service.py | 1972 | # Check if this is a forked session (has parent_session_id) | COMMENT |
| LOW | tracecat/agent/session/router.py | 337 | # Check if this is a legacy chat (read-only) | COMMENT |
| LOW | tracecat/agent/session/router.py | 412 | # 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/workspaces/service.py | 366 | # Check if the existing invitation is expired - if so, delete and retry | COMMENT |
| LOW | tracecat/workspaces/service.py | 479 | # Check if user is already a member of the organization | COMMENT |
| LOW | tracecat/workspaces/service.py | 498 | # Check if user is already a member of the workspace | COMMENT |
| LOW | tracecat/tags/service.py | 58 | # Check if ref already exists | COMMENT |
| 64 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/conftest.py | 176 | CODE | |
| LOW | tests/conftest.py | 376 | CODE | |
| LOW | tests/conftest.py | 491 | CODE | |
| LOW | tests/conftest.py | 1574 | CODE | |
| LOW | tests/conftest.py | 386 | CODE | |
| LOW | tests/conftest.py | 507 | CODE | |
| LOW | tests/temporal/test_workflows.py | 352 | CODE | |
| LOW | tests/temporal/test_durable_agent_workflow.py | 2220 | CODE | |
| LOW | tests/temporal/test_durable_agent_workflow.py | 2339 | CODE | |
| LOW | tests/temporal/test_durable_agent_workflow.py | 2457 | CODE | |
| LOW | tests/temporal/test_durable_agent_workflow.py | 2577 | CODE | |
| LOW | tests/unit/test_interactions.py | 76 | CODE | |
| LOW | tests/unit/test_mcp_server.py | 10013 | 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 | 482 | CODE | |
| LOW | tests/unit/test_config.py | 120 | 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 | tests/integration/test_pool_integration.py | 1075 | 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 | 130 | CODE | |
| LOW | tracecat/temporal/codec.py | 313 | CODE | |
| LOW | tracecat/tables/service.py | 238 | CODE | |
| LOW | tracecat/tables/service.py | 615 | CODE | |
| LOW | tracecat/tables/service.py | 869 | CODE | |
| LOW | tracecat/tables/service.py | 1322 | CODE | |
| LOW | tracecat/tables/service.py | 1597 | CODE | |
| LOW | tracecat/tables/service.py | 1740 | CODE | |
| LOW | tracecat/tables/service.py | 2260 | CODE | |
| LOW | tracecat/tables/service.py | 2308 | 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 | 1332 | CODE | |
| LOW | tracecat/workspace_sync/service.py | 1529 | 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/case_field.py | 88 | CODE | |
| LOW | tracecat/workspace_sync/adapters/case_field.py | 192 | CODE | |
| LOW | tracecat/auth/credentials.py | 501 | CODE | |
| LOW | tracecat/auth/credentials.py | 876 | CODE | |
| LOW | tracecat/auth/credentials.py | 1005 | CODE | |
| LOW | tracecat/auth/saml.py | 526 | CODE | |
| LOW | tracecat/secrets/service.py | 68 | CODE | |
| LOW | tracecat/secrets/secrets_manager.py | 133 | CODE | |
| LOW | tracecat/secrets/secrets_manager.py | 305 | CODE | |
| LOW | tracecat/cases/service.py | 371 | CODE | |
| LOW | tracecat/cases/service.py | 898 | CODE | |
| 171 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 | 209 | "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 |
| 92 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/temporal/test_workflows.py | 5686 | items="${{ ACTIONS.is_one.result || ACTIONS.is_two.result || ACTIONS.is_three.result }}" | CODE |
| HIGH | tests/temporal/test_workflows.py | 5753 | "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 | 1518 | "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 | 306 | "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 | 1009 | If folder_id is null, the workflow will be moved to the root (no folder). | STRING |
| HIGH | tracecat/db/models.py | 2423 | doc="The ID of the user who made the comment. If null, the comment is system generated.", | CODE |
| HIGH | tracecat/db/models.py | 2453 | doc="The ID of the parent comment. If null, the comment is a top-level comment.", | CODE |
| HIGH | tracecat/db/models.py | 2513 | 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 | 277 | description="Maximum number of pages to fetch. If null, fetches every page.", | CODE |
| HIGH | …ges/tracecat-ee/tracecat_ee/agent/workflows/durable.py | 418 | "If null, the run follows the preset's current version." | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/unit/test_rbac_scopes.py | 43 | def _set_role_with_scopes(scopes: frozenset[str]) -> None: | CODE |
| LOW | tests/unit/test_mcp_server.py | 2347 | 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_provider_service.py | 37 | def set_db_encryption_key(monkeypatch: pytest.MonkeyPatch) -> 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 | 11 | logger = logging.getLogger(__name__) | CODE |
| LOW | tracecat/ssh.py | 29 | __all__ = [ | CODE |
| LOW | tracecat/contexts.py | 15 | __all__ = [ | CODE |
| LOW | tracecat/middleware/__init__.py | 5 | __all__ = [ | CODE |
| LOW⚡ | tracecat/settings/service.py | 291 | async def update_git_settings(self, params: GitSettingsUpdate) -> None: | CODE |
| LOW⚡ | tracecat/settings/service.py | 299 | async def update_saml_settings(self, params: SAMLSettingsUpdate) -> None: | CODE |
| LOW⚡ | tracecat/settings/service.py | 305 | async def update_audit_settings(self, params: AuditSettingsUpdate) -> None: | CODE |
| LOW⚡ | tracecat/settings/service.py | 311 | async def update_app_settings(self, params: AppSettingsUpdate) -> None: | CODE |
| LOW⚡ | tracecat/settings/service.py | 317 | async def update_agent_settings(self, params: AgentSettingsUpdate) -> None: | CODE |
| LOW | tracecat/feature_flags/__init__.py | 12 | __all__ = ["is_feature_enabled", "FeatureFlag"] | CODE |
| LOW | tracecat/tables/service.py | 2081 | 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 | 279 | 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 | 37 | __all__ = [ | CODE |
| LOW | tracecat/agent/mcp/proxy_server.py | 33 | __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 | 1485 | async def _update_template_file_artifact(artifact: TemplateFileArtifact) -> None: | CODE |
| LOW | tracecat/identifiers/__init__.py | 102 | __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 | tracecat/integrations/providers/google/__init__.py | 7 | __all__ = [ | CODE |
| LOW | tracecat/integrations/providers/microsoft/__init__.py | 34 | __all__ = [ | CODE |
| LOW | …cat/integrations/providers/microsoft/azure/__init__.py | 16 | __all__ = [ | CODE |
| LOW | …cat/integrations/providers/microsoft/graph/__init__.py | 16 | __all__ = [ | CODE |
| LOW | …/integrations/providers/microsoft/defender/__init__.py | 12 | __all__ = [ | CODE |
| LOW | tracecat/integrations/catalog/loader.py | 56 | logger = logging.getLogger(__name__) | CODE |
| 29 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/unit/test_inbox_service.py | 30 | CODE | |
| LOW | tracecat/concurrency.py | 52 | CODE | |
| LOW | tracecat/tables/service.py | 1286 | 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 | 250 | CODE | |
| LOW | tracecat/cases/service.py | 371 | CODE | |
| LOW | tracecat/cases/service.py | 684 | CODE | |
| LOW | tracecat/cases/internal_router.py | 121 | CODE | |
| LOW | tracecat/cases/internal_router.py | 209 | CODE | |
| LOW | tracecat/cases/router.py | 159 | CODE | |
| LOW | tracecat/cases/router.py | 263 | CODE | |
| LOW | tracecat/cases/router.py | 428 | CODE | |
| LOW | tracecat/agent/runtime/pydantic_ai/runtime.py | 78 | CODE | |
| LOW | tracecat/agent/sandbox/nsjail.py | 127 | CODE | |
| LOW | tracecat/agent/channels/sinks/slack.py | 205 | CODE | |
| LOW | tracecat/mcp/server.py | 5246 | CODE | |
| LOW | tracecat/mcp/server.py | 5476 | CODE | |
| LOW | tracecat/mcp/server.py | 7767 | CODE | |
| LOW | tracecat/mcp/server.py | 7847 | CODE | |
| LOW | tracecat/mcp/oidc/endpoints.py | 404 | CODE | |
| LOW | tracecat/mcp/oidc/endpoints.py | 527 | CODE | |
| LOW | tracecat/sandbox/service.py | 317 | CODE | |
| LOW | tracecat/sandbox/service.py | 414 | CODE | |
| LOW | tracecat/ai/ranker.py | 369 | CODE | |
| LOW | tracecat/workflow/management/management.py | 1464 | CODE | |
| LOW | tracecat/workflow/executions/service.py | 430 | CODE | |
| LOW | tracecat/workflow/executions/common.py | 322 | CODE | |
| LOW | tracecat/workflow/executions/router.py | 416 | 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 | 584 | CODE | |
| LOW | …kages/tracecat-registry/tracecat_registry/core/http.py | 685 | CODE | |
| LOW | …kages/tracecat-registry/tracecat_registry/core/http.py | 824 | CODE | |
| LOW | …ages/tracecat-registry/tracecat_registry/core/agent.py | 228 | CODE | |
| LOW | …ages/tracecat-registry/tracecat_registry/core/agent.py | 362 | CODE | |
| LOW | …ages/tracecat-registry/tracecat_registry/core/table.py | 101 | CODE | |
| LOW | …s/tracecat-registry/tracecat_registry/core/workflow.py | 32 | 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 | …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 | |
| LOW | …-registry/tracecat_registry/integrations/mcp/sentry.py | 79 | CODE | |
| LOW | …cat-registry/tracecat_registry/integrations/mcp/wiz.py | 79 | CODE | |
| 19 more matches not shown… | ||||
| 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 |
|---|---|---|---|---|
| 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 | 2079 | # Don't start a new transaction, just use the existing one | STRING |
| MEDIUM⚡ | tests/unit/test_functions.py | 1801 | # 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 | 53 | # These are used by the legacy pydantic-ai harness, not the sandbox runtime | COMMENT |
| MEDIUM | tracecat/agent/types.py | 91 | # 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 | 1104 | # Unified approval request from any harness (pydantic-ai or claude) | COMMENT |
| MEDIUM | tracecat/agent/adapter/vercel.py | 1683 | # 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 | 265 | # beat us), this will fail on POSIX - that's fine, we just use theirs. | COMMENT |
| LOW | tracecat/registry/actions/service.py | 1500 | # If this action is already in the repo, we can just use it | COMMENT |
| MEDIUM | tracecat/db/models.py | 2910 | # Agent harness fields | COMMENT |
| LOW⚡ | tracecat/executor/service.py | 810 | # 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 | …/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 |
|---|---|---|---|---|
| CRITICAL | tests/registry/test_core_http.py | 224 | assert route.calls.last.request.content.replace(b" ", b"") == b'{"data":"value"}' | CODE |
| CRITICAL | tests/registry/test_core_http.py | 589 | content_type_header = route.calls.last.request.headers.get("content-type", "") | CODE |
| CRITICAL | tests/registry/test_core_http.py | 651 | content_type_header = route.calls.last.request.headers.get("content-type", "") | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/unit/test_mcp_server.py | 2993 | # 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 | 800 | # This handles both template orchestration and UDF execution | COMMENT |
| MEDIUM | …at-ee/tracecat_ee/mcp/catalog/mcp_catalog_private.json | 926 | "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 | 926 | "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 | 2199 | "docs": "https://docs.snyk.io/integrations/snyk-studio-agentic-integrations", | CODE |
| MEDIUM | …at-ee/tracecat_ee/mcp/catalog/mcp_catalog_private.json | 2253 | "https://docs.snyk.io/cli-ide-and-ci-cd-integrations/snyk-cli/developer-guardrails-for-agentic-workflows/snyk- | CODE |
| MEDIUM | …at-ee/tracecat_ee/mcp/catalog/mcp_catalog_private.json | 2254 | "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 | 2616 | "https://www.redhat.com/en/blog/it-automation-agentic-ai-introducing-mcp-server-red-hat-ansible-automation-pla | CODE |
| MEDIUM | …at-ee/tracecat_ee/mcp/catalog/mcp_catalog_private.json | 2655 | "research_notes": "This is the Microsoft Agent 365 \"Work IQ User\" MCP server (internal server ID mcp_MeServer, | CODE |
| MEDIUM | …at-ee/tracecat_ee/mcp/catalog/mcp_catalog_private.json | 2760 | "research_notes": "The official first-party SharePoint MCP server is the \"Work IQ SharePoint\" server in Micros | 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 | frontend/src/components/chat/chat-session-pane.tsx | 421 | // | 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 | 221 | COMMENT | |
| LOW | tests/temporal/test_workflows.py | 5261 | "TRIGGER": {}, | COMMENT |
| LOW | tests/temporal/test_error_handling.py | 41 | COMMENT | |
| LOW | tests/temporal/test_error_handling.py | 61 | # ), | COMMENT |
| LOW | tracecat/expressions/validator/base.py | 221 | return | COMMENT |
| LOW | tracecat/executor/service.py | 781 | try: | COMMENT |
| LOW | tracecat/dsl/scheduler.py | 621 | ) -> None: | COMMENT |
| LOW | tracecat/dsl/scheduler.py | 1461 | # await block. If not, streams at the current level will observe 0 | COMMENT |
| LOW | scripts/openapi/openapi_to_template.py | 1 | #!/usr/bin/env python3 | 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 | 160 | CODE | |
| MEDIUM | tests/unit/test_agent_runtime.py | 753 | CODE | |
| MEDIUM | tests/unit/test_agent_runtime.py | 793 | CODE | |
| MEDIUM | tests/unit/test_agent_runtime.py | 1715 | CODE | |
| MEDIUM | tests/unit/test_concurrency.py | 424 | 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 | tracecat/agent/stream/connector.py | 323 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …at-ee/tracecat_ee/mcp/catalog/mcp_catalog_private.json | 841 | "description": "The Iru API key sent as the X-API-Key HTTP header. Must be copied exactly as Iru shows it, i | CODE |
| HIGH | …at-ee/tracecat_ee/mcp/catalog/mcp_catalog_private.json | 1568 | "description": "Sixtyfour API key. For the Filter Search MCP server it is passed as a query-string parameter | CODE |
| HIGH | …at-ee/tracecat_ee/mcp/catalog/mcp_catalog_private.json | 1576 | "research_notes": "Our catalog assumed STDIO, but Sixtyfour's official MCP offering is HTTP (streamable HTTP), p | CODE |
| 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 | 747 | 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 |
|---|---|---|---|---|
| MEDIUM | frontend/src/middleware.ts | 13 | * Feel free to modify this pattern to include more paths. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docker-compose.sandbox.yml | 2 | # Usage: | COMMENT |