diff --git a/docs/reference.md b/docs/reference.md
index 93bc0af..b6b4b78 100644
--- a/docs/reference.md
+++ b/docs/reference.md
@@ -109,10 +109,6 @@
     *   [cflags_objc: [string list] Flags passed to the Objective C compiler.](#var_cflags_objc)
     *   [cflags_objcc: [string list] Flags passed to the Objective C++ compiler.](#var_cflags_objcc)
     *   [check_includes: [boolean] Controls whether a target's files are checked.](#var_check_includes)
-    *   [code_signing_args: [string list] [deprecated] Args for the post-processing script.](#var_code_signing_args)
-    *   [code_signing_outputs: [file list] [deprecated] Outputs of the post-processing step.](#var_code_signing_outputs)
-    *   [code_signing_script: [file name] [deprecated] Script for the post-processing step.](#var_code_signing_script)
-    *   [code_signing_sources: [file list] [deprecated] Sources for the post-processing step.](#var_code_signing_sources)
     *   [complete_static_lib: [boolean] Links all deps into a static library.](#var_complete_static_lib)
     *   [configs: [label list] Configs applying to this target or config.](#var_configs)
     *   [contents: Contents to write to file.](#var_contents)
@@ -1775,15 +1771,6 @@
   rebased) and additional inputs may be listed via `post_processing_sources`.
 ```
 
-#### **Migration**
-
-```
-  The post-processing step used to be limited to code-signing. The properties
-  used to be named `code_signing_$name` instead of `post_processing_$name`. The
-  old names are still accepted as alias to facilitate migration but a warning
-  will be emitted and the alias eventually be removed.
-```
-
 #### **Variables**
 
 ```
@@ -5431,56 +5418,6 @@
     ...
   }
 ```
-### <a name="var_code_signing_args"></a>**code_signing_args**: [string list] [deprecated] Args for the post-processing script.&nbsp;[Back to Top](#gn-reference)
-
-```
-  For create_bundle targets, post_processing_args is the list of arguments to
-  pass to the post-processing script. Typically you would use source expansion
-  (see "gn help source_expansion") to insert the source file names.
-
-  Deprecated: this is an old name for the "post_processing_args" property of
-  the "create_bundle" target. It is still supported to avoid breaking existing
-  build rules, but a warning will be emitted when it is used.
-
-  See also "gn help create_bundle" and "gn help post_processing_args".
-```
-### <a name="var_code_signing_outputs"></a>**code_signing_outputs**: [file list] [deprecated] Outputs of the post-processing step.&nbsp;[Back to Top](#gn-reference)
-
-```
-  Outputs from the post-processing step of a create_bundle target. Must refer to
-  files in the build directory.
-
-  Deprecated: this is an old name for the "post_processing_outputs" property of
-  the "create_bundle" target. It is still supported to avoid breaking existing
-  build rules, but a warning will be emitted when it is used.
-
-  See also "gn help create_bundle" and "gn help post_processing_args".
-```
-### <a name="var_code_signing_script"></a>**code_signing_script**: [file name] [deprecated] Script for the post-processing step."&nbsp;[Back to Top](#gn-reference)
-
-```
-  An absolute or buildfile-relative file name of a Python script to run for a
-  create_bundle target to perform the post-processing step.
-
-  Deprecated: this is an old name for the "post_processing_script" property of
-  the "create_bundle" target. It is still supported to avoid breaking existing
-  build rules, but a warning will be emitted when it is used.
-
-  See also "gn help create_bundle" and "gn help post_processing_args".
-```
-### <a name="var_code_signing_sources"></a>**code_signing_sources**: [file list] [deprecated] Sources for the post-processing step.&nbsp;[Back to Top](#gn-reference)
-
-```
-  A list of files used as input for the post-processing step of a create_bundle
-  target. Non-absolute paths will be resolved relative to the current build
-  file.
-
-  Deprecated: this is an old name for the "post_processing_sources" property of
-  the "create_bundle" target. It is still supported to avoid breaking existing
-  build rules, but a warning will be emitted when it is used.
-
-  See also "gn help create_bundle" and "gn help post_processing_args".
-```
 ### <a name="var_complete_static_lib"></a>**complete_static_lib**: [boolean] Links all deps into a static library.&nbsp;[Back to Top](#gn-reference)
 
 ```
diff --git a/src/gn/create_bundle_target_generator.cc b/src/gn/create_bundle_target_generator.cc
index b12819e..516aa0a 100644
--- a/src/gn/create_bundle_target_generator.cc
+++ b/src/gn/create_bundle_target_generator.cc
@@ -18,34 +18,6 @@
 #include "gn/value_extractors.h"
 #include "gn/variables.h"
 
-namespace {
-
-// Retrieves value from `scope` named `name` or `old_name`. If the value comes
-// from the `old_name` a warning is emitted to inform the name is obsolete.
-const Value* GetValueFromScope(Scope* scope,
-                               std::string_view name,
-                               std::string_view old_name) {
-  const Value* value = scope->GetValue(name, true);
-  if (value)
-    return value;
-
-  value = scope->GetValue(old_name, true);
-  if (value) {
-    // If there is a value found with the old name, print a warning to the
-    // console and use that value. This is to avoid breaking the existing
-    // build rules in the wild.
-    Err err(*value, "Deprecated variable name",
-            base::StringPrintf(
-                "The name \"%s\" is deprecated, use \"%s\" instead.",
-                std::string(old_name).c_str(), std::string(name).c_str()));
-    err.PrintNonfatalToStdout();
-  }
-
-  return value;
-}
-
-}  // namespace
-
 CreateBundleTargetGenerator::CreateBundleTargetGenerator(
     Target* target,
     Scope* scope,
@@ -219,8 +191,7 @@
 }
 
 bool CreateBundleTargetGenerator::FillPostProcessingScript() {
-  const Value* value = GetValueFromScope(
-      scope_, variables::kPostProcessingScript, variables::kCodeSigningScript);
+  const Value* value = scope_->GetValue(variables::kPostProcessingScript, true);
   if (!value)
     return true;
 
@@ -238,8 +209,7 @@
 
 bool CreateBundleTargetGenerator::FillPostProcessingSources() {
   const Value* value =
-      GetValueFromScope(scope_, variables::kPostProcessingSources,
-                        variables::kCodeSigningSources);
+      scope_->GetValue(variables::kPostProcessingSources, true);
   if (!value)
     return true;
 
@@ -262,8 +232,7 @@
 
 bool CreateBundleTargetGenerator::FillPostProcessingOutputs() {
   const Value* value =
-      GetValueFromScope(scope_, variables::kPostProcessingOutputs,
-                        variables::kCodeSigningOutputs);
+      scope_->GetValue(variables::kPostProcessingOutputs, true);
   if (!value)
     return true;
 
@@ -300,8 +269,7 @@
 }
 
 bool CreateBundleTargetGenerator::FillPostProcessingArgs() {
-  const Value* value = GetValueFromScope(scope_, variables::kPostProcessingArgs,
-                                         variables::kCodeSigningArgs);
+  const Value* value = scope_->GetValue(variables::kPostProcessingArgs, true);
   if (!value)
     return true;
 
diff --git a/src/gn/functions_target.cc b/src/gn/functions_target.cc
index b12150f..819dc89 100644
--- a/src/gn/functions_target.cc
+++ b/src/gn/functions_target.cc
@@ -402,13 +402,6 @@
   `post_processing_args` will be passed as is to the script (so path have to be
   rebased) and additional inputs may be listed via `post_processing_sources`.
 
-Migration
-
-  The post-processing step used to be limited to code-signing. The properties
-  used to be named `code_signing_$name` instead of `post_processing_$name`. The
-  old names are still accepted as alias to facilitate migration but a warning
-  will be emitted and the alias eventually be removed.
-
 Variables
 
 )" DEPENDENT_CONFIG_VARS DEPS_VARS GENERAL_TARGET_VARS
diff --git a/src/gn/variables.cc b/src/gn/variables.cc
index 561c2bc..31b3b0d 100644
--- a/src/gn/variables.cc
+++ b/src/gn/variables.cc
@@ -870,77 +870,6 @@
   }
 )";
 
-const char kCodeSigningArgs[] = "code_signing_args";
-const char kCodeSigningArgs_HelpShort[] =
-    "code_signing_args: [string list] [deprecated] Args for the "
-    "post-processing script.";
-const char kCodeSigningArgs_Help[] =
-    R"(code_signing_args: [string list] [deprecated] Args for the post-processing script.
-
-  For create_bundle targets, post_processing_args is the list of arguments to
-  pass to the post-processing script. Typically you would use source expansion
-  (see "gn help source_expansion") to insert the source file names.
-
-  Deprecated: this is an old name for the "post_processing_args" property of
-  the "create_bundle" target. It is still supported to avoid breaking existing
-  build rules, but a warning will be emitted when it is used.
-
-  See also "gn help create_bundle" and "gn help post_processing_args".
-)";
-
-const char kCodeSigningOutputs[] = "code_signing_outputs";
-const char kCodeSigningOutputs_HelpShort[] =
-    "code_signing_outputs: [file list] [deprecated] Outputs of the "
-    "post-processing step.";
-const char kCodeSigningOutputs_Help[] =
-    R"(code_signing_outputs: [file list] [deprecated] Outputs of the post-processing step.
-
-  Outputs from the post-processing step of a create_bundle target. Must refer to
-  files in the build directory.
-
-  Deprecated: this is an old name for the "post_processing_outputs" property of
-  the "create_bundle" target. It is still supported to avoid breaking existing
-  build rules, but a warning will be emitted when it is used.
-
-  See also "gn help create_bundle" and "gn help post_processing_args".
-)";
-
-const char kCodeSigningScript[] = "code_signing_script";
-const char kCodeSigningScript_HelpShort[] =
-    "code_signing_script: [file name] [deprecated] Script for the "
-    "post-processing step.";
-const char kCodeSigningScript_Help[] =
-    R"(code_signing_script: [file name] [deprecated] Script for the post-processing step."
-
-  An absolute or buildfile-relative file name of a Python script to run for a
-  create_bundle target to perform the post-processing step.
-
-  Deprecated: this is an old name for the "post_processing_script" property of
-  the "create_bundle" target. It is still supported to avoid breaking existing
-  build rules, but a warning will be emitted when it is used.
-
-  See also "gn help create_bundle" and "gn help post_processing_args".
-)";
-
-const char kCodeSigningSources[] = "code_signing_sources";
-const char kCodeSigningSources_HelpShort[] =
-    "code_signing_sources: [file list] [deprecated] Sources for the "
-    "post-processing "
-    "step.";
-const char kCodeSigningSources_Help[] =
-    R"(code_signing_sources: [file list] [deprecated] Sources for the post-processing step.
-
-  A list of files used as input for the post-processing step of a create_bundle
-  target. Non-absolute paths will be resolved relative to the current build
-  file.
-
-  Deprecated: this is an old name for the "post_processing_sources" property of
-  the "create_bundle" target. It is still supported to avoid breaking existing
-  build rules, but a warning will be emitted when it is used.
-
-  See also "gn help create_bundle" and "gn help post_processing_args".
-)";
-
 const char kCompleteStaticLib[] = "complete_static_lib";
 const char kCompleteStaticLib_HelpShort[] =
     "complete_static_lib: [boolean] Links all deps into a static library.";
@@ -2468,10 +2397,6 @@
     INSERT_VARIABLE(CflagsObjC)
     INSERT_VARIABLE(CflagsObjCC)
     INSERT_VARIABLE(CheckIncludes)
-    INSERT_VARIABLE(CodeSigningArgs)
-    INSERT_VARIABLE(CodeSigningOutputs)
-    INSERT_VARIABLE(CodeSigningScript)
-    INSERT_VARIABLE(CodeSigningSources)
     INSERT_VARIABLE(CompleteStaticLib)
     INSERT_VARIABLE(Configs)
     INSERT_VARIABLE(Data)
diff --git a/src/gn/variables.h b/src/gn/variables.h
index 036b972..a9ed6c4 100644
--- a/src/gn/variables.h
+++ b/src/gn/variables.h
@@ -158,22 +158,6 @@
 extern const char kCheckIncludes_HelpShort[];
 extern const char kCheckIncludes_Help[];
 
-extern const char kCodeSigningArgs[];
-extern const char kCodeSigningArgs_HelpShort[];
-extern const char kCodeSigningArgs_Help[];
-
-extern const char kCodeSigningOutputs[];
-extern const char kCodeSigningOutputs_HelpShort[];
-extern const char kCodeSigningOutputs_Help[];
-
-extern const char kCodeSigningScript[];
-extern const char kCodeSigningScript_HelpShort[];
-extern const char kCodeSigningScript_Help[];
-
-extern const char kCodeSigningSources[];
-extern const char kCodeSigningSources_HelpShort[];
-extern const char kCodeSigningSources_Help[];
-
 extern const char kCompleteStaticLib[];
 extern const char kCompleteStaticLib_HelpShort[];
 extern const char kCompleteStaticLib_Help[];
