Perryscope.ai
PlatformDocsRoadmapCompare
Request demo
Perryscope.ai

Self-hosted sensitive-data security for the AI era.

ProductsSecret SecurityPrivacy SecurityAI Guardienne
PlatformArchitectureSecurity modelGovernance syncObservability
DevelopersDocumentationAPI referenceCLIWebSocket eventsGet started
CompanyRoadmapCompareFAQSupportContactPrivacy policyTerms
© 2026 Perryscope. Flexible enterprise licensing.100% self-hosted · zero third-party calls
Secret SecurityShipped

Detect secrets. Then prove which ones are live.

Perryscope scans your GitHub organization for exposed credentials — HEAD files, every branch, CI/CD workflows, and full commit history — then validates each discovery against live provider APIs so your team triages confirmed-active exposures first.

Request a demoRead the docs
perryscope scan · acme-corp
scanning acme-corp/payments-api · 142 files · 3 branches
HIGH aws_access_key_id src/config.py:41 → LIVE_VALID
HIGH stripe_secret_key .env.bak:7 → DEAD_INVALID
MED generic_api_token tests/fixtures.json:88 → UNVERIFIED
dedup: 3 findings from 11 matches · owner: git blame → @s.patel
▸ 1 confirmed-active credential queued for approval
Detection

Three signals. One confidence score.

Every match is scored 0–100 from three independent signals, so confidence means something — and false positives don't bury the queue.

01 · patterns

200+ compiled patterns

Cloud (AWS 35+, Azure 25+, GCP), VCS, payments, databases (35+), cryptographic material (20+), and generic token families (40+) — compiled once and cached.

02 · entropy

Shannon entropy analysis

Multi-charset entropy — including decoded base64 and hex bytes — catches unknown and obfuscated secrets that no named pattern covers.

03 · context

Contextual scoring

Surrounding keywords, variable names, and file types raise or lower confidence — a token in config.py is not a token in test fixtures.

Live validation

From 10,000 matches to the 12 that matter.

Discovered credentials are checked read-only against provider APIs. A correlation engine assembles multi-component secrets — an AWS key ID paired with its secret — before validation. Results are stored with evidence and drive the decision engine.

GitHub

GET /user

AWS

STS GetCallerIdentity

Stripe

read-only charges list

Azure

AD token endpoint
Validation outcomes:LIVE_VALIDDEAD_INVALIDPARTIAL_CONFIDENCEUNVERIFIEDSSH keys and certificates receive structural validation (format-only).
Workflow

A 21-state lifecycle, enforced by a transition table.

Findings are stateful work items, not console output. A deterministic, zero-LLM decision engine routes each validated finding; critical actions wait in a human approval queue; failures land in a dead-letter queue with retry limits.

NEWDEDUPEDOWNER_RESOLVEDVALIDATINGlive provider APIsDECISIONdeterministic engineAPPROVALhuman gateCLOSEDverifiedREOPENED re-entry — closure requires verification
Ownership via git blame, CODEOWNERS, and team maps · SLA tracking · append-only timelines · comments & assignment
Scan modes

Shallow when you're fast. Deep when you're thorough.

 Shallow scanDeep scan
MethodGitHub API only — no cloneFull clone + history walk
CoverageHEAD files, branch tips, CI/CD workflow filesComplete commit history across all branches
Speed1–3 s/repo · ~100 repos in ~5 min5 concurrent repos, per-repo timeouts
Best forContinuous org-wide sweepsAudits — secrets deleted in past commits

Repository caching makes subsequent scans ~80% faster; cross-scan deduplication by secret fingerprint keeps counts honest. Scheduled/incremental scans: In Development

Escalation & reporting

Findings meet your existing workflow.

Slack

Block Kit alerts for critical findings, straight to the channel that owns them.

Email & Jira

SMTP/STARTTLS email and Jira tickets, created from the escalation registry.

SARIF 2.1.0

Uploads directly into GitHub Code Scanning — findings appear as code-scanning alerts.

GRC sync

A governance worker pushes confirmed findings into SimpleRisk or CISO Assistant, idempotently.

Shift left

Block secrets before they're ever committed.

The Perryscope CLI installs a pre-commit hook that scans staged changes with the same detection engine as the server. Block or warn mode, with a configurable confidence threshold via .periscope.yaml.

CLI documentation →
terminal
$ python -m radar_scanner.cli install
✓ pre-commit hook installed (mode: block)
$ git commit -m "add payment config"
✗ blocked: aws_access_key_id in src/config.py:41
  confidence 94 · threshold 80 · see .periscope.yaml
Security model

The findings database is itself a secret store. It's treated like one.

Encrypted at rest

AES-256-GCM / Fernet under your keys, with MultiFernet rotation. Plaintext never appears in list APIs — display is masked by default.

Audited reveal

Revealing a secret requires a written justification, is rate-limited with a sliding window, and lands in an immutable audit log: who, when, why.

Hardened by default

Constant-time API-key comparison, security headers, CORS hardening, rate limiting, and fail-safe defaults — unknown storage mode falls back to encrypted.

Run your first org-wide scan today.

One Docker Compose command. Your infrastructure. Your keys.

Request a demoRead the docs

Part of the Perryscope platform — see also Privacy Security and AI Guardienne, or explore the architecture.