A CLI tool to migrate away from prisma-field-encryption by decrypting your database fields to plaintext.
- 🔍 Auto-Discovery: Automatically finds your
schema.prismafiles and identifies fields marked with/// @encrypted. - 🧹 Hash Cleanup: Detects related hash fields (e.g.,
/// @encryption:hash(email)) and offers to clear them during migration. - 🛡️ Interactive: Select which models to decrypt and confirm actions before execution.
- 📦 Cleanup Assistant: Offers to uninstall the encryption library and provides a checklist for schema cleanup.
Run this tool directly using npx (or pnpx / yarn dlx) from your project root:
npx prisma-field-decryption- Your project must have
@prisma/clientinstalled and generated (prisma generate). - You must have your
CLOAK_MASTER_KEYavailable in your.envfile.
-s, --schema <path>: Manually specify path to schema file or directory.-e, --env <path>: Manually specify path to .env file.
- Analyze: The tool scans your schema and lists all encrypted models and fields.
- Select: You choose which models to process (default is all).
- Hash Option: You are asked if you want to set related hash fields to
null(since plaintext fields don't need separate hashes). - Decrypt: The tool connects to your database using your project's Prisma Client, decrypts data in memory, and writes it back as plaintext.
- Cleanup: You are prompted to uninstall the
prisma-field-encryptiondependency.
After the tool finishes, you should manually:
- Remove
/// @encryptedannotations from yourschema.prisma. - Remove
/// @encryption:hash(...)annotations. - Remove the
fieldEncryptionExtensionfrom yourprismaclient initialization code. - Run
prisma migrate devto drop the now-unused hash columns (if you cleared them).
MIT