Secret Detector
security.detect_secrets
Overview
You pass text, code, or config; we scan it with a curated, deterministic, ReDoS-safe rule pack (PEM keys, AWS access-key IDs, GitHub/Slack tokens, JWTs, bearer tokens, basic-auth URLs, generic credential assignments) plus optional Shannon-entropy checks in strict mode. This is preflight risk reduction — not Gitleaks/TruffleHog parity. We never return the full secret, only a redacted preview. Do not treat a clean result as proof the text is secret-free.
Secrets leak into code, config, and agent output all the time — you need a deterministic preflight before publishing, committing, or transmitting content.
Reliability
BEST_EFFORT with deterministic detectors (versioned rule pack): identical input yields the same findings on this deployment. A clean result is risk reduction, not certification. Input validation (not retryable): missing text; text too long; invalid contentKind or policy; maxFindings out of range.
Context footprint
Replaces ad-hoc, unreliable LLM secret-spotting with stable rules. A successful call costs 2 execution credits.
When to use it
Before committing, publishing, summarizing, or transmitting text or code.
As a sole compliance or DLP control — coverage is bounded and best-effort.
Scope
Non-goals
- Does not guarantee complete secret removal (best-effort)
- Does not call external scanners or networks
- Does not return full secret values
- Not Gitleaks/TruffleHog parity — a curated 8-detector pack, not hundreds of provider rules
- Does not verify whether a matched value is a live/active credential
- Does not tune the rule pack to contentKind — the same detectors run for every kind
- Known false-negative classes: unlisted providers (GCP/Azure/Stripe/Twilio/…), obfuscated/base64-wrapped or line-split secrets, and low-entropy custom tokens
Properties
Capabilities
Cost & billing
Flat rate per invocation
File handling
How we handle your data
What this means
This skill is designed to detect, mask, redact, validate, or otherwise process sensitive data.
Squillify guarantees
- Runs inside Squillify
- This skill runs inside Squillify.
- Payloads are not sent to an external service by this skill.
- Squillify does not permanently store submitted payloads.
- Telemetry records metadata only, not submitted content.
- Submitted payloads are not used for training.
- Submitted payloads are not reviewed by humans.
- Targets sensitive data
- Output contains sensitive findings
Your responsibility
Squillify does not determine whether submitted content is sensitive. Your application is responsible for deciding what data it is allowed to submit. Your application is responsible for securing the response.
Input schema
| Field | Type | Required | Description |
|---|---|---|---|
| text | string | Yes | Text, code, or configuration to scan. |
| contentKind | string | No | Content label; omit it for text. |
| policy | string | No | Detector policy; omit it for standard. |
| includeLowConfidence | boolean | No | Whether findings below 0.7 are included; omit it for false. |
| maxFindings | integer | No | Finding cap; omit it for 1,000. |
Output schema
| Field | Type | Required | Description |
|---|---|---|---|
| hasSecrets | boolean | Yes | Whether findings survived filtering. |
| findings | array | Yes | From 0 through 10,000 detector findings after filtering, each a closed non-secret receipt. |
| findingCount | integer | No | Returned finding count. |
| truncated | boolean | No | Whether the finding cap omitted matches. |
API contract
POST /v1/executecurl -sS -X POST "$BASE/v1/execute" -H "Authorization: Bearer $KEY" -H 'Content-Type: application/json' -d '{"skillKey":"security.detect_secrets","input":{"text":"aws_key = AKIAIOSFODNN7EXAMPLE"}}'import { Squillify } from "@squillify/sdk";
const sq = new Squillify({ apiKey: process.env.SQUILLIFY_API_KEY });
const { output } = await sq.execute("security.detect_secrets", {"text":"aws_key = AKIAIOSFODNN7EXAMPLE"});Errors
| Code | HTTP | Retryable | Description |
|---|---|---|---|
| VALIDATION_ERROR | 400 | No | The request payload failed schema validation. |
| UNAUTHORIZED | 401 | No | Missing or invalid API key. |
| SKILL_NOT_ACCESSIBLE | 403 | No | The API key is not granted access to this skill. |
| SKILL_NOT_AVAILABLE_FOR_PLAN | 403 | No | This skill is not included in your current plan. |
| PLAN_ELIGIBILITY_UNAVAILABLE | 503 | Yes | Plan eligibility could not be decided. Retry after backoff. |
| SKILL_NOT_FOUND | 404 | No | The requested skill or version does not exist. |
| TENANT_RATE_LIMITED | 429 | Yes | Request rate limit exceeded. Retry after backoff. |
| QUOTA_EXCEEDED | 429 | Yes | Plan quota exhausted. Retryable once the quota period resets. |
| EXECUTION_TIMEOUT | 504 | Yes | Execution exceeded the allowed time budget. |
Other limits
| Limit | Value |
|---|---|
| Recommended inline bytes | 32 KiB |
Limitations
- Does not guarantee complete secret removal (best-effort)
- Does not call external scanners or networks
- Does not return full secret values
- Not Gitleaks/TruffleHog parity — a curated 8-detector pack, not hundreds of provider rules
- Does not verify whether a matched value is a live/active credential
- Does not tune the rule pack to contentKind — the same detectors run for every kind
- Known false-negative classes: unlisted providers (GCP/Azure/Stripe/Twilio/…), obfuscated/base64-wrapped or line-split secrets, and low-entropy custom tokens
- Guaranteed compliance-grade DLP (this is best-effort)
- Detecting semantic PII like names/addresses (use text.mask_pii)
- Validating that a specific known secret is present
How to call
POST /v1/execute (requires authentication)
{
"skillKey": "security.detect_secrets",
"input": {
"text": "aws_key = AKIAIOSFODNN7EXAMPLE"
}
}Examples
AWS access key id detected
{
"text": "aws_key = AKIAIOSFODNN7EXAMPLE"
}{
"findingCount": 1,
"truncated": false,
"hasSecrets": true,
"findings": [
{
"confidence": 0.9,
"kind": "aws_access_key_id",
"column": 11,
"detector": "aws_access_key_id",
"startChar": 10,
"line": 1,
"redactedPreview": "AKIA…MPLE",
"endChar": 30,
"recommendation": "Rotate the AWS credential and remove it from source."
}
]
}Clean prose with no matches
{
"text": "The quick brown fox."
}{
"findingCount": 0,
"truncated": false,
"hasSecrets": false,
"findings": []
}Recommended use cases
- Preflight content before committing, publishing, or transmitting
- Flag leaked credentials in agent-generated output
- Gate documents before summarization or sharing
Avoid for
- Guaranteed compliance-grade DLP (this is best-effort)
- Detecting semantic PII like names/addresses (use text.mask_pii)
- Validating that a specific known secret is present
Related skills
Composable with
Safety & privacy
- Runs without calling any external service.
- Your payloads are never stored permanently.
- Telemetry captures metadata only — never your payload contents.
- We never train models on your payloads.
- No human reviews your payloads.