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.3.tar.gz (105.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.3-cp311-abi3-win_amd64.whl (781.8 kB view details)

Uploaded CPython 3.11+Windows x86-64

cpex_secrets_detection-0.3.3-cp311-abi3-manylinux_2_34_x86_64.whl (855.3 kB view details)

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

cpex_secrets_detection-0.3.3-cp311-abi3-manylinux_2_34_s390x.whl (892.9 kB view details)

Uploaded CPython 3.11+manylinux: glibc 2.34+ s390x

cpex_secrets_detection-0.3.3-cp311-abi3-manylinux_2_34_ppc64le.whl (880.3 kB view details)

Uploaded CPython 3.11+manylinux: glibc 2.34+ ppc64le

cpex_secrets_detection-0.3.3-cp311-abi3-manylinux_2_34_aarch64.whl (794.1 kB view details)

Uploaded CPython 3.11+manylinux: glibc 2.34+ ARM64

cpex_secrets_detection-0.3.3-cp311-abi3-macosx_11_0_arm64.whl (753.8 kB view details)

Uploaded CPython 3.11+macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: cpex_secrets_detection-0.3.3.tar.gz
  • Upload date:
  • Size: 105.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.3.tar.gz
Algorithm Hash digest
SHA256 bdf2ff73fe52755d672ad1f6a3e7c4c18d3711199a1ba3587b49fb0937443ff4
MD5 3b293827eb725034b0fc96130de92030
BLAKE2b-256 98ea9d8c2eafffb6567dce3a2e4e7ac982efcd73caf98bf88d05e1d9fe40c3c6

See more details on using hashes here.

Provenance

The following attestation bundles were made for cpex_secrets_detection-0.3.3.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.3-cp311-abi3-win_amd64.whl.

File metadata

File hashes

Hashes for cpex_secrets_detection-0.3.3-cp311-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 2b49fe9befb8c33efe7d1a157d696eed47ac1cf8ca52b1f2b43149ae9ac7fcd2
MD5 d153a67c4e5c77b900b3c7323c9cbb9f
BLAKE2b-256 d1cc86ca9202b4322ea2744ebca8e0ec8940553e874f54ad78f2959c3e1f5386

See more details on using hashes here.

Provenance

The following attestation bundles were made for cpex_secrets_detection-0.3.3-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.3-cp311-abi3-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for cpex_secrets_detection-0.3.3-cp311-abi3-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 365e84088b321cd107a833e8f711a51e8e34bd47d07aa45fafce4ec26a33f4f7
MD5 c9ff47330aee9c6d33c5d3ed5b6d4d6b
BLAKE2b-256 903c7f0141f25c11e9f5024a282771df49d622d52f20484d707a67b44004e0d2

See more details on using hashes here.

Provenance

The following attestation bundles were made for cpex_secrets_detection-0.3.3-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.3-cp311-abi3-manylinux_2_34_s390x.whl.

File metadata

File hashes

Hashes for cpex_secrets_detection-0.3.3-cp311-abi3-manylinux_2_34_s390x.whl
Algorithm Hash digest
SHA256 a58be0cae9571bbf87bf8adc73e9fa6ae7f2d4fcb5967a00b5a21a915006ba0c
MD5 040a9dce669dcd482de1bf30f1c89b6c
BLAKE2b-256 8fec04e94b99726cdd67e2fa944f6e3ce46c2b6d392dc01402eeb44ad8c960b7

See more details on using hashes here.

Provenance

The following attestation bundles were made for cpex_secrets_detection-0.3.3-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.3-cp311-abi3-manylinux_2_34_ppc64le.whl.

File metadata

File hashes

Hashes for cpex_secrets_detection-0.3.3-cp311-abi3-manylinux_2_34_ppc64le.whl
Algorithm Hash digest
SHA256 467bff70303755c1dd15290b4b39c1373568145098224431f3877da891e19da3
MD5 d64529802b638d1892883dedecacadc8
BLAKE2b-256 64d64bcd194746f098cef7f8b435d50aee777f5c6d0d5a417c6a95237a9fd46c

See more details on using hashes here.

Provenance

The following attestation bundles were made for cpex_secrets_detection-0.3.3-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.3-cp311-abi3-manylinux_2_34_aarch64.whl.

File metadata

File hashes

Hashes for cpex_secrets_detection-0.3.3-cp311-abi3-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 7936edea3addf293d20be1b73c5071db4abded24c0d2e07b3c49e5bea69f6bfb
MD5 e127f1b37c259e4c5aec16b0bbd5f9e5
BLAKE2b-256 b59c6b25ad56ec9362b99d840f6200ee80424c840b589c064d1a413a29054a40

See more details on using hashes here.

Provenance

The following attestation bundles were made for cpex_secrets_detection-0.3.3-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.3-cp311-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cpex_secrets_detection-0.3.3-cp311-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5474b5f8bfaa15b88dc07b2036bdaaf14e2dbca6f8a225655d25e034c599d8cd
MD5 f99ec2de5a03fae503902d777deb9941
BLAKE2b-256 8992c60d2116f8ac3f54cd4ecf913d5204bc13d914e7919b80b5fad5b2f581fe

See more details on using hashes here.

Provenance

The following attestation bundles were made for cpex_secrets_detection-0.3.3-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