Skip to main content

Rust-backed secrets detection plugin for MCP Gateway

Project description

cpex-secrets-detection

Rust-backed secrets detection plugin for MCP Gateway / CPEX.

Runtime Requirements

This plugin depends on cpex>=0.1.0rc1,<0.2 and imports hook models from cpex.framework. The compiled Rust extension is mandatory; there is no Python fallback implementation.

What it does

This plugin scans hook payloads for likely secrets and can either:

  • block processing when a secret is found
  • redact matched values in the returned payload
  • attach findings metadata to the hook result

Supported hooks:

  • prompt_pre_fetch: scans payload.args
  • tool_post_invoke: scans payload.result
  • resource_post_fetch: scans payload.content.text

It walks nested values, not just top-level strings. Coverage includes:

  • plain strings
  • dict
  • list
  • tuple
  • custom Python objects with __dict__
  • slot-based objects with __slots__
  • Pydantic-style objects that expose model_dump() and model_copy()

When redaction is enabled, the plugin preserves payload shape as much as possible instead of flattening everything to plain dicts.

Exact detector coverage

The plugin ships these regex-based detectors:

  • aws_access_key_id
  • aws_secret_access_key
  • google_api_key
  • github_token
  • stripe_secret_key
  • slack_token
  • private_key_block
  • generic_api_key_assignment
  • jwt_like
  • hex_secret_32
  • base64_24

Default behavior:

  • enabled by default:
    • aws_access_key_id
    • aws_secret_access_key
    • google_api_key
    • github_token
    • stripe_secret_key
    • slack_token
    • private_key_block
  • disabled by default because they are broader and more false-positive-prone:
    • generic_api_key_assignment
    • jwt_like
    • hex_secret_32
    • base64_24

What it does not do

This plugin is intentionally narrow. It does not:

  • verify whether a matched credential is real, active, or revoked
  • call external services
  • decode or unpack data before scanning
    • no base64 decode pass
    • no hex decode pass
    • no gzip, zip, or archive inspection
  • scan binary resource bodies
    • resource_post_fetch only scans content.text
  • inspect arbitrary object internals unless they are exposed through supported Python state surfaces such as model_dump(), __dict__, or __slots__
  • guarantee detection of every secret format
    • coverage is limited to the listed regex patterns
  • use entropy scoring, ML classification, or semantic analysis
  • infer secret validity from surrounding prose

It also does not emit the original matched secret in outward-facing findings metadata or violation examples. Those surfaces contain secret types only.

Config

Available config keys:

  • enabled: map of detector name to true or false
  • redact: whether to replace matches in returned payloads
  • redaction_text: replacement text used when redact=true
  • block_on_detection: whether to stop processing on detection
  • min_findings_to_block: threshold for blocking

Defaults:

enabled:
  aws_access_key_id: true
  aws_secret_access_key: true
  google_api_key: true
  github_token: true
  stripe_secret_key: true
  generic_api_key_assignment: false
  slack_token: true
  private_key_block: true
  jwt_like: false
  hex_secret_32: false
  base64_24: false
redact: false
redaction_text: "***REDACTED***"
block_on_detection: true
min_findings_to_block: 1

Result shape

On detection, the plugin may return:

  • modified_payload with redacted values when redact=true
  • metadata.count
  • metadata.secrets_redacted=true when redaction happened
  • metadata.secrets_findings=[{"type": "..."}] when reporting findings without redaction
  • a PluginViolation with code="SECRETS_DETECTED" when blocking

Build

