Skip to main content

hades

transparent slack message anonymizer

Before After
before after

[!CAUTION] This will project can apply PERMANENET CHANGES to your slack messages. Make sure to read the documentation before using it and consider testing it on a test workspace first.

Installation

Requires Python 3.12+

uv tool install hades-slack

Usage

Create Slack apps

Slack has a funny thing called ratelimiting so we need multiple apps so this doesn't take 5 and a half years to complete.

This is automated and needs an "App Configuration Token" from Slack. How do you get one?

  • Go to https://api.slack.com/apps
  • Scroll down to "Your App Configuration Tokens"
  • Click "Generate Token"
  • Copy the "Access Token" that is generated
hades create-apps APP_CONFIG_TOKEN_HERE

This will create 5 slack apps and save their credentials. (The amount can be changed with the --count flag.)

Authenticating the Slack apps

What we actually need are user tokens for each app. To get those, run:

hades install-apps

This will open a browser window for each app and ask you to authorize it. After authorizing all apps, the user tokens will be saved to apps.json.

Downloading your messages

Before any operation, you will need to make a full download of your messages. This is done with:

hades download YOUR_USER_ID_HERE --apps apps.json

This will use the apps you created to download all your messages and save them to slack_messages.db.

Use --resume to continue a previously interrupted download.

Use --purge to delete any existing messages in the database before downloading.

Seeing your message stats

Now that you have your messages downloaded, you can see some stats about them with:

hades stats

Encrypting your messages

To encrypt your messages, run:

hades encrypt YOUR_PASSWORD_HERE ENCRYPT_OLDER_THAN --apps apps.json --execute

ENCRYPT_OLDER_THAN is the amount of days old a message has to be to be encrypted. For example, 30 will encrypt all messages older than 30 days and 0 will encrypt all messages.

Removing the --execute flag will do a dry run and show you how many messages would be encrypted without actually encrypting them on Slack.

Encryption modes

Use --mode to control what replaces your message text:

  • text (default): Replace with custom text via --text (default: [anonymized with hades])
  • random: Replace with random hex string
  • invisible: Make the message invisible
  • redact: Replaces non space characters with asterisks (*)

Channel type filtering

Use --channel-type / -c to filter which types of channels to encrypt. Can be repeated for multiple types.

  • public (default): Public channels
  • private: Private channels
  • dm: Direct messages
  • gdm: Group direct messages

For example, to encrypt messages in DMs and private channels older than 30 days, run:

hades encrypt YOUR_PASSWORD_HERE 30 --apps apps.json -c dm -c private --execute

Decrypting your messages

To decrypt your messages you will need to have a fresh download of your messages (run the download command again) and then run:

hades decrypt YOUR_PASSWORD_HERE DECRYPT_YOUNGER_THAN --apps apps.json --execute

DECRYPT_YOUNGER_THAN is the amount of days old a message has to be to be decrypted. For example, 30 will decrypt all messages younger than 30 days and 0 will decrypt all messages.

Removing the --execute flag will do a dry run and show you how many messages would be decrypted without actually decrypting them on Slack.

Metadata

Release files for hades-slack 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for hades-slack 0.2.0
File Size Uploaded Provenance Actions
hades_slack-0.2.0.tar.gz 28.2 kB Without provenance Details for hades_slack-0.2.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for hades-slack 0.2.0
File Interpreter ABI Platform Actions
hades_slack-0.2.0-py3-none-any.whl Python 3 none any Details for hades_slack-0.2.0-py3-none-any.whl

Total release size: 57.0 kB

Release files / hades_slack-0.2.0.tar.gz

Download URL hades_slack-0.2.0.tar.gz
Size 28.2 kB
Tags Source
SHA-256 checksum
How to use checksums
56dde147d6760756ab7c4e48fdd92f30af4d4fea79832a16dad4b01ce98f0763
BLAKE2b-256 checksum
How to use checksums
dc6f38087700b18204096402b6f19b49b545acdef30855460b20a0521eb05bf1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.8 {"installer":{"name":"uv","version":"0.11.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"CachyOS Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / hades_slack-0.2.0-py3-none-any.whl

Download URL hades_slack-0.2.0-py3-none-any.whl
Size 28.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e4bdb24ce39c1f05466030bc19a5f362984ec74f4e97d8f4023210473ddbd572
BLAKE2b-256 checksum
How to use checksums
4b71a64cd9d86cebfe846562ab0fbf7db13e34712e00d12ff1ab2c7bfba63b44
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.8 {"installer":{"name":"uv","version":"0.11.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"CachyOS Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Security for hades-slack 0.2.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page