Use Case

Pentest report version control
never ship the wrong PDF again

Every pentest report has versions: the internal draft, the reviewed draft, the client-issued report, the retest delta, the attestation companion, and any reissue triggered by scope expansion or a contested finding. Run version control on the engagement record so the right version reaches the right reader, the change history survives the engagement, and audit, retest, and attestation reads of the report all line up against the same source of truth.

No credit card required. Free plan available forever.

Run pentest report version control on the engagement record

Every pentest report has versions, whether the firm tracks them or not. The internal draft the lead reads first, the reviewer pass the senior tester comments on, the client-issued v1.0, the v1.1 reissue for a typo or a clarification, the v2.0 retest delta after a fix cycle, the v2.1 attestation companion when compliance asks for one. Treated as a folder of PDFs, the version line gets confused at the worst possible moment: the wrong file goes to the client, two reviewers comment on different versions, the change between v1.0 and v1.1 is verbal, the retest delta lives as a separate report that contradicts the original. Run versioning on the engagement record instead, and every reader reads the same source of truth.

SecPortal generates each report from live findings on the engagement, lands every generation as a numbered version with a timestamp and a named author, attaches reviewer comments and engagement lead sign-off to the specific version they apply to, and publishes the live version through the branded client portal with prior versions in a labelled history. The PDF cover and footer carry the version number so a forwarded copy is identifiable; retest deltas land as new versions of the same report rather than as separate documents. The version history is the audit record.

Six version types every engagement produces

Versions are not arbitrary numbers; they reflect the lifecycle of the deliverable from first draft to closure. Naming the version types up front means the firm and the client share a vocabulary for which version is which, and the change log between versions reads cleanly to a reviewer or auditor who picks up the engagement file later.

Internal draft (v0.x)

The first generation of the report from the live engagement record, before any reviewer or client has read it. Internal drafts iterate quickly as the test runs and findings land. The version exists so the engagement lead can see the report taking shape against the live findings rather than waiting until the test closes to discover that key evidence is missing or that the executive summary cannot reconstruct the test arc.

Reviewed draft (v0.x reviewer pass)

The draft after a peer reviewer has walked the findings, severity calls, and remediation guidance, with comments captured against the version. The reviewed draft is the gate to the client-issued version: nothing leaves the firm until a named reviewer has signed off on a specific reviewed-draft version with the comments either resolved or explicitly accepted.

Client-issued (v1.0)

The first version the client sees through the branded portal, with the engagement lead sign-off recorded against it. v1.0 is the version that anchors all subsequent revisions; if you need to defend what was issued to the client three months later, v1.0 is the artefact you point at.

Reissue (v1.1, v1.2)

A point-release reissue of the client-issued report for a typo, a clarification, an additional reviewer correction, or a small evidence update that does not change findings or severity. The reissue lands as a new version with a short change log and a fresh PDF cover so a forwarded copy is identifiable; the prior version remains accessible in version history rather than being silently overwritten.

Retest delta (v2.0)

A new major version of the same report after a retest cycle closes findings. v2.0 carries the closed-on-retest status, regressions logged during retest, findings carried forward unchanged, and any new findings opened during retest. The retest delta is a version of the same report rather than a separate document so the version history of the engagement reads as one continuous record.

Attestation companion (v2.1)

A version that pairs an attestation letter with the underlying report, where compliance, customer procurement, or insurance asks for one. The attestation companion derives from the same versioned source as the report so the counts, the scope wording, and the retest verification on the letter cannot drift from the report it is attesting to.

Where pentest report version control usually breaks down

Six failure modes recur whenever versioning is treated as a file-naming convention rather than as a record-level attribute. Each one is invisible at the time and visible at the next client escalation, audit, or attestation review.

The wrong PDF reaches the client

The engagement lead emails the client a final report; the attached PDF is actually v0.3 instead of v1.0 because the file name was reused and the latest export landed in the same folder. The client either accepts the report without noticing or escalates because severity language reads differently than the debrief promised. Either outcome damages confidence and forces a re-issue that should never have been needed.

Two reviewers comment on different versions

The senior reviewer comments on v0.2; the engagement lead opens v0.3 in parallel and adds comments there. The tester reconciles the two comment sets manually, drops one, and ships a v1.0 that resolves only half the review. The lost comment surfaces months later when the client raises the issue the missing reviewer caught.

The change log is verbal

A v1.1 reissue ships with no recorded change log. Three weeks later the client asks why a finding severity moved between v1.0 and v1.1; the only person who knows the answer is the tester who made the change, and the rationale lives in their head rather than against the version. The fix retroactively reconstructs the rationale, which always reads weaker than a contemporaneous note.

Retest deltas live as separate documents

The retest closes findings; instead of generating a v2.0 of the original report, the team writes a separate retest report. The client now holds two PDFs that disagree on counts and status. The attestation letter, where one is required, picks one of the two as the source and contradicts the other. The reissue cycle that follows is more expensive than running version control would have been.

The client portal shows a stale version

A reissue lands as a new file in the client portal alongside the old one without removing or marking the older version. The client downloads the older file (it is the first one in the list) and acts on outdated severity language. The fix is for the portal to surface a single live version with prior versions in a clearly labelled history rather than as parallel attachments.

The audit trail breaks at sign-off

The engagement file shows a final report and an issue date, with no record of which named reviewer signed off on which version. An auditor reading the file later cannot tell whether the report passed peer review before issue or whether sign-off was reconstructed retrospectively. The fix is recording reviewer comments and engagement lead approval against the specific version they apply to so the trail is provable rather than implied.

Six artefacts that have to land on every version

Versioning is six concrete artefacts on the engagement record, not an abstract change history. Anything missing from the list below is a known gap in the audit trail rather than something a reviewer will spot in time.

Version number and timestamp

Every generation lands as a numbered version (v0.1 internal draft, v0.2 reviewer pass, v1.0 client-issued, v1.1 reissue, v2.0 retest delta) with a server-side timestamp and the named author. Numbers and timestamps live on the engagement record, not in the PDF file name.

Change log between versions

A short note attached to each version explaining what moved since the previous one (added findings, severity recalibration, new evidence, scope expansion, contested-finding rewrite, retest delta, typo). The change log lets reviewers and auditors read the version history without diffing two PDFs by hand.

Reviewer comments per version

Comments from peer reviewers attach to the specific version they apply to, with status (open, resolved, accepted with rationale). Resolution lands on the next version so the audit trail records what changed in response to which review pass.

Approver sign-off record

Engagement lead sign-off is recorded against the specific version that ships, with date and rationale. The question "who signed off the version we sent the client?" has one provable answer rather than a reconstructed one.

PDF cover and footer version stamp

Every PDF export carries the version number on the cover page and footer so a forwarded copy is identifiable outside the portal. A stakeholder reading a forwarded PDF can tell at a glance whether they are looking at v1.0 or v1.1 without comparing file metadata.

Version history visible in the client portal

The client portal shows a single live version with prior versions accessible in a labelled history, not as parallel attachments. The client cannot accidentally download an older version because the live version is the default; the history is one click away for anyone who needs to compare.

Pentest report version control checklist

Before any version reaches the client and after every retest or reissue, both the tester and the engagement lead walk through a short checklist. Each item takes minutes; missing any one of them is the source of the failure modes above and the audit gaps that follow.

  • Every report generation lands as a numbered version against the engagement, not as an overwritten file.
  • Each version carries a timestamp, named author, and short change log explaining what moved since the previous version.
  • Reviewer comments and resolutions attach to the specific version they apply to rather than to the report as a generic artefact.
  • Engagement lead sign-off is recorded against the specific version that ships, with date and rationale.
  • PDF exports carry the version number on the cover and footer so a forwarded copy is identifiable.
  • The client portal surfaces a single live version with prior versions in a labelled history rather than as parallel attachments.
  • Retest deltas land as new versions of the same report rather than as separate documents.
  • Attestation companions derive from the same versioned source as the report so counts and status cannot drift.
  • Reissues for typos, clarifications, or evidence updates are tagged as point releases (v1.1, v1.2) with the rationale captured.
  • The version history freezes at engagement closure with a final version marked and prior versions in read-only state.
  • No working drafts live outside the engagement record (no "report-final-FINAL-v3-actually-final.pdf" in shared folders).
  • Change logs reference the engagement findings they reflect so the version reads as a snapshot of the live record rather than as an opaque update.

