Replace an authorized signer key with a new one without touching the Locked CELO account key
This page is for operators and CELO holders who need to replace an authorized signer key. As detailed in the Celo account roles description page, Locked CELO accounts can authorize separate signer keys for roles such as voting or validator management. This way, if an authorized signer key is lost or compromised, the Locked CELO account can authorize a new signer to replace the old one, without risking the key that custodies funds. This prevents losing an authorized signer key from becoming a catastrophic event. In fact, it is recommended as an operational best practice to regularly rotate keys to limit the impact of keys being silently compromised.
Authorizing a new signer for a role overwrites the old signer for that role. The new signer must first produce a proof-of-possession, and the key being replaced must never have been used as an authorized signer or Locked CELO Account before.
# With $SIGNER_TO_AUTHORIZE as the new signer:# Create a proof-of-possession. Note that the new signer private key must be available.celocli account:proof-of-possession --account $VALIDATOR_ACCOUNT_ADDRESS --signer $SIGNER_TO_AUTHORIZE
If VALIDATOR_ACCOUNT_ADDRESS corresponds to a key you possess:
# From a node with access to the key for VALIDATOR_ACCOUNT_ADDRESScelocli account:authorize --from $VALIDATOR_ACCOUNT_ADDRESS --role validator --signer $SIGNER_TO_AUTHORIZE --signature 0x$SIGNER_PROOF_OF_POSSESSION
If VALIDATOR_ACCOUNT_ADDRESS is a ReleaseGold contract:
# From a node with access to the beneficiary key of VALIDATOR_ACCOUNT_ADDRESScelocli releasecelo:authorize --contract $VALIDATOR_ACCOUNT_ADDRESS --role validator --signer $SIGNER_TO_AUTHORIZE --signature 0x$SIGNER_PROOF_OF_POSSESSION
The same flow applies to vote signers with --role vote.Confirm the rotation:
celocli account:show $VALIDATOR_ACCOUNT_ADDRESS
A newly authorized signer takes effect for validator elections at the next epoch. A deauthorized signer cannot be reauthorized later, so never reuse old signer keys.
{"docsConfig":{"theme":"aspen","$schema":"https://mintlify.com/docs.json","name":"Celo Docs","description":"Learn to develop on the Ethereum L2 built for the real world. Access guides, APIs, and tools for fast, affordable blockchain applications","colors":{"primary":"#000000","light":"#fcff52","dark":"#000000"},"logo":{"light":"https://mintcdn.com/celo-64ac69bd/0WkPc8r8miw6rJ0o/images/CeloDocs_LogoLight.svg?fit=max\u0026auto=format\u0026n=0WkPc8r8miw6rJ0o\u0026q=85\u0026s=9d6c38002bd204ed66ca9db0782aecf9","dark":"https://mintcdn.com/celo-64ac69bd/0WkPc8r8miw6rJ0o/images/CeloDocs_LogoDark.svg?fit=max\u0026auto=format\u0026n=0WkPc8r8miw6rJ0o\u0026q=85\u0026s=020f629b1f5797de98cb1aed37d8a3a7"},"favicon":"https://mintcdn.com/celo-64ac69bd/0WkPc8r8miw6rJ0o/images/CeloDocs_Favicon_64px.png?fit=max\u0026auto=format\u0026n=0WkPc8r8miw6rJ0o\u0026q=85\u0026s=7ba4295bda57bbba69fb5e4d52e86db9","appearance":{"default":"dark"},"background":{"color":{"light":"#FCF6F1","dark":"#0b0d10"}},"navbar":{"links":[{"href":"https://discord.com/invite/celo","label":"Community"},{"href":"https://celo.org","label":"Celo.org"}],"primary":{"type":"button","label":"GitHub","href":"https://github.com/celo-org"}},"footer":{"links":[{"header":"Community","items":[{"label":"Forum","href":"https://forum.celo.org/"},{"label":"Contributors","href":"/contribute"}]},{"header":"Socials","items":[{"label":"Youtube","href":"https://www.youtube.com/@CeloOrg"},{"label":"Discord","href":"https://discord.com/invite/celo"},{"label":"X","href":"https://x.com/Celo"},{"label":"Events","href":"https://luma.com/user/usr-QJkvU5EML2BJeYc"},{"label":"Celo Developers newsletter","href":"https://celo-devs.beehiiv.com/subscribe"}]}]},"seo":{"organization":{"name":"Celo","url":"https://celo.org","logo":"https://docs.celo.org/logo/celo_light.png","sameAs":["https://github.com/celo-org","https://x.com/Celo","https://www.youtube.com/@CeloOrg","https://discord.com/invite/celo","https://forum.celo.org/","https://l2beat.com/scaling/projects/celo"]}},"fonts":{"heading":{"family":"system-ui"},"body":{"family":"system-ui"}},"integrations":{"ga4":{"measurementId":"G-0CXEKQ81V2"}},"banner":{"content":"🤖 **Agents on Open Rails** | Celo’s global hackathon — $5,000 in prizes, kicks off Oct 6. [Join the hackathon](https://www.loops.house/agents-on-open-rails)","dismissible":true},"contextual":{"options":["copy","view","mcp","chatgpt","claude","cursor","vscode",{"title":"Edit on GitHub","description":"Open the docs repository to edit a page and raise a pull request","icon":"github","href":"https://github.com/celo-org/docs"}],"display":"header"},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"Docs for AI","icon":"robot","href":"/build/agents/use-docs-with-ai"},{"anchor":"Organization","icon":"globe","href":"https://celo.org/"},{"anchor":"Support","icon":"bullhorn","href":"https://discord.com/invite/celo"},{"anchor":"Forum","icon":"newspaper","href":"https://forum.celo.org/"},{"anchor":"Faucet","icon":"faucet","href":"https://faucet.celo.org/celo-sepolia"},{"anchor":"FAQs","icon":"square-question","href":"https://docs.celo.org/operate/operators/faq"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"celo-64ac69bd","hasAudioNarration":false,"actualSubdomain":"celo-64ac69bd","customDomains":["docs.celo.org"],"gitSource":{"type":"github","owner":"celo-org","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6adb4425cf9bd761b13fd127","collectionId":"d7fc9077-9e80-462e-9371-bd0fc74f59ab","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6adb4425cf9bd761b13fd127"},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6adb4425cf9bd761b13fd127","clientVersion":"0.0.3966","searchFilterCounts":[{"language":"default","tag":"Build","count":129},{"language":"default","tag":"Tools","count":84},{"language":"default","tag":"Learn","count":44},{"language":"default","tag":"Libraries \u0026 SDKs","count":40},{"language":"default","tag":"Operate","count":39},{"language":"default","tag":"CLI","count":21},{"language":"default","tag":"Agents","count":18},{"language":"default","tag":"Contribute","count":15},{"language":"default","tag":"Guides","count":12},{"language":"default","tag":"ContractKit","count":10}]},"assistantConfig":{"enableAskAiButton":true,"enableAskAiSearchBar":true,"deflection":{"enabled":true,"email":"community@celo.org"}},"hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":".colored_text a{color:inherit!important}ol ol{list-style-type:lower-roman!important}"}],"page":{"pagePath":"learn/protocol/staking/key-management/key-rotation","slug":"/learn/protocol/staking/key-management/key-rotation","pageMetadata":{"title":"Signer Key Rotation","sidebarTitle":"Key Rotation","description":"Replace an authorized signer key with a new one without touching the Locked CELO account key","href":"/learn/protocol/staking/key-management/key-rotation"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Replace an authorized signer key with a new one without touching the Locked CELO account key\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,pre:`pre`,span:`span`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`This page is for operators and CELO holders who need to replace an authorized signer key. As detailed in `,_jsx(_components.a,{href:`/learn/protocol/staking/key-management/detailed`,children:`the Celo account roles description page`}),`, Locked CELO accounts can authorize separate signer keys for roles such as voting or validator management. This way, if an authorized signer key is lost or compromised, the Locked CELO account can authorize a new signer to replace the old one, without risking the key that custodies funds. This prevents losing an authorized signer key from becoming a catastrophic event. In fact, it is recommended as an operational best practice to regularly rotate keys to limit the impact of keys being silently compromised.`]}),`\n`,_jsx(Heading,{level:`2`,id:`rotate-a-signer-key`,children:`Rotate a signer key`}),`\n`,_jsx(_components.p,{children:`Authorizing a new signer for a role overwrites the old signer for that role. The new signer must first produce a proof-of-possession, and the key being replaced must never have been used as an authorized signer or Locked CELO Account before.`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`4`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`4`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# With $SIGNER_TO_AUTHORIZE as the new signer:`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# Create a proof-of-possession. Note that the new signer private key must be available.`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`celocli`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` account:proof-of-possession`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --account`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` $VALIDATOR_ACCOUNT_ADDRESS`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --signer`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` $SIGNER_TO_AUTHORIZE`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`If `,_jsx(_components.code,{children:`VALIDATOR_ACCOUNT_ADDRESS`}),` corresponds to a key you possess:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# From a node with access to the key for VALIDATOR_ACCOUNT_ADDRESS`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`celocli`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` account:authorize`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --from`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` $VALIDATOR_ACCOUNT_ADDRESS`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --role`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` validator`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --signer`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` $SIGNER_TO_AUTHORIZE`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --signature`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 0x`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$SIGNER_PROOF_OF_POSSESSION`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`If `,_jsx(_components.code,{children:`VALIDATOR_ACCOUNT_ADDRESS`}),` is a `,_jsx(_components.code,{children:`ReleaseGold`}),` contract:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# From a node with access to the beneficiary key of VALIDATOR_ACCOUNT_ADDRESS`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`celocli`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` releasecelo:authorize`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --contract`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` $VALIDATOR_ACCOUNT_ADDRESS`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --role`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` validator`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --signer`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` $SIGNER_TO_AUTHORIZE`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --signature`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 0x`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$SIGNER_PROOF_OF_POSSESSION`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`The same flow applies to vote signers with `,_jsx(_components.code,{children:`--role vote`}),`.`]}),`\n`,_jsx(_components.p,{children:`Confirm the rotation:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`celocli`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` account:show`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` $VALIDATOR_ACCOUNT_ADDRESS`})]}),`\n`]})})}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`A newly authorized signer takes effect for validator elections at the next epoch. A deauthorized signer cannot be reauthorized later, so never reuse old signer keys.`})}),`\n`,_jsx(Heading,{level:`2`,id:`related`,children:`Related`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/learn/protocol/staking/key-management/detailed`,children:`Detailed role descriptions`}),` - the authorize commands per role`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/learn/protocol/staking/key-management/summary`,children:`Key management summary`}),` - which key can be stored where`]}),`\n`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Signer Key Rotation","sidebarTitle":"Key Rotation","description":"Replace an authorized signer key with a new one without touching the Locked CELO account key","href":"/learn/protocol/staking/key-management/key-rotation"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Rotate a signer key","slug":"rotate-a-signer-key","depth":2,"children":[]},{"title":"Related","slug":"related","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/celo-64ac69bd/2f1ae726193f7358/assistant.js"],"subdomain":"celo-64ac69bd","siteName":"Celo Docs","title":"Signer Key Rotation - Celo Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-06T10:11:44.251Z","originalFileLocation":"learn/protocol/staking/key-management/key-rotation.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"dark\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Replace an authorized signer key with a new one without touching the Locked CELO account key\">\u003cmeta data-mint-head name=\"application-name\" content=\"Celo Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/celo-64ac69bd/AG5c0rSidebGFnjH/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/celo-64ac69bd/AG5c0rSidebGFnjH/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/celo-64ac69bd/AG5c0rSidebGFnjH/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/celo-64ac69bd/AG5c0rSidebGFnjH/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/celo-64ac69bd/AG5c0rSidebGFnjH/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/celo-64ac69bd/AG5c0rSidebGFnjH/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/celo-64ac69bd/AG5c0rSidebGFnjH/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/celo-64ac69bd/AG5c0rSidebGFnjH/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/celo-64ac69bd/AG5c0rSidebGFnjH/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Signer Key Rotation - Celo Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Replace an authorized signer key with a new one without touching the Locked CELO account key\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Celo Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.celo.org/learn/protocol/staking/key-management/key-rotation\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://celo-64ac69bd.mintlify.app/_mintlify/api/og/v2?division=Key+Management\u0026amp;title=Signer+Key+Rotation\u0026amp;description=Replace+an+authorized+signer+key+with+a+new+one+without+touching+the+Locked+CELO+account+key\u0026amp;theme=f89b675bf0695d1efecdbf40\u0026amp;signature=acfe43e3b7e2bc3051f7fcec93db71693afc54df439fa6c1c8ab049497c1597e\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Signer Key Rotation - Celo Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Replace an authorized signer key with a new one without touching the Locked CELO account key\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://celo-64ac69bd.mintlify.app/_mintlify/api/og/v2?division=Key+Management\u0026amp;title=Signer+Key+Rotation\u0026amp;description=Replace+an+authorized+signer+key+with+a+new+one+without+touching+the+Locked+CELO+account+key\u0026amp;theme=f89b675bf0695d1efecdbf40\u0026amp;signature=acfe43e3b7e2bc3051f7fcec93db71693afc54df439fa6c1c8ab049497c1597e\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/celo-64ac69bd/AG5c0rSidebGFnjH/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Celo Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#000000\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.celo.org/learn/protocol/staking/key-management/key-rotation\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/learn/protocol/staking/key-management/key-rotation.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://celo.org/#organization\",\"name\":\"Celo\",\"url\":\"https://celo.org\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://docs.celo.org/logo/celo_light.png\"},\"sameAs\":[\"https://github.com/celo-org\",\"https://x.com/Celo\",\"https://www.youtube.com/@CeloOrg\",\"https://discord.com/invite/celo\",\"https://forum.celo.org/\",\"https://l2beat.com/scaling/projects/celo\"]},{\"@type\":\"WebSite\",\"@id\":\"https://docs.celo.org#website\",\"name\":\"Celo Docs\",\"url\":\"https://docs.celo.org\",\"publisher\":{\"@id\":\"https://celo.org/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.celo.org/learn/protocol/staking/key-management/key-rotation#webpage\",\"url\":\"https://docs.celo.org/learn/protocol/staking/key-management/key-rotation\",\"name\":\"Signer Key Rotation\",\"description\":\"Replace an authorized signer key with a new one without touching the Locked CELO account key\",\"dateModified\":\"2026-10-06T10:11:44.251Z\",\"isPartOf\":{\"@id\":\"https://docs.celo.org#website\"},\"breadcrumb\":{\"@id\":\"https://docs.celo.org/learn/protocol/staking/key-management/key-rotation#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.celo.org/learn/protocol/staking/key-management/key-rotation#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Staking\",\"item\":\"https://docs.celo.org/learn/protocol/staking/index\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Key Management\",\"item\":\"https://docs.celo.org/learn/protocol/staking/key-management/summary\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Signer Key Rotation\",\"item\":\"https://docs.celo.org/learn/protocol/staking/key-management/key-rotation\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.celo.org/learn/protocol/staking/key-management/key-rotation#article\",\"headline\":\"Signer Key Rotation\",\"name\":\"Signer Key Rotation\",\"description\":\"Replace an authorized signer key with a new one without touching the Locked CELO account key\",\"url\":\"https://docs.celo.org/learn/protocol/staking/key-management/key-rotation\",\"mainEntityOfPage\":{\"@id\":\"https://docs.celo.org/learn/protocol/staking/key-management/key-rotation#webpage\"},\"dateModified\":\"2026-10-06T10:11:44.251Z\",\"publisher\":{\"@id\":\"https://celo.org/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.celo.org#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Celo Docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Celo Docs","nav":{"global":{"anchors":[{"anchor":"Docs for AI","icon":"robot","href":"/build/agents/use-docs-with-ai"},{"anchor":"Organization","icon":"globe","href":"https://celo.org/"},{"anchor":"Support","icon":"bullhorn","href":"https://discord.com/invite/celo"},{"anchor":"Forum","icon":"newspaper","href":"https://forum.celo.org/"},{"anchor":"Faucet","icon":"faucet","href":"https://faucet.celo.org/celo-sepolia"},{"anchor":"FAQs","icon":"square-question","href":"https://docs.celo.org/operate/operators/faq"}]},"tabs":[{"tab":"Learn","groups":[{"group":"Introduction","pages":[{"title":"Celo","href":"/learn/celo"},{"title":"Discover Celo","sidebarTitle":"What is Celo?","href":"/learn/index"},{"title":"Our History","sidebarTitle":"History","href":"/learn/history"},{"title":"About Celo L1","sidebarTitle":"Celo L1","href":"/learn/celo-l1"}]},{"group":"Network","pages":[{"title":"Network Information","href":"/learn/network/overview"},{"title":"L2 Architecture","href":"/learn/network/architecture"}]},{"group":"Protocol","pages":[{"title":"Celo Protocol","sidebarTitle":"Overview","href":"/learn/protocol/index"},{"title":"Security Council","href":"/learn/protocol/security-council"},{"title":"CELO Token Duality","sidebarTitle":"CELO Token","href":"/learn/protocol/celo-token"},{"title":"Escrow","sidebarTitle":"Escrow","href":"/learn/protocol/escrow"},{"title":"Challengers","href":"/learn/protocol/challengers"},{"title":"Metadata and Claims","sidebarTitle":"Metadata","href":"/learn/protocol/metadata"}]},{"group":"Governance","pages":[{"title":"Celo Governance","sidebarTitle":"Overview","href":"/learn/protocol/governance/overview"},{"title":"Governance Toolkit","href":"/learn/protocol/governance/governance-toolkit"},{"title":"Create a Governance Proposal","href":"/learn/protocol/governance/create-governance-proposal"},{"title":"CeloCLI for Governance Proposals","sidebarTitle":"CeloCLI for Governance","href":"/learn/protocol/governance/voting-in-governance"},{"title":"Voting on Governance with Celo Mondo","sidebarTitle":"Vote with Celo Mondo","href":"/learn/protocol/governance/voting-in-governance-using-mondo"},{"title":"Governance Cheat Sheet","sidebarTitle":"Governable Parameters","href":"/learn/protocol/governance/governable-parameters"},{"title":"Smart Contract Upgradeability","sidebarTitle":"Smart Contracts Upgrades","href":"/learn/protocol/governance/smart-contracts-upgrades"}]},{"group":"Transactions","pages":[{"title":"Transactions on Celo","sidebarTitle":"Overview","href":"/learn/protocol/transactions/overview"},{"title":"Encrypted Payment Comments","sidebarTitle":"TX Comment Encryption","href":"/learn/protocol/transactions/tx-comment-encryption"},{"title":"Transaction Types on Celo","sidebarTitle":"Transaction Types","href":"/learn/protocol/transactions/transaction-types"}]},{"group":"Staking","pages":[{"title":"Staking","href":"/learn/protocol/staking/index"},{"title":"Locked CELO","href":"/learn/protocol/staking/locked-celo"},{"title":"Validator Elections","href":"/learn/protocol/staking/validator-elections"},{"title":"Validator Groups","href":"/learn/protocol/staking/validator-groups"},{"title":"Voting for Validator Groups","href":"/learn/protocol/staking/voting"},{"group":"Key Management","pages":[{"title":"Key Management","sidebarTitle":"Summary","href":"/learn/protocol/staking/key-management/summary"},{"title":"Detailed Role Descriptions","sidebarTitle":"Detailed Roles","description":"Each Celo account role in detail, with the celocli commands to designate accounts and authorize signers","href":"/learn/protocol/staking/key-management/detailed"},{"title":"Signer Key Rotation","sidebarTitle":"Key Rotation","href":"/learn/protocol/staking/key-management/key-rotation"}]}]},{"group":"Epoch Rewards","pages":[{"title":"L2 Epoch Rewards","sidebarTitle":"Overview","description":"Introduction to Celo epoch rewards on Celo.","href":"/learn/protocol/epoch-rewards/index"},{"title":"Community Fund","sidebarTitle":"Community Fund","href":"/learn/protocol/epoch-rewards/community-fund"},{"title":"Carbon Offsetting Fund","href":"/learn/protocol/epoch-rewards/carbon-offsetting-fund"}]},{"group":"Bridging","pages":[{"title":"Bridging to and from Celo","sidebarTitle":"Overview","href":"/learn/bridged-tokens/bridges"},{"title":"Bridging Native ETH to Celo","href":"/learn/bridged-tokens/native-ETH-bridging"},{"title":"Bridging CELO from Ethereum","href":"/learn/bridged-tokens/bridging-celo-from-ethereum"},{"title":"Withdrawing CELO to Ethereum","href":"/learn/bridged-tokens/withdrawing-celo-to-ethereum"}]},{"group":"Using CELO","pages":[{"title":"Wallets for users","href":"/learn/wallets"},{"title":"Exchanges on Celo","sidebarTitle":"Exchanges","href":"/learn/exchanges"},{"title":"Celo Global Ramps Ecosystem","sidebarTitle":"Ramps","href":"/learn/ramps"},{"title":"Getting CELO for Gas Fees","sidebarTitle":"Gas Fees","href":"/learn/gas-fees"},{"title":"Self-Custody CELO","sidebarTitle":"Self-Custody","href":"/learn/manage/self-custody"},{"title":"Understanding ReleaseGold","sidebarTitle":"Release Gold","href":"/learn/manage/release-gold"},{"title":"Asset Management","sidebarTitle":"Asset Management","href":"/learn/manage/asset"}]}]},{"tab":"Build","pages":[{"title":"Build","href":"/build"}]},{"tab":"Contribute","pages":[{"title":"Contribute","href":"/contribute"}]},{"tab":"Operate","pages":[{"title":"Operate","href":"/operate"}]}]},"title":"Signer Key Rotation - Celo Docs","buildId":"dpl_cadrRc5H9XQiJQbDFN5mcYRs2PAj","deploymentId":"dpl_cadrRc5H9XQiJQbDFN5mcYRs2PAj","dynamics":["10e4515597"],"chunks":["BannerMarkdown-Og7hgu7u.js","dist-BaREnp3o.js","lib--scc4DXi.js","lib-B8HbPgcC.js","clsx-CefdjKz2.js","html-void-elements-mCSPHezU.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js"]}