figma guide

Designing forensic evidence management and chain of custody UI in Figma: artifacts, custody, and legal hold

Design forensic evidence and chain of custody UI in Figma with artifact intake, hash verification, custody transfers, legal hold flags, and Dev Mode specs for enterprise IR.

Published
Updated
Jul 25, 2026
Read time
8 min
Level
Intermediate

Quick answer

Forensic evidence UI proves what was collected, who touched it, and that it was not altered—critical for IR, legal, and compliance. Design an evidence locker with artifact types, hash verification, and access controls; a chain of custody log for every transfer and view; legal hold flags that block deletion; and export packs aligned with compliance exports and investigation cases. Start from the Figma guides hub and pair with audit log, data retention, war room, and Dev Mode handoff.


Who this is for

  • Product designers building incident response evidence stores, digital forensics workflows, and legal-hold surfaces for enterprise Security and GRC consoles.
  • Design system teams aligning custody timeline, hash badges, and hold ribbons with badges, tables, and modals.
  • Engineering teams implementing WORM storage, hash chains, RBAC on artifact download, and export manifests for regulators.

Evidence locker (case artifacts hub)

EvidenceLocker — Case INV-2026-0412
├── Header: 14 artifacts · Legal hold: Active · Retention: exempt until hold released
├── Actions: [ Add artifact ] [ Bulk verify hashes ] [ Export pack ] [ Request legal review ]
├── Filters: Type · Source · Custodian · Hold status · Redaction level
└── Row: disk-image-acme-laptop-0412.e01 · Hash SHA-256 verified · Custodian: Ana Liu · Added 2026-07-24 4:12 PM
ColumnContent
Artifact IDImmutable system ID + human label
TypeDisk image, memory dump, log export, screenshot, email, PCAP, document
SourceHost, user, cloud bucket—link SIEM query snapshot
HashSHA-256 / MD5 display; verified badge or mismatch alert
CustodianCurrent responsible analyst
HoldNone / Case hold / Org-wide legal hold
Size / retentionStorage class; deletion date unless held

Verdict: locker is append-only for analysts—delete requires legal + admin workflow with audit.

Intake from investigation workspace “Save to evidence” creates artifact row with query snapshot metadata.


Artifact intake wizard

AddArtifactWizard
├── Step 1: Type — Log export · Disk image · Screenshot · Network capture · Other
├── Step 2: Source — Upload file · Link cloud object · Pull from SIEM export job
├── Step 3: Metadata — Description · Related entity (user/IP/host) · Classification label
├── Step 4: Hash — Auto-compute on upload · [ Verify against source manifest ]
├── Step 5: Custody — Assign custodian · Notify legal if PII threshold exceeded
└── [ Add to locker ] · Immutable after submit
StepUI detail
Upload progressChunked upload with resume; progress bar
Hash computeShow algorithm; mismatch blocks submit
ClassificationSensitivity labels drive download RBAC
PII scanWarn before add; suggest redacted derivative artifact
Source linkSIEM job ID, EDR collection ID—traceable provenance
Duplicate detectSame hash → link existing artifact instead of re-upload

Use file upload patterns with drag-drop and virus-scan pending state.

Large artifacts: stage to cold storage; show “Available in 15m” with notification—do not block case creation.


Chain of custody log

ChainOfCustody — Artifact EVD-8842-001
├── 2026-07-24 4:12 PM · Created · Ana Liu · Intake from upload · Hash: abc123…
├── 2026-07-24 4:45 PM · Viewed · Marcus Chen · Preview metadata only (no download)
├── 2026-07-25 9:00 AM · Custody transfer · Ana Liu → Legal team · Reason: External counsel review
├── 2026-07-25 9:01 AM · Download · Sarah Kim (Legal) · Watermarked PDF · IP: 203.0.113.10
└── 2026-07-25 11:30 AM · Hash reverified · System · Scheduled integrity check · Pass
Event typeLogged fields
CreatedActor, source, initial hash
ViewedActor, view mode (metadata vs full)
DownloadedActor, format, watermark ID, IP, purpose code
TransferredFrom/to custodian, reason, approver if required
ExportedPack ID, recipient, manifest hash
ReverifiedScheduled or manual hash check result
Hold appliedHold ID, scope, releasing authority

Timeline uses vertical stepper—mirror audit log visual language for consistency.

Non-repudiation: custody entries cannot be edited or deleted—corrections add new “Amendment” event with reference.


Custody transfer workflow

CustodyTransfer
├── Artifact: EVD-8842-001 · disk-image-acme-laptop-0412.e01
├── From: Ana Liu · To: External forensics vendor · Contract: MSA-2024-IR
├── Reason: Deep malware analysis · Required by: 2026-07-26
├── Approvals: IR lead (required) · Legal (required for external)
├── Transfer method: Secure portal link · Expires 72h · Download once
└── [ Initiate transfer ] · Custody updates on vendor ack
ControlPurpose
Internal vs externalExternal requires legal approval step
Time-limited linkExpiring portal URL with access log
Vendor ackRecipient must accept custody—timestamp recorded
Return pathVendor uploads derivative report as new linked artifact
Break-glassEmergency transfer with post-hoc review flag