How version control looks in SecPortal

Versioning is one workflow stitched into four feature surfaces: AI report generation, the engagement record, findings management, and the branded client portal. The work that has to happen at each version is the same work the platform already supports for everyday engagement operations; versioning just makes the lineage explicit.

AI generates each version from the live record

AI report generation takes the current state of findings on the engagement and produces the report. Each generation is a snapshot of the engagement at that moment, with version, timestamp, and named author recorded against the engagement.

Engagement record holds the version line

The engagement record stores every version with its change log, reviewer comments, and approver sign-off. The version line lives next to the findings, scope, and status that produced it rather than in a separate folder of files.

Reviewer comments scope to the version

Peer reviewer comments attach to the version they apply to with status (open, resolved, accepted with rationale). Resolutions land on the next version so the audit trail captures what moved in response to which review pass. Two reviewers commenting on different versions becomes visible immediately.

Sign-off is version-scoped

Engagement lead approval lands against the specific version that ships, with date and rationale. The question who signed off the version we sent the client has one provable answer rather than a reconstructed one. Role-based access in team management controls who can issue.

PDF cover and footer carry the version

Every PDF export stamps the version number on the cover and footer so a forwarded copy is identifiable outside the portal. A stakeholder reading a forwarded PDF can tell at a glance whether they are looking at v1.0 or v1.1 without comparing file metadata or asking the firm to confirm.

Client portal shows one live version

The branded client portal surfaces a single live version with prior versions in a labelled history. The client cannot accidentally download an older version because the live version is the default; the history is one click away for anyone who needs to compare.

What auditors expect from a versioned report trail

Pentest reports show up in audit evidence whenever the engagement is read by a third party. The frameworks below all expect a recorded history of what was issued, what changed between versions, and who approved each version, rather than a generic final PDF with no defensible trail.

FrameworkWhat the audit expects
CRESTCREST-accredited firms must demonstrate evidence retention, peer review, and a documented quality assurance pass before any report is issued. Versioned reviewer comments and named approver sign-off against the specific version that ships are the artefacts CREST audits expect to see; an unversioned report with no recorded review trail reads as a process control gap.
ISO 27001:2022Annex A 5.33 (protection of records) and 8.32 (change management) expect records to be protected from unauthorised modification and changes to be logged and approved. Report version control with named author, timestamp, change log, and approver record satisfies both clauses for the report as a delivered record of the engagement.
SOC 2Common Criteria CC8 (change management) expects changes to records and deliverables to be tracked with approval. Reissue versions with a recorded change log and named approver fit inside CC8 cleanly; unversioned reissues with verbal change rationales do not.
PCI DSSRequirement 11.4 expects pentest documentation including methodology, scope, results, and remediation verification to be retained. Versioned reports with retest deltas captured as later versions of the same report satisfy the retention expectation in a way that loose PDF folders do not, because the version history is the audit record.

Where report version control sits across the engagement lifecycle

Version control composes with the rest of the engagement on the same record so the lineage of the report stays connected to the work that produced it.

Upstream and downstream

Version control depends on pentest quality assurance running the review pass that produces the reviewer comments scoped to a version. It feeds pentest report delivery because the version that ships is the one published in the portal, and retesting because retest deltas land as new versions rather than as separate documents.

Adjacent workflows

Finding dispute resolution relies on versioned reports to show what was issued at the time of the dispute. Pentest evidence management keeps the screenshots and request captures attached to the findings each version references, so a v2.0 retest delta cannot lose the evidence base of v1.0.

Pair the workflow with the long-form guides

Version control is operational; the surrounding guides explain why each version matters and how the version line shows up in attestation and retest reads. Pair this workflow with the how to write a pentest report guide for the report craft, the pentest attestation letter guide for how the attestation companion derives from the versioned report, how to retest vulnerabilities for the retest cycle that lands as a new major version, the aging pentest findings research for what an unversioned report costs over time when stakeholders cannot reconstruct what was issued and when, and the pentest report shelf life research for the validity rules that determine when a versioned report needs reissue rather than a fresh major-version test.

