Skip to content

feat(reporting): link HTTP exchange evidence - #1281

Merged
0xallam merged 11 commits into
mainfrom
feat/finding-http-evidence
Sep 9, 2026
Merged

feat(reporting): link HTTP exchange evidence#1281
0xallam merged 11 commits into
mainfrom
feat/finding-http-evidence

Conversation

@bearsyankees

@bearsyankees bearsyankees commented Sep 7, 2026

Copy link
Copy Markdown
Collaborator

Add optional http_exchange_ids to vulnerability creation and updates so findings retain references to the exact proxy requests and responses that support them. IDs are normalized and deduplicated before the ten-reference limit, then checked against the active Caido project. Failed downstream persistence leaves the original in-memory report unchanged so revisions can be retried.

Validation: 211 focused engine tests passed. Real local LLM scan and chat flows verified linked baseline, exploit, and control exchanges through the dashboard and API, including persistence after sandbox removal. The full engine suite had 1,743 passes and five failures also reproduced on the original PR head.


Devin Review

@greptile-apps

greptile-apps Bot commented Sep 7, 2026

Copy link
Copy Markdown
Contributor

RetriggerView in GreptileConfidence Score: 5/5

The PR appears safe to merge; the previous same-second TUI synchronization issue is fully addressed and no new actionable failures remain.

Summary

  • Normalizes, deduplicates, limits, and verifies exchange IDs against the active proxy project.
  • Supports replacing or clearing linked exchanges through finding revisions.
  • Preserves the prior in-memory report when downstream creation or update persistence fails.
  • Uses revision-history length to ensure rapid same-second report updates refresh the Go TUI.
  • Adds focused coverage for validation, proxy outages, persistence failures, retries, and TUI synchronization.

greptile-apps[bot]

This comment was marked as resolved.

…e proxy outages

- existing_request_ids: use functools.partial so mypy can type the lookup
- _do_create/_do_update/_do_create_dependency: catch any exception raised
  while committing a report and return a structured success:false result
  instead of leaking a generic tool error
- _verify_http_exchange_ids: unknown IDs are still rejected, but a proxy
  lookup failure now keeps the IDs and attaches a warning to the result
  rather than blocking the finding
@devin-ai-integration

Copy link
Copy Markdown
Contributor

@greptile

greptile-apps[bot]

This comment was marked as resolved.

…them

When the proxy lookup itself fails, the finding is still filed but the
http_exchange_ids are omitted and the result carries a warning telling
the agent to attach them with update_vulnerability_report once the proxy
responds. Unverified IDs are never recorded as evidence.
@devin-ai-integration

Copy link
Copy Markdown
Contributor

@greptile

greptile-apps[bot]

This comment was marked as resolved.

…revisions

An update that only carries http_exchange_ids used to fail with
'No fields to update' when the proxy could not be reached, hiding the
retry guidance. It now returns the outage warning as the error.
@devin-ai-integration

Copy link
Copy Markdown
Contributor

@greptile

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Devin Review found 2 potential issues.

Devin Review

Comment thread strix/report/state.py
Comment thread strix/report/state.py
The update callback now fires before the in-memory report is replaced, so
a snapshot taken on that notification can still show the old content. The
periodic sync fingerprint tracks each report's updated_at as well as its
id, so the next tick picks the revision up.
@devin-ai-integration

Copy link
Copy Markdown
Contributor

@greptile

Comment thread strix/interface/tui/runtime.py Outdated
@devin-ai-integration

Copy link
Copy Markdown
Contributor

@greptile

@0xallam
0xallam merged commit 22959a7 into main Sep 9, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants