Troubleshooting

Symptoms, their causes, and what to do about them.

Each entry is named after what you see. Where the cause is covered in more detail elsewhere, the entry links to that page.

Starting a run or a schedule

Nothing happens when I press Start pentest

Cause. The console does not display an error from Start pentest. When the ownership re-check refuses the launch, the engagement becomes blocked, but the page keeps showing pending and the button until you reload it.

What to do. Reload the page. If the status reads blocked, submit the same engagement again with POST /api/engagements/{id}/submit; the console has no button for a blocked engagement. While the launch is still refused, the 409 response names each identifier and the reason. Publish the missing record or renew the attestation, then submit again. See Ownership verification and Lifecycle.

Create engagement does nothing

Cause. The request to create the engagement failed. The wizard does not show the error: it stays on the Review step and the button becomes available again.

What to do. Reload the console. If it takes you to the sign-in page, your session has expired; sign in and fill in the wizard again (Organizations). If the create fails again while you are signed in, contact Pentr support.

[object Object] in the schedule wizard

Cause. The server rejected the cadence or the schedule, and the wizard cannot display the text of that rejection. It appears in the Next 3 runs panel on the Cadence step, or on the Review step after Create schedule.

What to do. Check the expression against the one-hour floor, and check that the timezone is an IANA zone name (Timezones and DST). Sending the same cadence to POST /api/schedules/preview returns the server's message.

A schedule's row shows last occurrence skipped: …

Cause. The most recent occurrence did not launch. The text after the colon is one of four reasons:

Reason Cause What to do
creator user no longer exists The user who created the schedule no longer exists Contact Pentr support
plan cap: … The organization already had as many engagements queued or running as the tier allows Nothing; the cap is checked again at the next occurrence
launch refused, ownership not proven for … The ownership re-check refused an identifier, and a blocked engagement was left behind Publish the missing proof before the next occurrence
error: … Something else failed while the occurrence fired Contact Pentr support

A skipped occurrence is not retried. See Caps and skips and Plans and limits.

While a run is in flight

An engagement stays at queued

Cause. The scheduler runs one engagement at a time, in the order they were queued, and no timer limits how long a run takes. A queued engagement waits for every run ahead of it. Until its container starts, the live output reads waiting for events…. See Running an engagement.

What to do. Wait. A queued engagement cannot be cancelled. If it stays at queued for much longer than you expect, contact Pentr support.

The page reads completed, but no findings appear and Generate report does nothing

When the run ends, the engagement's page changes to completed, but the Findings list stays empty and pressing Generate report brings the button back without a report. The Engagements page lists the same engagement as running. Reloading the engagement's page within 24 hours of the run's end shows the same thing again. After that, it reads running, and the live output reads waiting for events….

Cause. The run's result was not saved when the run ended, so the engagement's stored status is still running and it has no findings (Lifecycle). The engagement's page shows completed because it replays the run's progress trace, which ends with the completion line and is kept for 24 hours. A report is generated only for an engagement stored as completed. While the engagement reads running it counts towards the plan cap, so scheduled occurrences can be skipped for the cap.

What to do. Contact Pentr support. Nothing in the console or the API moves the engagement to another status.

Lines in the live output appear twice

Cause. The connection to the progress stream dropped and reconnected. A reconnection replays the trace from its first event, and the console adds the replayed events after the ones it already shows.

What to do. Reload the page. The trace is then replayed once. See Running an engagement.

The live output stops updating during a long run

The output stops without a final line marked ✓ or ✕. If the page instead reads completed and no findings appear, see The page reads completed, but no findings appear and Generate report does nothing above.

Cause. A run's progress trace holds its most recent 5,000 events. Once a run has produced that many, the page receives no new events. The run itself continues. See Running an engagement.

What to do. Reload the page to see the engagement's current status. The findings and the report appear once the engagement is stored as completed. If the status does not change for much longer than you expect, contact Pentr support.

The live output disappears when the run ends

Cause. The console shows the live output only while the engagement is queued or running.

What to do. Read the trace from GET /api/engagements/{id}/progress. It is kept for 24 hours. See When a run fails.

After a run

A run completes with no findings and five error lines in its trace

Cause. Five consecutive failing steps end a run, which is then recorded as completed. The error lines name what failed. When they name an overlap between the in-scope and out-of-scope lists, the run stopped in its first phase because of that overlap. See When a run fails.

What to do. If the lines name a scope overlap, remove it and create a new engagement; a completed engagement cannot be submitted again. See Scope. If they name anything else, contact Pentr support.

The Report panel has no report

Cause. A report exists only for a completed engagement. On any other status the panel reads Available once the engagement completes., and a request to generate one is refused with a 400. A failed engagement never gets a report. On a completed engagement, a Generate report button means the first attempt to generate it failed.

What to do. On a completed engagement, press Generate report. If the button comes back without a report and the Engagements page lists the engagement as running, see The page reads completed, but no findings appear and Generate report does nothing above. On a failed engagement, create a new engagement. See Findings & reports and When a run fails.

Cause. A share link can be created only for a sealed run, and this run was not sealed. The message was sealed before signing was introduced means the run's seal has no signature, which has the same effect.

What to do. An unsealed run stays unsealed: there is no re-seal. Its report and its SARIF and CSV exports still work. For evidence you can share, run the test again as a new engagement. If every completed run is unsealed, contact Pentr support. See Sealing.

Cause and what to do. The share page names the problem:

The recipient sees Cause What to do
"This link is incomplete — the part after the # character is missing. Ask the sender to resend the whole URL." The part of the URL after # did not arrive Send the full URL again, in a form that keeps everything after # intact
"This share link was not found. Check that the whole link was copied, including everything after the # character." (404) No link carries the token, usually because the URL was truncated Send the full URL again, including the part after #
"This share link has expired or been revoked. Ask whoever sent it for a new one." (410) The link is past its expiry or was revoked Create a new link
"Too many requests from this address. Try again in a minute." (429) A rate limit; the response carries a Retry-After header Wait and retry
"The evidence store is not reachable right now. Try again later." (any status other than 404, 410 or 429) The server returned an error status it has no specific message for, for example its own 500 when it cannot read the run's evidence Contact Pentr support
"Could not load this evidence locker." Loading the share page failed outright: a network failure, or a successful (2xx) response whose body was not valid JSON Check the connection and reload; if it persists, contact Pentr support
"Download failed." Downloading the locker failed outright: a network failure, or a failed read of the response body Retry the download; if it persists, contact Pentr support

See Share links.

Locker export returns 409 or 500

Cause. A 409 means the run is not sealed, or was sealed without a signature, so there is nothing to export. A 500 means the server cannot read the run's evidence or the signing key the seal names. See Exporting a locker.

What to do. For a 409, see the share-link entry above: the same run cannot be sealed later. For a 500, contact Pentr support.

pentr-verify exits with 1 or 2

Cause. Exit 1 means the file is a locker and it did not verify; the output names what failed. Exit 2 means the tool could not begin: the path does not exist, the file is not a locker it can read, or the key passed to --key could not be read.

What to do. For exit 2, check the path and the key file first. For exit 1, read the failure codes. See Verifying a locker.

Signing in

The password-reset email does not arrive

What to do. Contact Pentr support.

Last updated 2026-09-24