Buyer and operator pairing

Versioned reports are the deliverable artefact pentest firms and security consultants ship every week. The framework references that mandate the versioned trail include CREST for accredited firms, ISO 27001 for protection of records and change management, SOC 2 for change management on deliverables, and PCI DSS for pentest documentation retention with retest verification.

What good pentest report version control feels like

No wrong-PDF incidents

The client portal shows one live version; the PDF cover and footer carry the version number; the engagement record stores the lineage. The path where a draft accidentally becomes the issued version simply does not exist because issue is a deliberate sign-off action against a specific version.

Audit-ready trail

CREST, ISO 27001, SOC 2, PCI DSS, and client procurement reads can point at a specific version, see who approved it, what changed since the prior version, and which findings each version reflects. The deliverable trail is provable rather than implied.

Retest deltas read as continuity

v2.0 is a continuation of v1.0 on the same engagement. The client reads one report with a retest history rather than two PDFs that disagree on counts. The attestation companion, where one is required, derives from the same versioned source.

Reissues are recorded, not silent

Typo fixes, clarifications, and evidence updates land as v1.1 with a recorded rationale. Forwarded PDFs are identifiable; prior versions remain accessible in the history. No silent overwrites of issued reports.

Pentest report version control is the workflow that decides whether the report a client reads in three months matches what the firm actually issued. Run it on the engagement record, and every reader of the report (the tester, the engagement lead, the client, the auditor, the attestation reviewer) can point at a specific version and know exactly what it contained, when it was issued, and who approved it.

Frequently asked questions about pentest report version control

What is pentest report version control?

Pentest report version control is the workflow that tags every generation of a pentest report as a numbered version against the engagement record, captures a change log between versions, attaches reviewer comments and approver sign-off to the specific version they apply to, and publishes a single live version through the client portal with prior versions in a labelled history. The goal is for every reader (the tester, the engagement lead, the client, the auditor, the attestation reviewer) to be able to point at a specific version and know exactly what it contained, when it was issued, and who approved it.

How is report version control different from report delivery?

Report delivery is how a finished report reaches the client. Report version control is how the firm tracks which version of the report is the finished one, which versions came before it, and which versions came after as reissues or retest deltas. The two workflows compose: version control says "this is v1.0, signed off by the lead on this date"; delivery says "v1.0 is published in the branded client portal and exported as a PDF for the named stakeholders." Without version control, delivery has no provable answer to "which version did we actually send."

Why does the wrong PDF reach the client so often?

Three reasons usually combine: file names are reused (report-final.pdf overwrites report-final.pdf), versions live in shared folders rather than against the engagement, and PDF cover pages do not carry the version number so a stakeholder cannot tell at a glance which version they have. Version control on the engagement record removes all three causes at once: the version is a record-level attribute, not a file-name convention; the client portal shows the live version as the default; and the PDF cover and footer stamp the version so a forwarded copy is identifiable.

How should a retest report be versioned?

A retest delta is a new version of the same report (v2.0 after a v1.0 issue, v2.1 after a typo reissue), not a separate document. The new version carries the closed-on-retest status, any regressions logged during retest, findings carried forward unchanged, and any new findings opened. The change log captures what moved between v1.0 and v2.0. This way the engagement reads as one continuous record across multiple retest cycles rather than as a folder of separate retest reports that can disagree on counts and status.

How do you stop reviewer comments getting lost between versions?

Comments attach to the specific version they apply to rather than to the report generically, with a status (open, resolved, accepted with rationale). Resolutions land on the next version so the audit trail captures what moved in response to which review pass. Two reviewers commenting on different versions in parallel becomes visible immediately because the version history shows comments scattered across versions rather than concentrated on the one under review. The fix is procedural (review one version at a time) and structural (comments are version-scoped).

Should a typo reissue be a new version?

Yes. A typo reissue lands as a point release (v1.1) with a short change log noting the typo correction. The PDF cover and footer carry v1.1 so a stakeholder reading a forwarded copy knows whether they have the original or the corrected version. The previous version (v1.0) remains accessible in the version history rather than being silently overwritten, so the audit trail shows both that the typo existed and that it was corrected.

