From a154a891d4228f44a2a03429707ae0e09a85f044 Mon Sep 17 00:00:00 2001
From: gotbadger
Date: Wed, 4 Feb 2026 12:57:20 +0000
Subject: [PATCH] CM-58972: Remove sentry
---
cycode/cli/app.py | 4 -
.../cli/apps/ai_guardrails/install_command.py | 3 -
.../apps/ai_guardrails/scan/scan_command.py | 3 -
.../cli/apps/ai_guardrails/status_command.py | 3 -
.../apps/ai_guardrails/uninstall_command.py | 3 -
cycode/cli/apps/auth/auth_command.py | 2 -
.../cli/apps/configure/configure_command.py | 3 -
cycode/cli/apps/ignore/ignore_command.py | 3 -
cycode/cli/apps/mcp/mcp_command.py | 3 -
cycode/cli/apps/report/report_command.py | 2 -
.../cli/apps/report/sbom/path/path_command.py | 3 -
.../repository_url/repository_url_command.py | 3 -
cycode/cli/apps/report/sbom/sbom_command.py | 3 -
.../report_import/report_import_command.py | 3 -
.../apps/report_import/sbom/sbom_command.py | 3 -
.../commit_history/commit_history_command.py | 3 -
cycode/cli/apps/scan/path/path_command.py | 3 -
.../scan/pre_commit/pre_commit_command.py | 3 -
.../apps/scan/pre_push/pre_push_command.py | 3 -
.../scan/pre_receive/pre_receive_command.py | 3 -
.../scan/repository/repository_command.py | 3 -
.../cli/apps/scan/scan_ci/scan_ci_command.py | 2 -
cycode/cli/apps/scan/scan_command.py | 4 -
cycode/cli/consts.py | 8 --
cycode/cli/exceptions/handle_errors.py | 3 -
.../cli/user_settings/credentials_manager.py | 5 -
cycode/cli/utils/sentry.py | 112 ------------------
cycode/cyclient/headers.py | 3 -
poetry.lock | 64 +---------
pyproject.toml | 1 -
30 files changed, 2 insertions(+), 262 deletions(-)
delete mode 100644 cycode/cli/utils/sentry.py
diff --git a/cycode/cli/app.py b/cycode/cli/app.py
index e838519e..41391f99 100644
--- a/cycode/cli/app.py
+++ b/cycode/cli/app.py
@@ -19,7 +19,6 @@
from cycode.cli.printers import ConsolePrinter
from cycode.cli.user_settings.configuration_manager import ConfigurationManager
from cycode.cli.utils.progress_bar import SCAN_PROGRESS_BAR_SECTIONS, get_progress_bar
-from cycode.cli.utils.sentry import add_breadcrumb, init_sentry
from cycode.cli.utils.version_checker import version_checker
from cycode.cyclient.cycode_client_base import CycodeClientBase
from cycode.cyclient.models import UserAgentOptionScheme
@@ -143,9 +142,6 @@ def app_callback(
] = None,
) -> None:
"""[bold cyan]Cycode CLI - Command Line Interface for Cycode.[/]"""
- init_sentry()
- add_breadcrumb('cycode')
-
ctx.ensure_object(dict)
configuration_manager = ConfigurationManager()
diff --git a/cycode/cli/apps/ai_guardrails/install_command.py b/cycode/cli/apps/ai_guardrails/install_command.py
index 4b1095ab..882ebad4 100644
--- a/cycode/cli/apps/ai_guardrails/install_command.py
+++ b/cycode/cli/apps/ai_guardrails/install_command.py
@@ -13,7 +13,6 @@
)
from cycode.cli.apps.ai_guardrails.consts import IDE_CONFIGS, AIIDEType
from cycode.cli.apps.ai_guardrails.hooks_manager import install_hooks
-from cycode.cli.utils.sentry import add_breadcrumb
def install_command(
@@ -57,8 +56,6 @@ def install_command(
cycode ai-guardrails install --ide all # Install for all supported IDEs
cycode ai-guardrails install --scope repo --repo-path /path/to/repo
"""
- add_breadcrumb('ai-guardrails-install')
-
# Validate inputs
validate_scope(scope)
repo_path = resolve_repo_path(scope, repo_path)
diff --git a/cycode/cli/apps/ai_guardrails/scan/scan_command.py b/cycode/cli/apps/ai_guardrails/scan/scan_command.py
index 73981831..288b0025 100644
--- a/cycode/cli/apps/ai_guardrails/scan/scan_command.py
+++ b/cycode/cli/apps/ai_guardrails/scan/scan_command.py
@@ -25,7 +25,6 @@
from cycode.cli.apps.ai_guardrails.scan.utils import output_json, safe_json_parse
from cycode.cli.exceptions.custom_exceptions import HttpUnauthorizedError
from cycode.cli.utils.get_api_client import get_ai_security_manager_client, get_scan_cycode_client
-from cycode.cli.utils.sentry import add_breadcrumb
from cycode.logger import get_logger
logger = get_logger('AI Guardrails')
@@ -84,8 +83,6 @@ def scan_command(
Example usage (from IDE hooks configuration):
{ "command": "cycode ai-guardrails scan" }
"""
- add_breadcrumb('ai-guardrails-scan')
-
stdin_data = sys.stdin.read().strip()
payload = safe_json_parse(stdin_data)
diff --git a/cycode/cli/apps/ai_guardrails/status_command.py b/cycode/cli/apps/ai_guardrails/status_command.py
index 14a31e7f..0808d806 100644
--- a/cycode/cli/apps/ai_guardrails/status_command.py
+++ b/cycode/cli/apps/ai_guardrails/status_command.py
@@ -10,7 +10,6 @@
from cycode.cli.apps.ai_guardrails.command_utils import console, validate_and_parse_ide, validate_scope
from cycode.cli.apps.ai_guardrails.consts import IDE_CONFIGS, AIIDEType
from cycode.cli.apps.ai_guardrails.hooks_manager import get_hooks_status
-from cycode.cli.utils.sentry import add_breadcrumb
def status_command(
@@ -53,8 +52,6 @@ def status_command(
cycode ai-guardrails status --ide cursor # Check status for Cursor IDE
cycode ai-guardrails status --ide all # Check status for all supported IDEs
"""
- add_breadcrumb('ai-guardrails-status')
-
# Validate inputs (status allows 'all' scope)
validate_scope(scope, allowed_scopes=('user', 'repo', 'all'))
if repo_path is None:
diff --git a/cycode/cli/apps/ai_guardrails/uninstall_command.py b/cycode/cli/apps/ai_guardrails/uninstall_command.py
index acf3d0c7..be4288e3 100644
--- a/cycode/cli/apps/ai_guardrails/uninstall_command.py
+++ b/cycode/cli/apps/ai_guardrails/uninstall_command.py
@@ -13,7 +13,6 @@
)
from cycode.cli.apps.ai_guardrails.consts import IDE_CONFIGS, AIIDEType
from cycode.cli.apps.ai_guardrails.hooks_manager import uninstall_hooks
-from cycode.cli.utils.sentry import add_breadcrumb
def uninstall_command(
@@ -56,8 +55,6 @@ def uninstall_command(
cycode ai-guardrails uninstall --ide cursor # Uninstall from Cursor IDE
cycode ai-guardrails uninstall --ide all # Uninstall from all supported IDEs
"""
- add_breadcrumb('ai-guardrails-uninstall')
-
# Validate inputs
validate_scope(scope)
repo_path = resolve_repo_path(scope, repo_path)
diff --git a/cycode/cli/apps/auth/auth_command.py b/cycode/cli/apps/auth/auth_command.py
index 817e0213..1184a916 100644
--- a/cycode/cli/apps/auth/auth_command.py
+++ b/cycode/cli/apps/auth/auth_command.py
@@ -4,7 +4,6 @@
from cycode.cli.exceptions.handle_auth_errors import handle_auth_exception
from cycode.cli.logger import logger
from cycode.cli.models import CliResult
-from cycode.cli.utils.sentry import add_breadcrumb
def auth_command(ctx: typer.Context) -> None:
@@ -16,7 +15,6 @@ def auth_command(ctx: typer.Context) -> None:
* `cycode auth`: Start interactive authentication
* `cycode auth --help`: View authentication options
"""
- add_breadcrumb('auth')
printer = ctx.obj.get('console_printer')
try:
diff --git a/cycode/cli/apps/configure/configure_command.py b/cycode/cli/apps/configure/configure_command.py
index a8759459..1811271c 100644
--- a/cycode/cli/apps/configure/configure_command.py
+++ b/cycode/cli/apps/configure/configure_command.py
@@ -10,7 +10,6 @@
get_id_token_input,
)
from cycode.cli.console import console
-from cycode.cli.utils.sentry import add_breadcrumb
def _should_update_value(
@@ -39,8 +38,6 @@ def configure_command() -> None:
* `cycode configure`: Start interactive configuration
* `cycode configure --help`: View configuration options
"""
- add_breadcrumb('configure')
-
global_config_manager = CONFIGURATION_MANAGER.global_config_file_manager
current_api_url = global_config_manager.get_api_url()
diff --git a/cycode/cli/apps/ignore/ignore_command.py b/cycode/cli/apps/ignore/ignore_command.py
index 1183114a..c65197c3 100644
--- a/cycode/cli/apps/ignore/ignore_command.py
+++ b/cycode/cli/apps/ignore/ignore_command.py
@@ -9,7 +9,6 @@
from cycode.cli.config import configuration_manager
from cycode.cli.logger import logger
from cycode.cli.utils.path_utils import get_absolute_path, is_path_exists
-from cycode.cli.utils.sentry import add_breadcrumb
from cycode.cli.utils.string_utils import hash_string_to_sha256
_FILTER_BY_RICH_HELP_PANEL = 'Filter options'
@@ -97,8 +96,6 @@ def ignore_command( # noqa: C901
* `cycode ignore --by-rule GUID`: Ignore rule with the specified GUID
* `cycode ignore --by-package lodash@4.17.21`: Ignore lodash version 4.17.21
"""
- add_breadcrumb('ignore')
-
all_by_values = [by_value, by_sha, by_path, by_rule, by_package, by_cve]
if all(by is None for by in all_by_values):
raise click.ClickException('Ignore by type is missing')
diff --git a/cycode/cli/apps/mcp/mcp_command.py b/cycode/cli/apps/mcp/mcp_command.py
index b9989ce2..39bcce40 100644
--- a/cycode/cli/apps/mcp/mcp_command.py
+++ b/cycode/cli/apps/mcp/mcp_command.py
@@ -13,7 +13,6 @@
from pydantic import Field
from cycode.cli.cli_types import McpTransportOption, ScanTypeOption
-from cycode.cli.utils.sentry import add_breadcrumb
from cycode.logger import LoggersManager, get_logger
try:
@@ -381,8 +380,6 @@ def mcp_command(
cycode mcp # Start with default transport (stdio)
cycode mcp -t sse -p 8080 # Start with Server-Sent Events (SSE) transport on port 8080
"""
- add_breadcrumb('mcp')
-
try:
_run_mcp_server(transport, host, port)
except Exception as e:
diff --git a/cycode/cli/apps/report/report_command.py b/cycode/cli/apps/report/report_command.py
index 75debb33..ba19be1c 100644
--- a/cycode/cli/apps/report/report_command.py
+++ b/cycode/cli/apps/report/report_command.py
@@ -1,7 +1,6 @@
import typer
from cycode.cli.utils.progress_bar import SBOM_REPORT_PROGRESS_BAR_SECTIONS, get_progress_bar
-from cycode.cli.utils.sentry import add_breadcrumb
def report_command(ctx: typer.Context) -> int:
@@ -10,6 +9,5 @@ def report_command(ctx: typer.Context) -> int:
Example usage:
* `cycode report sbom`: Generate SBOM report
"""
- add_breadcrumb('report')
ctx.obj['progress_bar'] = get_progress_bar(hidden=False, sections=SBOM_REPORT_PROGRESS_BAR_SECTIONS)
return 1
diff --git a/cycode/cli/apps/report/sbom/path/path_command.py b/cycode/cli/apps/report/sbom/path/path_command.py
index 61c9ddb7..93be3d3c 100644
--- a/cycode/cli/apps/report/sbom/path/path_command.py
+++ b/cycode/cli/apps/report/sbom/path/path_command.py
@@ -13,7 +13,6 @@
from cycode.cli.utils.get_api_client import get_report_cycode_client
from cycode.cli.utils.progress_bar import SbomReportProgressBarSection
from cycode.cli.utils.scan_utils import is_cycodeignore_allowed_by_scan_config
-from cycode.cli.utils.sentry import add_breadcrumb
def path_command(
@@ -23,8 +22,6 @@ def path_command(
typer.Argument(exists=True, resolve_path=True, help='Path to generate SBOM report for.', show_default=False),
],
) -> None:
- add_breadcrumb('path')
-
client = get_report_cycode_client(ctx)
report_parameters = ctx.obj['report_parameters']
output_format = report_parameters.output_format
diff --git a/cycode/cli/apps/report/sbom/repository_url/repository_url_command.py b/cycode/cli/apps/report/sbom/repository_url/repository_url_command.py
index e0955871..2b208ea2 100644
--- a/cycode/cli/apps/report/sbom/repository_url/repository_url_command.py
+++ b/cycode/cli/apps/report/sbom/repository_url/repository_url_command.py
@@ -7,7 +7,6 @@
from cycode.cli.exceptions.handle_report_sbom_errors import handle_report_exception
from cycode.cli.utils.get_api_client import get_report_cycode_client
from cycode.cli.utils.progress_bar import SbomReportProgressBarSection
-from cycode.cli.utils.sentry import add_breadcrumb
from cycode.cli.utils.url_utils import sanitize_repository_url
from cycode.logger import get_logger
@@ -18,8 +17,6 @@ def repository_url_command(
ctx: typer.Context,
uri: Annotated[str, typer.Argument(help='Repository URL to generate SBOM report for.', show_default=False)],
) -> None:
- add_breadcrumb('repository_url')
-
progress_bar = ctx.obj['progress_bar']
progress_bar.start()
progress_bar.set_section_length(SbomReportProgressBarSection.PREPARE_LOCAL_FILES)
diff --git a/cycode/cli/apps/report/sbom/sbom_command.py b/cycode/cli/apps/report/sbom/sbom_command.py
index 06126dd0..4454a966 100644
--- a/cycode/cli/apps/report/sbom/sbom_command.py
+++ b/cycode/cli/apps/report/sbom/sbom_command.py
@@ -5,7 +5,6 @@
import typer
from cycode.cli.cli_types import SbomFormatOption, SbomOutputFormatOption
-from cycode.cli.utils.sentry import add_breadcrumb
from cycode.cyclient.report_client import ReportParameters
_OUTPUT_RICH_HELP_PANEL = 'Output options'
@@ -50,8 +49,6 @@ def sbom_command(
] = False,
) -> int:
"""Generate SBOM report."""
- add_breadcrumb('sbom')
-
sbom_format_parts = sbom_format.split('-')
if len(sbom_format_parts) != 2:
raise click.ClickException('Invalid SBOM format.')
diff --git a/cycode/cli/apps/report_import/report_import_command.py b/cycode/cli/apps/report_import/report_import_command.py
index 7f4e8844..3e346bbe 100644
--- a/cycode/cli/apps/report_import/report_import_command.py
+++ b/cycode/cli/apps/report_import/report_import_command.py
@@ -1,7 +1,5 @@
import typer
-from cycode.cli.utils.sentry import add_breadcrumb
-
def report_import_command(ctx: typer.Context) -> int:
""":bar_chart: [bold cyan]Import security reports.[/]
@@ -9,5 +7,4 @@ def report_import_command(ctx: typer.Context) -> int:
Example usage:
* `cycode import sbom`: Import SBOM report
"""
- add_breadcrumb('import')
return 1
diff --git a/cycode/cli/apps/report_import/sbom/sbom_command.py b/cycode/cli/apps/report_import/sbom/sbom_command.py
index de9e85d4..b6b5dfeb 100644
--- a/cycode/cli/apps/report_import/sbom/sbom_command.py
+++ b/cycode/cli/apps/report_import/sbom/sbom_command.py
@@ -6,7 +6,6 @@
from cycode.cli.cli_types import BusinessImpactOption
from cycode.cli.exceptions.handle_report_sbom_errors import handle_report_exception
from cycode.cli.utils.get_api_client import get_import_sbom_cycode_client
-from cycode.cli.utils.sentry import add_breadcrumb
from cycode.cyclient.import_sbom_client import ImportSbomParameters
@@ -52,8 +51,6 @@ def sbom_command(
] = BusinessImpactOption.MEDIUM,
) -> None:
"""Import SBOM."""
- add_breadcrumb('sbom')
-
client = get_import_sbom_cycode_client(ctx)
import_parameters = ImportSbomParameters(
diff --git a/cycode/cli/apps/scan/commit_history/commit_history_command.py b/cycode/cli/apps/scan/commit_history/commit_history_command.py
index 5935cf59..46d911e8 100644
--- a/cycode/cli/apps/scan/commit_history/commit_history_command.py
+++ b/cycode/cli/apps/scan/commit_history/commit_history_command.py
@@ -6,7 +6,6 @@
from cycode.cli.apps.scan.commit_range_scanner import scan_commit_range
from cycode.cli.exceptions.handle_scan_errors import handle_scan_exception
from cycode.cli.logger import logger
-from cycode.cli.utils.sentry import add_breadcrumb
def commit_history_command(
@@ -25,8 +24,6 @@ def commit_history_command(
] = '--all',
) -> None:
try:
- add_breadcrumb('commit_history')
-
logger.debug('Starting commit history scan process, %s', {'path': path, 'commit_range': commit_range})
scan_commit_range(ctx, repo_path=str(path), commit_range=commit_range)
except Exception as e:
diff --git a/cycode/cli/apps/scan/path/path_command.py b/cycode/cli/apps/scan/path/path_command.py
index 3ee87350..6b2beab5 100644
--- a/cycode/cli/apps/scan/path/path_command.py
+++ b/cycode/cli/apps/scan/path/path_command.py
@@ -5,7 +5,6 @@
from cycode.cli.apps.scan.code_scanner import scan_disk_files
from cycode.cli.logger import logger
-from cycode.cli.utils.sentry import add_breadcrumb
def path_command(
@@ -14,8 +13,6 @@ def path_command(
list[Path], typer.Argument(exists=True, resolve_path=True, help='Paths to scan', show_default=False)
],
) -> None:
- add_breadcrumb('path')
-
progress_bar = ctx.obj['progress_bar']
progress_bar.start()
diff --git a/cycode/cli/apps/scan/pre_commit/pre_commit_command.py b/cycode/cli/apps/scan/pre_commit/pre_commit_command.py
index 5693412f..e0cbc7a8 100644
--- a/cycode/cli/apps/scan/pre_commit/pre_commit_command.py
+++ b/cycode/cli/apps/scan/pre_commit/pre_commit_command.py
@@ -4,15 +4,12 @@
import typer
from cycode.cli.apps.scan.commit_range_scanner import scan_pre_commit
-from cycode.cli.utils.sentry import add_breadcrumb
def pre_commit_command(
ctx: typer.Context,
_: Annotated[Optional[list[str]], typer.Argument(help='Ignored arguments', hidden=True)] = None,
) -> None:
- add_breadcrumb('pre_commit')
-
repo_path = os.getcwd() # change locally for easy testing
progress_bar = ctx.obj['progress_bar']
diff --git a/cycode/cli/apps/scan/pre_push/pre_push_command.py b/cycode/cli/apps/scan/pre_push/pre_push_command.py
index 868ab62e..d3339ea9 100644
--- a/cycode/cli/apps/scan/pre_push/pre_push_command.py
+++ b/cycode/cli/apps/scan/pre_push/pre_push_command.py
@@ -19,7 +19,6 @@
)
from cycode.cli.logger import logger
from cycode.cli.utils import scan_utils
-from cycode.cli.utils.sentry import add_breadcrumb
from cycode.cli.utils.task_timer import TimeoutAfter
from cycode.logger import set_logging_level
@@ -29,8 +28,6 @@ def pre_push_command(
_: Annotated[Optional[list[str]], typer.Argument(help='Ignored arguments', hidden=True)] = None,
) -> None:
try:
- add_breadcrumb('pre_push')
-
if should_skip_pre_receive_scan():
logger.info(
'A scan has been skipped as per your request. '
diff --git a/cycode/cli/apps/scan/pre_receive/pre_receive_command.py b/cycode/cli/apps/scan/pre_receive/pre_receive_command.py
index f6265fd2..70abd4aa 100644
--- a/cycode/cli/apps/scan/pre_receive/pre_receive_command.py
+++ b/cycode/cli/apps/scan/pre_receive/pre_receive_command.py
@@ -19,7 +19,6 @@
)
from cycode.cli.logger import logger
from cycode.cli.utils import scan_utils
-from cycode.cli.utils.sentry import add_breadcrumb
from cycode.cli.utils.task_timer import TimeoutAfter
from cycode.logger import set_logging_level
@@ -29,8 +28,6 @@ def pre_receive_command(
_: Annotated[Optional[list[str]], typer.Argument(help='Ignored arguments', hidden=True)] = None,
) -> None:
try:
- add_breadcrumb('pre_receive')
-
if should_skip_pre_receive_scan():
logger.info(
'A scan has been skipped as per your request. '
diff --git a/cycode/cli/apps/scan/repository/repository_command.py b/cycode/cli/apps/scan/repository/repository_command.py
index f36c07e6..e32fec0d 100644
--- a/cycode/cli/apps/scan/repository/repository_command.py
+++ b/cycode/cli/apps/scan/repository/repository_command.py
@@ -17,7 +17,6 @@
from cycode.cli.utils.path_utils import get_path_by_os
from cycode.cli.utils.progress_bar import ScanProgressBarSection
from cycode.cli.utils.scan_utils import is_cycodeignore_allowed_by_scan_config
-from cycode.cli.utils.sentry import add_breadcrumb
def repository_command(
@@ -30,8 +29,6 @@ def repository_command(
] = None,
) -> None:
try:
- add_breadcrumb('repository')
-
logger.debug('Starting repository scan process, %s', {'path': path, 'branch': branch})
scan_type = ctx.obj['scan_type']
diff --git a/cycode/cli/apps/scan/scan_ci/scan_ci_command.py b/cycode/cli/apps/scan/scan_ci/scan_ci_command.py
index 4303cda2..7874a054 100644
--- a/cycode/cli/apps/scan/scan_ci/scan_ci_command.py
+++ b/cycode/cli/apps/scan/scan_ci/scan_ci_command.py
@@ -5,7 +5,6 @@
from cycode.cli.apps.scan.commit_range_scanner import scan_commit_range
from cycode.cli.apps.scan.scan_ci.ci_integrations import get_commit_range
-from cycode.cli.utils.sentry import add_breadcrumb
# This command is not finished yet. It is not used in the codebase.
@@ -16,5 +15,4 @@
)
@click.pass_context
def scan_ci_command(ctx: typer.Context) -> None:
- add_breadcrumb('ci')
scan_commit_range(ctx, repo_path=os.getcwd(), commit_range=get_commit_range())
diff --git a/cycode/cli/apps/scan/scan_command.py b/cycode/cli/apps/scan/scan_command.py
index 2eb51f12..9892f1b6 100644
--- a/cycode/cli/apps/scan/scan_command.py
+++ b/cycode/cli/apps/scan/scan_command.py
@@ -14,7 +14,6 @@
from cycode.cli.files_collector.file_excluder import excluder
from cycode.cli.utils import scan_utils
from cycode.cli.utils.get_api_client import get_scan_cycode_client
-from cycode.cli.utils.sentry import add_breadcrumb
_EXPORT_RICH_HELP_PANEL = 'Export options'
_SCA_RICH_HELP_PANEL = 'SCA options'
@@ -136,8 +135,6 @@ def scan_command(
* `cycode scan commit-history `: Scan the commit history of a local Git repository.
"""
- add_breadcrumb('scan')
-
if export_file and export_type is None:
raise typer.BadParameter(
'Export type must be specified when --export-file is provided.',
@@ -186,7 +183,6 @@ def _sca_scan_to_context(ctx: typer.Context, sca_scan_user_selected: list[str])
@click.pass_context
def scan_command_result_callback(ctx: click.Context, *_, **__) -> None:
- add_breadcrumb('scan_finalized')
ctx.obj['scan_finalized'] = True
progress_bar = ctx.obj.get('progress_bar')
diff --git a/cycode/cli/consts.py b/cycode/cli/consts.py
index 0acd887e..8f051edd 100644
--- a/cycode/cli/consts.py
+++ b/cycode/cli/consts.py
@@ -210,14 +210,6 @@
SCAN_BATCH_MAX_PARALLEL_SCANS = 5
SCAN_BATCH_SCANS_PER_CPU = 1
-# sentry
-SENTRY_DSN = 'https://5e26b304b30ced3a34394b6f81f1076d@o1026942.ingest.us.sentry.io/4507543840096256'
-SENTRY_DEBUG = False
-SENTRY_SAMPLE_RATE = 1.0
-SENTRY_SEND_DEFAULT_PII = False
-SENTRY_INCLUDE_LOCAL_VARIABLES = False
-SENTRY_MAX_REQUEST_BODY_SIZE = 'never'
-
# sync scans
SYNC_SCAN_TIMEOUT_IN_SECONDS_ENV_VAR_NAME = 'SYNC_SCAN_TIMEOUT_IN_SECONDS'
DEFAULT_SYNC_SCAN_TIMEOUT_IN_SECONDS = 180
diff --git a/cycode/cli/exceptions/handle_errors.py b/cycode/cli/exceptions/handle_errors.py
index 8d230902..ded1d88c 100644
--- a/cycode/cli/exceptions/handle_errors.py
+++ b/cycode/cli/exceptions/handle_errors.py
@@ -4,7 +4,6 @@
import typer
from cycode.cli.models import CliError, CliErrors
-from cycode.cli.utils.sentry import capture_exception
def handle_errors(
@@ -28,8 +27,6 @@ def handle_errors(
if isinstance(err, click.ClickException):
raise err
- capture_exception(err)
-
unknown_error = CliError(code='unknown_error', message=str(err))
if return_exception:
return unknown_error
diff --git a/cycode/cli/user_settings/credentials_manager.py b/cycode/cli/user_settings/credentials_manager.py
index 32564b0e..9522981b 100644
--- a/cycode/cli/user_settings/credentials_manager.py
+++ b/cycode/cli/user_settings/credentials_manager.py
@@ -9,7 +9,6 @@
)
from cycode.cli.user_settings.base_file_manager import BaseFileManager
from cycode.cli.user_settings.jwt_creator import JwtCreator
-from cycode.cli.utils.sentry import setup_scope_from_access_token
class CredentialsManager(BaseFileManager):
@@ -77,8 +76,6 @@ def get_access_token(self) -> tuple[Optional[str], Optional[float], Optional[Jwt
if hashed_creator:
creator = JwtCreator(hashed_creator)
- setup_scope_from_access_token(access_token)
-
return access_token, expires_in, creator
def update_access_token(
@@ -91,7 +88,5 @@ def update_access_token(
}
self.write_content_to_file(file_content_to_update)
- setup_scope_from_access_token(access_token)
-
def get_filename(self) -> str:
return os.path.join(self.HOME_PATH, self.CYCODE_HIDDEN_DIRECTORY, self.FILE_NAME)
diff --git a/cycode/cli/utils/sentry.py b/cycode/cli/utils/sentry.py
deleted file mode 100644
index 16b2a982..00000000
--- a/cycode/cli/utils/sentry.py
+++ /dev/null
@@ -1,112 +0,0 @@
-import logging
-from dataclasses import dataclass
-from typing import Optional
-
-import sentry_sdk
-from sentry_sdk.integrations.atexit import AtexitIntegration
-from sentry_sdk.integrations.dedupe import DedupeIntegration
-from sentry_sdk.integrations.excepthook import ExcepthookIntegration
-from sentry_sdk.integrations.logging import LoggingIntegration
-from sentry_sdk.scrubber import DEFAULT_DENYLIST, EventScrubber
-
-from cycode import __version__
-from cycode.cli import consts
-from cycode.cli.logger import logger
-from cycode.cli.utils.jwt_utils import get_user_and_tenant_ids_from_access_token
-from cycode.cyclient.config import on_premise_installation
-
-# when Sentry is blocked on the machine, we want to keep clean output without retries warnings
-logging.getLogger('urllib3.connectionpool').setLevel(logging.ERROR)
-logging.getLogger('sentry_sdk').setLevel(logging.ERROR)
-
-
-@dataclass
-class _SentrySession:
- user_id: Optional[str] = None
- tenant_id: Optional[str] = None
- correlation_id: Optional[str] = None
-
-
-_SENTRY_SESSION = _SentrySession()
-_DENY_LIST = [*DEFAULT_DENYLIST, 'access_token']
-
-
-def _get_sentry_release() -> str:
- return f'{consts.APP_NAME}@{__version__}'
-
-
-def _get_sentry_local_release() -> str:
- return f'{consts.APP_NAME}@0.0.0'
-
-
-_SENTRY_LOCAL_RELEASE = _get_sentry_local_release()
-_SENTRY_DISABLED = on_premise_installation
-
-
-def _before_sentry_event_send(event: dict, _: dict) -> Optional[dict]:
- if _SENTRY_DISABLED:
- # drop all events when Sentry is disabled
- return None
-
- if event.get('release') == _SENTRY_LOCAL_RELEASE:
- logger.debug('Dropping Sentry event due to local development setup')
- return None
-
- return event
-
-
-def init_sentry() -> None:
- sentry_sdk.init(
- dsn=consts.SENTRY_DSN,
- debug=consts.SENTRY_DEBUG,
- release=_get_sentry_release(),
- server_name='',
- before_send=_before_sentry_event_send,
- sample_rate=consts.SENTRY_SAMPLE_RATE,
- send_default_pii=consts.SENTRY_SEND_DEFAULT_PII,
- include_local_variables=consts.SENTRY_INCLUDE_LOCAL_VARIABLES,
- max_request_body_size=consts.SENTRY_MAX_REQUEST_BODY_SIZE,
- event_scrubber=EventScrubber(denylist=_DENY_LIST, recursive=True),
- default_integrations=False,
- integrations=[
- AtexitIntegration(lambda _, __: None), # disable output to stderr about pending events
- ExcepthookIntegration(),
- DedupeIntegration(),
- LoggingIntegration(),
- ],
- )
-
-
-def setup_scope_from_access_token(access_token: Optional[str]) -> None:
- if not access_token:
- return
-
- user_id, tenant_id = get_user_and_tenant_ids_from_access_token(access_token)
-
- _SENTRY_SESSION.user_id = user_id
- _SENTRY_SESSION.tenant_id = tenant_id
-
- _setup_scope(user_id, tenant_id, _SENTRY_SESSION.correlation_id)
-
-
-def add_correlation_id_to_scope(correlation_id: str) -> None:
- _setup_scope(_SENTRY_SESSION.user_id, _SENTRY_SESSION.tenant_id, correlation_id)
-
-
-def _setup_scope(user_id: str, tenant_id: str, correlation_id: Optional[str] = None) -> None:
- scope = sentry_sdk.Scope.get_current_scope()
- sentry_sdk.set_tag('tenant_id', tenant_id)
-
- user = {'id': user_id, 'tenant_id': tenant_id}
- if correlation_id:
- user['correlation_id'] = correlation_id
-
- scope.set_user(user)
-
-
-def capture_exception(exception: BaseException) -> None:
- sentry_sdk.capture_exception(exception)
-
-
-def add_breadcrumb(message: str, category: str = 'cli') -> None:
- sentry_sdk.add_breadcrumb(category=category, message=message, level='info')
diff --git a/cycode/cyclient/headers.py b/cycode/cyclient/headers.py
index 5d10f69b..937f4333 100644
--- a/cycode/cyclient/headers.py
+++ b/cycode/cyclient/headers.py
@@ -5,7 +5,6 @@
from cycode import __version__
from cycode.cli import consts
from cycode.cli.user_settings.configuration_manager import ConfigurationManager
-from cycode.cli.utils.sentry import add_correlation_id_to_scope
from cycode.cyclient.logger import logger
@@ -42,8 +41,6 @@ def get_correlation_id(self) -> str:
self._id = str(uuid4())
logger.debug('Correlation ID: %s', self._id)
- add_correlation_id_to_scope(self._id)
-
return self._id
diff --git a/poetry.lock b/poetry.lock
index 3f5f9388..a02636da 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -1,4 +1,4 @@
-# This file is automatically @generated by Poetry 2.2.1 and should not be changed by hand.
+# This file is automatically @generated by Poetry 2.1.4 and should not be changed by hand.
[[package]]
name = "altgraph"
@@ -1529,66 +1529,6 @@ files = [
{file = "ruff-0.11.7.tar.gz", hash = "sha256:655089ad3224070736dc32844fde783454f8558e71f501cb207485fe4eee23d4"},
]
-[[package]]
-name = "sentry-sdk"
-version = "2.42.1"
-description = "Python client for Sentry (https://sentry.io)"
-optional = false
-python-versions = ">=3.6"
-groups = ["main"]
-files = [
- {file = "sentry_sdk-2.42.1-py2.py3-none-any.whl", hash = "sha256:f8716b50c927d3beb41bc88439dc6bcd872237b596df5b14613e2ade104aee02"},
- {file = "sentry_sdk-2.42.1.tar.gz", hash = "sha256:8598cc6edcfe74cb8074ba6a7c15338cdee93d63d3eb9b9943b4b568354ad5b6"},
-]
-
-[package.dependencies]
-certifi = "*"
-urllib3 = ">=1.26.11"
-
-[package.extras]
-aiohttp = ["aiohttp (>=3.5)"]
-anthropic = ["anthropic (>=0.16)"]
-arq = ["arq (>=0.23)"]
-asyncpg = ["asyncpg (>=0.23)"]
-beam = ["apache-beam (>=2.12)"]
-bottle = ["bottle (>=0.12.13)"]
-celery = ["celery (>=3)"]
-celery-redbeat = ["celery-redbeat (>=2)"]
-chalice = ["chalice (>=1.16.0)"]
-clickhouse-driver = ["clickhouse-driver (>=0.2.0)"]
-django = ["django (>=1.8)"]
-falcon = ["falcon (>=1.4)"]
-fastapi = ["fastapi (>=0.79.0)"]
-flask = ["blinker (>=1.1)", "flask (>=0.11)", "markupsafe"]
-google-genai = ["google-genai (>=1.29.0)"]
-grpcio = ["grpcio (>=1.21.1)", "protobuf (>=3.8.0)"]
-http2 = ["httpcore[http2] (==1.*)"]
-httpx = ["httpx (>=0.16.0)"]
-huey = ["huey (>=2)"]
-huggingface-hub = ["huggingface_hub (>=0.22)"]
-langchain = ["langchain (>=0.0.210)"]
-langgraph = ["langgraph (>=0.6.6)"]
-launchdarkly = ["launchdarkly-server-sdk (>=9.8.0)"]
-litellm = ["litellm (>=1.77.5)"]
-litestar = ["litestar (>=2.0.0)"]
-loguru = ["loguru (>=0.5)"]
-openai = ["openai (>=1.0.0)", "tiktoken (>=0.3.0)"]
-openfeature = ["openfeature-sdk (>=0.7.1)"]
-opentelemetry = ["opentelemetry-distro (>=0.35b0)"]
-opentelemetry-experimental = ["opentelemetry-distro"]
-pure-eval = ["asttokens", "executing", "pure_eval"]
-pymongo = ["pymongo (>=3.1)"]
-pyspark = ["pyspark (>=2.4.4)"]
-quart = ["blinker (>=1.1)", "quart (>=0.16.1)"]
-rq = ["rq (>=0.6)"]
-sanic = ["sanic (>=0.8)"]
-sqlalchemy = ["sqlalchemy (>=1.2)"]
-starlette = ["starlette (>=0.19.1)"]
-starlite = ["starlite (>=1.48)"]
-statsig = ["statsig (>=0.55.3)"]
-tornado = ["tornado (>=6)"]
-unleash = ["UnleashClient (>=6.0.1)"]
-
[[package]]
name = "setuptools"
version = "80.9.0"
@@ -1903,4 +1843,4 @@ type = ["pytest-mypy"]
[metadata]
lock-version = "2.1"
python-versions = ">=3.9"
-content-hash = "f0854d96f0878d9765ad704e15f5c7b53f2387a81df64a2d04e9221959720662"
+content-hash = "318614ab911cb6132de25bea80686d7c9f046971678f4b12fd3e912a9949ce8e"
diff --git a/pyproject.toml b/pyproject.toml
index 65fa2d65..2bfddf44 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -42,7 +42,6 @@ arrow = ">=1.0.0,<1.4.0"
binaryornot = ">=0.4.4,<0.5.0"
requests = ">=2.32.4,<3.0"
urllib3 = "1.26.19" # lock v1 to avoid issues with openssl and old Python versions (<3.9.11) on macOS
-sentry-sdk = ">=2.8.0,<3.0"
pyjwt = ">=2.8.0,<3.0"
rich = ">=13.9.4, <14"
patch-ng = "1.18.1"