Move your slashing protection history
The validator client records every block and attestation it signs, and refuses to sign anything that conflicts. Take that history with you when you move keys to another machine or client. Every client reads the standard EIP-3076 format.
Stop the validator client first; its database is locked while it runs.
Export on the old machine:
./prysm.sh validator slashing-protection-history export \
--datadir=<VALIDATOR_DATADIR> \
--slashing-protection-export-dir=<EXPORT_DIR>
.\prysm.bat validator slashing-protection-history export `
--datadir=<VALIDATOR_DATADIR> `
--slashing-protection-export-dir=<EXPORT_DIR>
INFO historycmd: Successfully wrote <EXPORT_DIR>/slashing_protection.json. You can import this file using Prysm's validator slashing-protection-history import command in another machine
Import on the new machine, before its validator starts:
./prysm.sh validator slashing-protection-history import \
--slashing-protection-json-file=<PATH_TO>/slashing_protection.json \
--datadir=<VALIDATOR_DATADIR>
.\prysm.bat validator slashing-protection-history import `
--slashing-protection-json-file=<PATH_TO>\slashing_protection.json `
--datadir=<VALIDATOR_DATADIR>
INFO historycmd: Slashing protection JSON successfully imported into <VALIDATOR_DATADIR>
<VALIDATOR_DATADIR> is the validator's --datadir, the folder with validator.db (the validator logs it at startup as Checking DB databasePath=...). If the export says No slashing protection data was found in your database, you pointed it at the wrong folder; older setups keep the database in <WALLET_DIR>/direct/.
The file holds no secrets. The history only protects you if the old validator never signs again. If you lost it, keep the old client off for several epochs, then start the new one with doppelganger protection on.