diff --git a/CHANGELOG.md b/CHANGELOG.md
index 31508f7a307..867cf08a8e3 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -20,6 +20,8 @@ Ansible Changes By Release
* Fix for win_copy when sourcing files from an SMBv1 share
(https://github.com/ansible/ansible/pull/33576)
* correctly report callback plugin file
+* restrict revaulting to vault cli
+ https://github.com/ansible/ansible/pull/33656
diff --git a/lib/ansible/cli/__init__.py b/lib/ansible/cli/__init__.py
index bee1e2554b0..9aef05e772e 100644
--- a/lib/ansible/cli/__init__.py
+++ b/lib/ansible/cli/__init__.py
@@ -413,7 +413,7 @@ class CLI(with_metaclass(ABCMeta, object)):
@staticmethod
def base_parser(usage="", output_opts=False, runas_opts=False, meta_opts=False, runtask_opts=False, vault_opts=False, module_opts=False,
async_opts=False, connect_opts=False, subset_opts=False, check_opts=False, inventory_opts=False, epilog=None, fork_opts=False,
- runas_prompt_opts=False, desc=None):
+ runas_prompt_opts=False, desc=None, vault_rekey_opts=False):
''' create an options parser for most ansible scripts '''
# base opts
@@ -446,10 +446,12 @@ class CLI(with_metaclass(ABCMeta, object)):
help='ask for vault password')
parser.add_option('--vault-password-file', default=[], dest='vault_password_files',
help="vault password file", action="callback", callback=CLI.unfrack_paths, type='string')
- parser.add_option('--new-vault-password-file', default=[], dest='new_vault_password_files',
- help="new vault password file for rekey", action="callback", callback=CLI.unfrack_paths, type='string')
parser.add_option('--vault-id', default=[], dest='vault_ids', action='append', type='string',
help='the vault identity to use')
+
+ if vault_rekey_opts:
+ parser.add_option('--new-vault-password-file', default=[], dest='new_vault_password_files',
+ help="new vault password file for rekey", action="callback", callback=CLI.unfrack_paths, type='string')
parser.add_option('--new-vault-id', default=None, dest='new_vault_id', type='string',
help='the new vault identity to use for rekey')
diff --git a/lib/ansible/cli/vault.py b/lib/ansible/cli/vault.py
index 29b5404974d..5b9667b6d61 100644
--- a/lib/ansible/cli/vault.py
+++ b/lib/ansible/cli/vault.py
@@ -110,6 +110,7 @@ class VaultCLI(CLI):
self.parser = CLI.base_parser(
vault_opts=True,
+ vault_rekey_opts=True,
usage="usage: %%prog [%s] [options] [vaultfile.yml]" % "|".join(self.VALID_ACTIONS),
desc="encryption/decryption utility for Ansible data files",
epilog="\nSee '%s --help' for more information on a specific command.\n\n" % os.path.basename(sys.argv[0])