Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
How to regenerate the master key for Rails 5.2 credentials

If your master.key has been compromised, you might want to regenerate it.

No key regeneration feature at the moment. We have to do it manually.

  1. Copy content of original credentials rails credentials:show somewhere temporarily.
  2. Remove config/master.key and config/credentials.yml.enc
  3. Run EDITOR=vim rails credentials:edit in the terminal: This command will create a new master.key and credentials.yml.enc if they do not exist.
  4. Paste the original credentials you copied (step 1) in the new credentials file (and save + quit vim)
  5. Add and Commit the file config/credentials.yml.enc


  • Make sure config/master.key is listed in .gitignore and NOT tracked by git.
  • The command EDITOR=vim rails credentials:edit might not work if you require credential value in some file (initializers or database.yml). I had the problem with devise.rb. I just uncommented the line secret_key = ... just the time to run the command to regenerate the credentials file, and then commented the line out again.
  • If you want to use Sublime to edit the credentials, you can replace the command EDITOR=vim rails credentials:edit by EDITOR="/Applications/Sublime\ -w" rails credentials:edit


Copy link

wicky-andrian commented Jun 30, 2020

Hello, Thank you for help me fix my credential problem.

Copy link

db0sch commented Jun 30, 2020

You're welcome

Copy link

Furqanameen commented Feb 3, 2021

thanks for sharing this

Copy link

alex59495 commented Feb 26, 2021

Thanks for sharing !

Copy link

scottbarrow commented Apr 27, 2022

for step 3, set config.require_master_key = false in application.rb or production.rb otherwise an exception will be raised since a key is required to edit credentials with this set to true

Copy link

db0sch commented Apr 28, 2022

@scottbarrow is this a new behaviour in rails 7?
In previous versions, the master key was re-generated automatically. But maybe this has changed

Copy link

scottbarrow commented Apr 28, 2022

ah yeah very well could be, the code does look different

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment