diff --git a/core/src/main/java/google/registry/module/tools/ToolsRequestComponent.java b/core/src/main/java/google/registry/module/tools/ToolsRequestComponent.java
index db56afcd0..e8c819f03 100644
--- a/core/src/main/java/google/registry/module/tools/ToolsRequestComponent.java
+++ b/core/src/main/java/google/registry/module/tools/ToolsRequestComponent.java
@@ -31,7 +31,6 @@ import google.registry.request.RequestModule;
import google.registry.request.RequestScope;
import google.registry.tools.server.CreateGroupsAction;
import google.registry.tools.server.CreatePremiumListAction;
-import google.registry.tools.server.DeleteEntityAction;
import google.registry.tools.server.GenerateZoneFilesAction;
import google.registry.tools.server.KillAllCommitLogsAction;
import google.registry.tools.server.KillAllEppResourcesAction;
@@ -63,7 +62,6 @@ import google.registry.tools.server.VerifyOteAction;
interface ToolsRequestComponent {
CreateGroupsAction createGroupsAction();
CreatePremiumListAction createPremiumListAction();
- DeleteEntityAction deleteEntityAction();
EppToolAction eppToolAction();
FlowComponent.Builder flowComponentBuilder();
GenerateZoneFilesAction generateZoneFilesAction();
diff --git a/core/src/main/java/google/registry/tools/server/DeleteEntityAction.java b/core/src/main/java/google/registry/tools/server/DeleteEntityAction.java
deleted file mode 100644
index 9f8c6807f..000000000
--- a/core/src/main/java/google/registry/tools/server/DeleteEntityAction.java
+++ /dev/null
@@ -1,129 +0,0 @@
-// Copyright 2017 The Nomulus Authors. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package google.registry.tools.server;
-
-import static com.google.appengine.api.datastore.DatastoreServiceFactory.getDatastoreService;
-import static com.googlecode.objectify.Key.create;
-import static google.registry.model.ofy.ObjectifyService.auditedOfy;
-import static google.registry.persistence.transaction.TransactionManagerFactory.tm;
-
-import com.google.appengine.api.datastore.Entity;
-import com.google.appengine.api.datastore.EntityNotFoundException;
-import com.google.appengine.api.datastore.Key;
-import com.google.appengine.api.datastore.KeyFactory;
-import com.google.common.base.Splitter;
-import com.google.common.collect.ImmutableList;
-import com.google.common.flogger.FluentLogger;
-import com.googlecode.objectify.impl.EntityMetadata;
-import google.registry.request.Action;
-import google.registry.request.HttpException.BadRequestException;
-import google.registry.request.Parameter;
-import google.registry.request.Response;
-import google.registry.request.auth.Auth;
-import java.util.Optional;
-import javax.inject.Inject;
-
-/**
- * An action to delete entities in Datastore specified by raw key ids, which can be found in
- * Datastore Viewer in the AppEngine console - it's the really long alphanumeric key that is labeled
- * "Entity key" on the page for an individual entity.
- *
- *
rawKeys is the only required parameter. It is a comma-delimited list of Strings.
- *
- *
WARNING: This servlet can be dangerous if used incorrectly as it can bypass checks on
- * deletion (including whether the entity is referenced by other entities) and it does not write
- * commit log entries for non-registered types. It should mainly be used for deleting testing or
- * malformed data that cannot be properly deleted using existing tools. Generally, if there already
- * exists an entity-specific deletion command, then use that one instead.
- */
-@Action(
- service = Action.Service.TOOLS,
- path = DeleteEntityAction.PATH,
- auth = Auth.AUTH_INTERNAL_OR_ADMIN)
-public class DeleteEntityAction implements Runnable {
-
- private static final FluentLogger logger = FluentLogger.forEnclosingClass();
-
- public static final String PATH = "/_dr/admin/deleteEntity";
- public static final String PARAM_RAW_KEYS = "rawKeys";
-
- private final String rawKeys;
- private final Response response;
-
- @Inject
- DeleteEntityAction(@Parameter(PARAM_RAW_KEYS) String rawKeys, Response response) {
- this.rawKeys = rawKeys;
- this.response = response;
- }
-
- @Override
- public void run() {
- // Get raw key strings from request
- ImmutableList.Builder