How does an attestation letter relate to report versions?

An attestation companion is a version of the same engagement record that pairs the attestation letter with the report it attests to. Because both derive from the same versioned source, the counts and the scope wording on the letter cannot drift from the report, and the version history shows when the attestation was issued relative to the report and any retest delta. Attestation reviewers can read the letter and verify it against the exact report version it references rather than against a generic "the latest report."

What about regulated industries that require defensible report history?

PCI DSS, CREST, ISO 27001, and SOC 2 all expect a recorded history of the report deliverable, the changes between versions, and the named approver who signed off each version that was issued. A pentest report shipped without a versioned history puts the firm in a weak position when an auditor or a client legal team asks for the deliverable trail. Versioned reports with reviewer comments, change logs, and approver sign-off recorded against each version is the artefact that satisfies the expectation directly.

How do you stop working drafts ending up as the final issued version?

Drafts are versions inside the engagement record rather than files in a shared folder. The client-issued status moves explicitly from draft to issued at the sign-off gate; the gate requires named approval against a specific version. There is no path where a working draft accidentally becomes the issued version because the issue action is a deliberate transition recorded against the version, not a file copy from one folder to another.

How does SecPortal support pentest report version control?

SecPortal generates each report from the live findings on the engagement, lands every generation as a numbered version against the record with timestamp and named author, attaches reviewer comments and engagement lead sign-off to the specific version they apply to, and publishes the live version through the branded client portal with prior versions in a labelled history. PDF exports carry the version number on the cover and footer. Retest deltas land as new versions of the same report rather than as separate documents, and attestation companions derive from the same versioned source. SecPortal does not write the report content for the firm; it makes versioned, audit-ready report management the path of least resistance.

How it works in SecPortal

A streamlined workflow from start to finish.

1

Issue every report from the live engagement record

AI generates the report from findings on the engagement rather than from a separate Word document the team rewrites by hand. Every version is a snapshot of the engagement state at the moment of generation, with a recorded version number, a timestamp, and the named author. The engagement record is the source of truth; the PDF is a derivative artefact, not the primary record.

2

Tag the version and capture the change log

Each new generation lands as a numbered version against the engagement (v0.1 internal draft, v0.2 reviewer pass, v1.0 client-issued, v1.1 typo fix, v2.0 retest delta, v2.1 attestation companion). The version carries a short change log explaining what moved between this version and the previous one (added findings, severity recalibration, new evidence, scope expansion, contested-finding rewrite). Reviewers and auditors read the change log without diffing two PDFs by hand.

3

Route reviewer and approver sign-off against the version

Internal reviewer comments and engagement lead sign-off attach to the specific version they apply to, not to the report as a generic artefact. A reviewer pass on v0.2 captures comments against v0.2; resolution lands on v0.3; sign-off on v1.0 is the gate to issue. The audit trail records who approved which version with what rationale, so the question "who signed off the version we sent the client?" has one provable answer.

4

Publish a single live version through the branded client portal

The client always sees the latest issued version inside the branded client portal, with prior versions available as a history rather than an attachment graveyard. PDF export is available for stakeholders who still need a static artefact, but each PDF carries the version number on the cover and footer so a forwarded copy is identifiable. No more arguing about whether the screenshot the client is reading is from v1.0 or v1.1.

5

Track retest deltas as new versions, not new reports

When retests close findings, the retest delta becomes a new version of the same report (v2.0) rather than a separate document with its own version line. The change log captures which findings moved to remediated, which regressed, and which carried forward unchanged. The attestation companion, where one is required, derives from the same versioned source so the letter and the report can never disagree on counts or status.

6

Close the version history when the engagement closes

At engagement closure the version history is frozen: a final version is marked, prior versions remain accessible in read-only state, and the change log captures the closure rationale (issued, retest closed, attestation issued, contract complete). Future audit, contract renewal, or compliance read-throughs can reconstruct the engagement from the versioned record without asking the original tester to remember which PDF the client actually received.

Run report version control on the engagement, not in a folder of PDFs

Tag versions, track change logs, route sign-off, and publish one live report through the branded client portal. Start free.

No credit card required. Free plan available forever.