uv sync --dev
make install
make test-all

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cpex_secrets_detection-0.3.4.tar.gz (106.0 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

cpex_secrets_detection-0.3.4-cp311-abi3-win_amd64.whl (785.6 kB view details)

Uploaded CPython 3.11+Windows x86-64

cpex_secrets_detection-0.3.4-cp311-abi3-manylinux_2_34_x86_64.whl (858.7 kB view details)

Uploaded CPython 3.11+manylinux: glibc 2.34+ x86-64

cpex_secrets_detection-0.3.4-cp311-abi3-manylinux_2_34_s390x.whl (896.5 kB view details)

Uploaded CPython 3.11+manylinux: glibc 2.34+ s390x

cpex_secrets_detection-0.3.4-cp311-abi3-manylinux_2_34_ppc64le.whl (883.1 kB view details)

Uploaded CPython 3.11+manylinux: glibc 2.34+ ppc64le

cpex_secrets_detection-0.3.4-cp311-abi3-manylinux_2_34_aarch64.whl (795.9 kB view details)

Uploaded CPython 3.11+manylinux: glibc 2.34+ ARM64

cpex_secrets_detection-0.3.4-cp311-abi3-macosx_11_0_arm64.whl (757.1 kB view details)

Uploaded CPython 3.11+macOS 11.0+ ARM64

File details

Details for the file cpex_secrets_detection-0.3.4.tar.gz.

File metadata

  • Download URL: cpex_secrets_detection-0.3.4.tar.gz
  • Upload date:
  • Size: 106.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for cpex_secrets_detection-0.3.4.tar.gz
Algorithm Hash digest
SHA256 0597b945e85a056518a2f72cfc905e09fde56abf3ca9cd51cdb2bb6cd2a8a500
MD5 88f2dc49af84bc591ee94851c619cf1c
BLAKE2b-256 3342570ec3fa988eb85f437b438fe526d528b3677d5103895d68e6c7271a0b9c

See more details on using hashes here.

Provenance

The following attestation bundles were made for cpex_secrets_detection-0.3.4.tar.gz:

Publisher: release-rust-python-package.yaml on IBM/cpex-plugins

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cpex_secrets_detection-0.3.4-cp311-abi3-win_amd64.whl.

File metadata

File hashes

Hashes for cpex_secrets_detection-0.3.4-cp311-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 567069b32c23873c934cc2355f927b205d6d1b2117d6937b860dc930d7cb7df3
MD5 b9958a68bcd71061e6ce799694e1be75
BLAKE2b-256 c29b1d3e4eadc895f673d298beccd1d0c937f0978aa48be3e8e51a0cea0a6fc2

See more details on using hashes here.

Provenance

The following attestation bundles were made for cpex_secrets_detection-0.3.4-cp311-abi3-win_amd64.whl:

Publisher: release-rust-python-package.yaml on IBM/cpex-plugins

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cpex_secrets_detection-0.3.4-cp311-abi3-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for cpex_secrets_detection-0.3.4-cp311-abi3-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 22bda6b889472508dee59c203c5068f7e445ebc67d116d924db48d26f9b665a5
MD5 c12cb92cec53c774ff4c13dc256336e8
BLAKE2b-256 3e2fb61a72f13675a2a4b25cca57269cbbfb2853913da6c96da0b3ebda7c67c0

See more details on using hashes here.

Provenance

The following attestation bundles were made for cpex_secrets_detection-0.3.4-cp311-abi3-manylinux_2_34_x86_64.whl:

Publisher: release-rust-python-package.yaml on IBM/cpex-plugins

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cpex_secrets_detection-0.3.4-cp311-abi3-manylinux_2_34_s390x.whl.

File metadata

File hashes

Hashes for cpex_secrets_detection-0.3.4-cp311-abi3-manylinux_2_34_s390x.whl
Algorithm Hash digest
SHA256 24cc0ace6c64f5cf1071be74b1ac7983ccad28a1a97d82d3cc1e10e90d0d2199
MD5 96e2b974e2a30c334ed54e499228f104
BLAKE2b-256 bb0519926f27933ecc9089a0a93a1acce9faf1caebf8d9db8a536211ec5ad141

See more details on using hashes here.

Provenance

The following attestation bundles were made for cpex_secrets_detection-0.3.4-cp311-abi3-manylinux_2_34_s390x.whl:

Publisher: release-rust-python-package.yaml on IBM/cpex-plugins

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cpex_secrets_detection-0.3.4-cp311-abi3-manylinux_2_34_ppc64le.whl.

File metadata

File hashes

Hashes for cpex_secrets_detection-0.3.4-cp311-abi3-manylinux_2_34_ppc64le.whl
Algorithm Hash digest
SHA256 43adcc12b78be9cb057406dcaf01614e22f4463d26a4027014af83e142184de9
MD5 0a989400945e434c570b508a3a2afff4
BLAKE2b-256 17164c3bc43fab50181664c96880155c925a6d1688451f1fb16aa4d19cf76640

See more details on using hashes here.

Provenance

The following attestation bundles were made for cpex_secrets_detection-0.3.4-cp311-abi3-manylinux_2_34_ppc64le.whl:

Publisher: release-rust-python-package.yaml on IBM/cpex-plugins

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cpex_secrets_detection-0.3.4-cp311-abi3-manylinux_2_34_aarch64.whl.

File metadata

File hashes

Hashes for cpex_secrets_detection-0.3.4-cp311-abi3-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 4383a0e00eb530331fe5589143f2fac81c0cd820f2b5f168880edea5e52b3a9a
MD5 af7b2ba0276efa22da4bf60f813cf620
BLAKE2b-256 d47735e218f5af07ca1ce02bf83a9f443f44268bf66251280dd9477d448e058e

See more details on using hashes here.

Provenance

The following attestation bundles were made for cpex_secrets_detection-0.3.4-cp311-abi3-manylinux_2_34_aarch64.whl:

Publisher: release-rust-python-package.yaml on IBM/cpex-plugins

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cpex_secrets_detection-0.3.4-cp311-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cpex_secrets_detection-0.3.4-cp311-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5d412f4af6abaf4b0db999295b0a692fefd94a48b7d566412b0f88eb9845929a
MD5 0401afaaf01b5ece391dea80a13ddcb0
BLAKE2b-256 c8f2ed41dc811fec6d1ec421ff845908cf730cfb1a4c47af8e0a23699c4a10ab

See more details on using hashes here.

Provenance

The following attestation bundles were made for cpex_secrets_detection-0.3.4-cp311-abi3-macosx_11_0_arm64.whl:

Publisher: release-rust-python-package.yaml on IBM/cpex-plugins

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page