# Privacy Policy

## In plain language

Default checks are ephemeral and do not create a public saved result. Short-lived caches and operational logs may process the source IP needed to run and protect the service. A result is stored only when you explicitly request a saved result; retention and deletion details are below.

ifport.io checks TCP port visibility only for the observed request-source path that contacted the service.

## Default scans

- `GET /`, `GET /json`, and related scan endpoints are ephemeral by default.
- Default scans do not create a public result permalink, SVG card, or persisted evidence pack.
- Default scan responses may be held in a short technical cache for roughly 30-60 seconds.
- Default scan events are not written to the public result store.
- Runtime drift and incident correlation use one-way, per-process salted source fingerprints; the salt is not persisted and entries expire after 24 hours.

## Operational logs

- Edge access logs can contain the observed source IP, HTTP method, privacy-safe route, response status, request ID, timing, and build ID for abuse prevention, security investigation, and service operation. Query strings and saved-result tokens are not written to those edge log messages.
- Application scan log messages omit raw source IP, saved-result tokens, query strings, Referer, and User-Agent. They keep bounded scan metadata and the request ID needed to correlate an application event with its edge record.
- When private alert delivery is enabled, an alert event may include the observed source IP, User-Agent, request ID, and bounded scan summary so an operator can investigate an exposure change.
- The current deployment keeps operational logs locally, rotating each container’s logs at 5 MB with at most two files. Retention depends on traffic volume. Centralized log export and private alerts are not enabled. Logs are not public result permalinks and are not exposed through the public API.

## Explicit saved results

- Use `POST /results` only when you want a saved result. HTTP `202 Accepted` confirms queue acceptance, not a completed durable write; retry the returned result URL until it is readable.
- The main explicit-save Rabbit queue retains accepted work for up to 24 hours; poison messages can remain in its dead-letter queue for up to 7 days.
- Saved results use a random `result_token`; the public URL is not the internal scan UUID.
- Saved result pages, SVG cards, and evidence packs send `X-Robots-Tag: noindex, noarchive`.
- Saved results expire after 30 days under `explicit_persist_30d`.
- Saved results can be deleted with `DELETE /result/{result_token}` and `Authorization: Bearer {delete_token}`; `X-IfPort-Delete-Token` is also accepted for clients that cannot set Authorization.
- For explicit saved results, the observed source IP is stored in clear text until expiry or deletion so the saved evidence can describe what was observed.
- Expiry and authenticated deletion remove the live public database row. They do not erase existing operator backups or migration snapshots, which are not public. Automated off-host backups are not currently enabled.
- If a backup taken before deletion is restored, there is no deletion tombstone to replay: the result can reappear until its original expiry or a repeated authenticated deletion.

## Contacts

For abuse reports or security issues, contact abuse@ifport.io or security@ifport.io.
General troubleshooting support is not provided for free public scans.
