OpenHands / OpenHands/enterprise
Normalize log severity for expected integration webhook skips
@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.pyNo repository owner in <provider> payload, skippingis logged withlogger.warning(...)when the webhook payload cannot be mapped to a repository owner.<provider> org <org> not claimed and no personal org found, skippingis logged withlogger.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 payloadis logged withlogger.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:
- Downgrade expected skip paths to INFO, especially
not claimed and no personal org found, where the app is behaving as designed. - 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, andhttp.status_code=4xx. - Avoid logging full webhook payloads at warning/error severity unless needed and safely redacted.
- 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
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.