OpenHands / OpenHands/enterprise

Normalize log severity for expected integration webhook skips

Open
#35 7 comments 0 reactions 1 assignee View on GitHub

@NiveditaAryaK is already working on this.

Since Jun 29, 2026.

Dominant language
Python
Stars
4
Forks
2
Avg merge
1d 22h
Merged PRs (30d)
101

Description

Context

The application-failure monitor previously needed exclusions for integration webhook routing/validation messages:

  • "not claimed and no personal org found"
  • "No repository owner in github payload"
  • "[Jira] No workspace name found in webhook payload"

These are currently logged on normal skip/reject paths and can be confused with application failures by status-based monitors.

Investigation notes

Current sources in OpenHands/OpenHands:

  • enterprise/server/services/automation_event_service.py
    • No repository owner in <provider> payload, skipping is logged with logger.warning(...) when the webhook payload cannot be mapped to a repository owner.
    • <provider> org <org> not claimed and no personal org found, skipping is logged with logger.warning(...) when an otherwise parsed event is intentionally dropped because the repo/org is not claimed and no personal-org fallback exists.
  • enterprise/server/routes/integration/jira.py
    • [Jira] No workspace name found in webhook payload is logged with logger.warning(...) before returning HTTP 403.

The not claimed...skipping case in particular appears to be an expected routing miss, not an application failure. The missing-owner and missing-Jira-workspace cases may still deserve warning-level visibility, but they should be structured as client/input validation outcomes rather than application errors.

Proposed fix

Audit these expected integration skip/reject paths and make their severity/status intentional:

  1. Downgrade expected skip paths to INFO, especially not claimed and no personal org found, where the app is behaving as designed.
  2. For malformed/unauthorized payload paths that should remain WARNING, ensure JSON fields make them easy to exclude from app-failure monitors without string matching, e.g. event_outcome=skipped|rejected, error_type=client_payload, provider=github|jira, and http.status_code=4xx.
  3. Avoid logging full webhook payloads at warning/error severity unless needed and safely redacted.
  4. Add tests/assertions for the intended log level on each path.

Acceptance criteria

  • Expected unclaimed-org webhook skips are logged as INFO, not warning/error-status failures.
  • Client/input validation rejects are distinguishable from server/application failures via structured fields.
  • The monitor no longer needs broad string exclusions for these expected paths.

This issue was created by an AI agent (OpenHands) on behalf of the user.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.