Skip to content

Commit 99b9dc4

Browse files
committed
validate run id
1 parent 9ed48ee commit 99b9dc4

File tree

2 files changed

+12
-7
lines changed

2 files changed

+12
-7
lines changed

src/sentry/seer/autofix/autofix_agent.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
from sentry.seer.explorer.client import SeerExplorerClient
3232
from sentry.seer.explorer.client_models import SeerRunState
3333
from sentry.seer.models import SeerRepoDefinition
34+
from sentry.seer.models.seer_api_models import SeerPermissionError
3435
from sentry.sentry_apps.metrics import SentryAppEventType
3536
from sentry.sentry_apps.tasks.sentry_apps import broadcast_webhooks_for_organization
3637
from sentry.sentry_apps.utils.webhooks import SeerActionType
@@ -451,12 +452,7 @@ def trigger_coding_agent_handoff(
451452
"failures": [{"error_message": "No repositories configured in project preferences"}],
452453
}
453454

454-
client = SeerExplorerClient(
455-
organization=group.organization,
456-
user=None,
457-
category_key="autofix",
458-
category_value=str(group.id),
459-
)
455+
client = get_autofix_explorer_client(group)
460456
state = client.get_run(run_id)
461457

462458
repo = _get_relevant_repo(state, repo_definitions, run_id, group)
@@ -500,4 +496,10 @@ def trigger_coding_agent_handoff(
500496

501497
def trigger_push_changes(group: Group, run_id: int):
502498
client = get_autofix_explorer_client(group)
499+
500+
state = client.get_run(run_id)
501+
group_id = state.metadata.get("group_id") if state.metadata else None
502+
if group_id != group.id:
503+
raise SeerPermissionError("Unknown run id for group")
504+
503505
client.push_changes(run_id, blocking=False)

src/sentry/seer/endpoints/group_ai_autofix.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -261,7 +261,10 @@ def _post_explorer(self, request: Request, group: Group) -> Response:
261261
if step == "open_pr":
262262
if not run_id:
263263
return Response({"detail": "run_id is required for open_pr"}, status=400)
264-
trigger_push_changes(group, run_id)
264+
try:
265+
trigger_push_changes(group, run_id)
266+
except SeerPermissionError as e:
267+
raise PermissionDenied(str(e))
265268
return Response({"run_id": run_id}, status=202)
266269

267270
# Handle all built-in Seer steps

0 commit comments

Comments
 (0)