Pair with vendor risk—block transfer to unapproved vendors.

Use modals for approval gates; forms for reason codes.


LegalHoldOverlay
├── Case INV-2026-0412 · Hold ID: LH-2026-089 · Applied 2026-07-24
├── Scope: All artifacts in locker + related SIEM snapshots + audit excerpts
├── Blocks: Auto-deletion · Custodian transfer without legal ack · Bulk export to non-approved destinations
├── Release: Requires Legal + Compliance dual approval · Documented reason
└── Link: [Compliance export job](/designing-compliance-exports-and-legal-hold-ui-in-figma/) · [Data retention policy exception](/designing-data-retention-policies-and-auto-deletion-ui-in-figma/)
StateUI treatment
Hold activeRibbon on locker header; amber badge on each artifact
Pending releaseReview queue for legal team
Org-wide holdSupersedes case hold—blocks all matching artifacts
Retention countdownHidden while held; shows projected date after release

War room from shift handover can trigger provisional hold—legal confirms within 24h or hold auto-expires with alert.


Export pack builder

ExportPackBuilder
├── Case: INV-2026-0412 · Recipient: Regulator inquiry REF-2026-441
├── Selected artifacts: 8 of 14 · Redacted derivatives included where required
├── Manifest: File list + hashes + custody summary PDF
├── Encryption: PGP key fingerprint · Password delivery separate channel
├── Approval: Legal (required) · Compliance officer (required)
└── [ Generate pack ] · New custody event on completion
ComponentDetail
Manifest JSONMachine-readable list with hashes
Custody summaryHuman-readable chain PDF
Redaction mapWhich fields removed per artifact
WatermarkRecipient name + export ID on every PDF
ExpiryDownload link TTL; re-request needs new approval

Align pack structure with compliance exports—reuse manifest schema where possible.

Partial export: regulator asks for logs only—select type filter, not full locker dump.


Integrity monitoring dashboard

CheckFrequencyUI on failure
Hash reverificationDaily on hot storageRed banner on artifact row
Storage replicationContinuousDegraded badge; block download until healthy
Access anomalyReal-timeAlert via security alerting
Custodian inactiveWeeklyPrompt reassign if custodian offboarded
Hold without case ownerDailyNotify war room commander

Surface integrity status on posture dashboard—“Evidence integrity: 100% verified last 7d.”

Link member offboarding—auto-reassign artifacts when custodian leaves org.


Prebuilt artifact templates

TemplateTypical sourcePairs with
Auth log exportSIEM saved searchThreat hunting
EDR disk imageEndpoint agentThreat intel IOC
WAF request sampleEdge logsAutomation run
Member complaint emailSupport forwardSuspicious login recovery
Admin action screenshotManual captureAudit log
PCAP sliceNetwork tapSIEM connectors
Runbook execution logIR platformIncident runbooks

Template gallery uses cards with required metadata fields pre-filled.


Common mistakes

MistakeWhy it hurtsFix
Download without custody logChain breaks in courtLog every download with actor and purpose
Editable custody historyEvidence challengedAppend-only log with amendment entries
Same access for view and exportOver-exposure of PIISeparate permissions per action
No hash on intakeIntegrity unprovableBlock submit until hash computed
Legal hold as afterthoughtAuto-deletion destroys proofHold toggle on case creation for Sev 1
Artifacts outside caseOrphan evidenceLocker scoped to investigation ID
External transfer without vendor gateData leaves to untrusted partyVendor approval + expiring links
Watermark missing on PDFLeak untraceableRecipient + export ID on every page
No integrity reverificationSilent bit rotScheduled hash checks with alerts
Export pack without manifestRegulator rejects submissionStandard manifest + custody summary

  1. Design evidence locker with types, hashes, custodian, and hold ribbons.
  2. Build intake wizard with upload, hash verify, classification, and duplicate detection.
  3. Implement chain of custody timeline for create, view, download, transfer, export.
  4. Add custody transfer approvals for internal and external recipients.
  5. Wire legal hold to retention, deletion blocks, and compliance export packs.
  6. Document RBAC, watermark, and manifest schema in Dev Mode.

FAQ

Evidence locker vs investigation notes?

Notes are analyst narrative; locker stores immutable files and exports with cryptographic integrity proof.

Chain of custody vs audit log?

Audit log covers all org security events; custody log is artifact-specific legal chain—subset with stricter immutability rules.

Can analysts delete mistaken uploads?

No direct delete—mark as “Superseded” with link to replacement artifact; original remains with custody entry.

Retention sets default lifecycle; legal hold pauses deletion regardless of retention until explicitly released.

Export to compliance export job?

Yes—case export pack can spawn org-wide compliance job when scope exceeds single incident.


Next steps

Share on X

§ Keep reading

Related guides.