diff --git a/src/tint/BUILD.gn b/src/tint/BUILD.gn
index 7ecf847..746f8eb 100644
--- a/src/tint/BUILD.gn
+++ b/src/tint/BUILD.gn
@@ -282,12 +282,6 @@
   public_configs = [ ":dxc-include-config" ]
 }
 
-source_set("dxcompiler-for-fuzzer") {
-  if (use_libfuzzer && target_cpu != "x86") {
-    public_deps = [ "${dawn_dxc_dir}/../gn/dxc:dxcompiler" ]
-  }
-}
-
 ###############################################################################
 # Fuzzers
 ###############################################################################
diff --git a/src/tint/CMakeLists.txt b/src/tint/CMakeLists.txt
index ac4d4b0..3a59059 100644
--- a/src/tint/CMakeLists.txt
+++ b/src/tint/CMakeLists.txt
@@ -524,10 +524,6 @@
       target_link_libraries(${TARGET} PRIVATE ${CMAKE_DL_LIBS})
     elseif(${DEPENDENCY} STREQUAL "dxc-include")
       target_include_directories(${TARGET} PRIVATE "${DAWN_THIRD_PARTY_DIR}/dxc/include")
-    elseif(${DEPENDENCY} STREQUAL "dxcompiler-for-fuzzer")
-      if(TINT_BUILD_FUZZERS) # TODO: and target arch is not x86
-        target_link_libraries(${TARGET} PRIVATE dxcompiler)
-      endif()
     elseif(${DEPENDENCY} STREQUAL "jsoncpp")
       target_link_libraries(${TARGET} PRIVATE jsoncpp_static)
     elseif(${DEPENDENCY} STREQUAL "langsvr")
diff --git a/src/tint/cmd/fuzz/wgsl/BUILD.cfg b/src/tint/cmd/fuzz/wgsl/BUILD.cfg
index 2e2d939..de92f71 100644
--- a/src/tint/cmd/fuzz/wgsl/BUILD.cfg
+++ b/src/tint/cmd/fuzz/wgsl/BUILD.cfg
@@ -5,8 +5,7 @@
         "OutputName": "tint_wgsl_fuzzer",
         "AdditionalDependencies": {
             /* Depend on all the fuzz targets to pull them all together. */
-            "Internal": [ "**:fuzz" ],
-            "External": ["dxcompiler-for-fuzzer"],
+            "Internal": [ "**:fuzz" ]
         }
     }
 }
diff --git a/src/tint/cmd/fuzz/wgsl/BUILD.cmake b/src/tint/cmd/fuzz/wgsl/BUILD.cmake
index aeb77bb..350a170 100644
--- a/src/tint/cmd/fuzz/wgsl/BUILD.cmake
+++ b/src/tint/cmd/fuzz/wgsl/BUILD.cmake
@@ -59,7 +59,6 @@
   tint_lang_wgsl_fuzz
   tint_utils_bytes
   tint_utils_cli
-  tint_utils_command
   tint_utils_containers
   tint_utils_diagnostic
   tint_utils_ice
@@ -84,12 +83,8 @@
 
 if(TINT_BUILD_HLSL_WRITER)
   tint_target_add_dependencies(tint_cmd_fuzz_wgsl_fuzz_cmd fuzz_cmd
-    tint_lang_hlsl_validate
     tint_lang_hlsl_writer_fuzz
   )
-  tint_target_add_external_dependencies(tint_cmd_fuzz_wgsl_fuzz_cmd fuzz_cmd
-    "dxcompiler-for-fuzzer"
-  )
 endif(TINT_BUILD_HLSL_WRITER)
 
 if(TINT_BUILD_IR_BINARY)
diff --git a/src/tint/cmd/fuzz/wgsl/BUILD.gn b/src/tint/cmd/fuzz/wgsl/BUILD.gn
index a060109..89d7ea9 100644
--- a/src/tint/cmd/fuzz/wgsl/BUILD.gn
+++ b/src/tint/cmd/fuzz/wgsl/BUILD.gn
@@ -101,7 +101,6 @@
       "${tint_src_dir}/lang/wgsl/writer/raise:fuzz",
       "${tint_src_dir}/utils/bytes",
       "${tint_src_dir}/utils/cli",
-      "${tint_src_dir}/utils/command",
       "${tint_src_dir}/utils/containers",
       "${tint_src_dir}/utils/diagnostic",
       "${tint_src_dir}/utils/ice",
@@ -123,11 +122,7 @@
     }
 
     if (tint_build_hlsl_writer) {
-      deps += [
-        "${tint_src_dir}:dxcompiler-for-fuzzer",
-        "${tint_src_dir}/lang/hlsl/validate",
-        "${tint_src_dir}/lang/hlsl/writer:fuzz",
-      ]
+      deps += [ "${tint_src_dir}/lang/hlsl/writer:fuzz" ]
     }
 
     if (tint_build_ir_binary) {
diff --git a/src/tint/cmd/fuzz/wgsl/main_fuzz.cc b/src/tint/cmd/fuzz/wgsl/main_fuzz.cc
index 3e9be54..733190d 100644
--- a/src/tint/cmd/fuzz/wgsl/main_fuzz.cc
+++ b/src/tint/cmd/fuzz/wgsl/main_fuzz.cc
@@ -31,48 +31,13 @@
 
 #include "src/tint/cmd/fuzz/wgsl/fuzz.h"
 #include "src/tint/utils/cli/cli.h"
-#include "src/tint/utils/command/command.h"
 #include "src/tint/utils/macros/defer.h"
 #include "src/tint/utils/text/base64.h"
-#include "src/tint/utils/text/string.h"
-
-#if TINT_BUILD_HLSL_WRITER
-#include "src/tint/lang/hlsl/validate/validate.h"
-#endif
 
 namespace {
 
 tint::fuzz::wgsl::Options options;
 
-std::string get_default_dxc_path(char*** argv) {
-    std::string default_dxc_path = "";
-#if TINT_BUILD_HLSL_WRITER
-    // Assume the DXC library is in the same directory as this executable
-    std::string exe_path = (*argv)[0];
-    exe_path = tint::ReplaceAll(exe_path, "\\", "/");
-    auto pos = exe_path.rfind('/');
-    if (pos != std::string::npos) {
-        default_dxc_path = exe_path.substr(0, pos) + '/' + tint::hlsl::validate::kDxcDLLName;
-    } else {
-        // argv[0] doesn't contain path to exe, try relative to cwd
-        default_dxc_path = tint::hlsl::validate::kDxcDLLName;
-    }
-#endif
-    return default_dxc_path;
-}
-
-void print_dxc_path_found(const std::string& dxc_path) {
-#if TINT_BUILD_HLSL_WRITER
-    // Log whether the DXC library was found or not once at initialization.
-    auto dxc = tint::Command::LookPath(dxc_path);
-    if (dxc.Found()) {
-        std::cout << "DXC library found: " << dxc.Path() << std::endl;
-    } else {
-        std::cout << "DXC library not found: " << dxc_path << std::endl;
-    }
-#endif
-}
-
 }  // namespace
 
 extern "C" int LLVMFuzzerTestOneInput(const uint8_t* input, size_t size) {
@@ -129,12 +94,9 @@
         return 0;
     }
 
-    // Read optional user-supplied args or use default provided
     options.filter = opt_filter.value.value_or("");
     options.run_concurrently = opt_concurrent.value.value_or(false);
     options.verbose = opt_verbose.value.value_or(false);
-    options.dxc = opt_dxc.value.value_or(get_default_dxc_path(argv));
-
-    print_dxc_path_found(options.dxc);
+    options.dxc = opt_dxc.value.value_or("");
     return 0;
 }
diff --git a/src/tint/externals.json b/src/tint/externals.json
index 52150c0..1745609 100644
--- a/src/tint/externals.json
+++ b/src/tint/externals.json
@@ -20,9 +20,6 @@
         ],
         "Condition": "tint_build_hlsl_writer"
     },
-    "dxcompiler-for-fuzzer": {
-        "Condition": "tint_build_hlsl_writer"
-    },
     "google-benchmark": {
         "IncludePatterns": [
             "benchmark/benchmark.h"
diff --git a/tools/src/cmd/gen/build/BUILD.bazel.tmpl b/tools/src/cmd/gen/build/BUILD.bazel.tmpl
index 939ec4c..8432d76 100644
--- a/tools/src/cmd/gen/build/BUILD.bazel.tmpl
+++ b/tools/src/cmd/gen/build/BUILD.bazel.tmpl
@@ -140,24 +140,23 @@
 --------------------------------------------------------------------------------
 */ -}}
 {{- define "ExternalDependencyTarget"}}
-{{-        if eq $.Name "abseil"                -}}"@abseil_cpp//absl/strings",
-{{-   else if eq $.Name "dl"                    -}}{{/* unsupported */}}
-{{-   else if eq $.Name "dxc-include"           -}}{{/* unsupported */}}
-{{-   else if eq $.Name "dxcompiler-for-fuzzer" -}}{{/* unsupported */}}
-{{-   else if eq $.Name "glslang-res-limits"    -}}{{/* unsupported */}}
-{{-   else if eq $.Name "glslang"               -}}{{/* unsupported */}}
-{{-   else if eq $.Name "gmock"                 -}}"@gtest",
-{{-   else if eq $.Name "google-benchmark"      -}}"@benchmark",
-{{-   else if eq $.Name "gtest"                 -}}"@gtest",
-{{-   else if eq $.Name "jsoncpp"               -}}{{/* unsupported */}}
-{{-   else if eq $.Name "langsvr"               -}}{{/* unsupported */}}
-{{-   else if eq $.Name "metal"                 -}}{{/* unsupported */}}
-{{-   else if eq $.Name "spirv-headers"         -}}"@spirv_headers//:spirv_cpp11_headers", "@spirv_headers//:spirv_c_headers",
-{{-   else if eq $.Name "spirv-opt-internal"    -}}"@spirv_tools//:spirv_tools_opt",
-{{-   else if eq $.Name "spirv-tools"           -}}"@spirv_tools",
-{{-   else if eq $.Name "thread"                -}}{{/* unsupported */}}
-{{-   else if eq $.Name "winsock"               -}}{{/* unsupported */}}
-{{-   else                                      -}}{{Error (printf "unhandled external dependency '%v'" $.Name)}}
+{{-        if eq $.Name "abseil"             -}}"@abseil_cpp//absl/strings",
+{{-   else if eq $.Name "dl"                 -}}{{/* unsupported */}}
+{{-   else if eq $.Name "dxc-include"        -}}{{/* unsupported */}}
+{{-   else if eq $.Name "glslang-res-limits" -}}{{/* unsupported */}}
+{{-   else if eq $.Name "glslang"            -}}{{/* unsupported */}}
+{{-   else if eq $.Name "gmock"              -}}"@gtest",
+{{-   else if eq $.Name "google-benchmark"   -}}"@benchmark",
+{{-   else if eq $.Name "gtest"              -}}"@gtest",
+{{-   else if eq $.Name "jsoncpp"            -}}{{/* unsupported */}}
+{{-   else if eq $.Name "langsvr"            -}}{{/* unsupported */}}
+{{-   else if eq $.Name "metal"              -}}{{/* unsupported */}}
+{{-   else if eq $.Name "spirv-headers"      -}}"@spirv_headers//:spirv_cpp11_headers", "@spirv_headers//:spirv_c_headers",
+{{-   else if eq $.Name "spirv-opt-internal" -}}"@spirv_tools//:spirv_tools_opt",
+{{-   else if eq $.Name "spirv-tools"        -}}"@spirv_tools",
+{{-   else if eq $.Name "thread"             -}}{{/* unsupported */}}
+{{-   else if eq $.Name "winsock"            -}}{{/* unsupported */}}
+{{-   else                                   -}}{{Error (printf "unhandled external dependency '%v'" $.Name)}}
 {{-   end}}
 {{- end}}
 
diff --git a/tools/src/cmd/gen/build/BUILD.gn.tmpl b/tools/src/cmd/gen/build/BUILD.gn.tmpl
index a5c308f..47d25be 100644
--- a/tools/src/cmd/gen/build/BUILD.gn.tmpl
+++ b/tools/src/cmd/gen/build/BUILD.gn.tmpl
@@ -164,24 +164,23 @@
 --------------------------------------------------------------------------------
 */ -}}
 {{- define "ExternalDependencyTargets"}}
-{{-        if eq $.Name "abseil"                -}}"${tint_src_dir}:abseil",
-{{-   else if eq $.Name "dl"                    -}}"${tint_src_dir}:dl",
-{{-   else if eq $.Name "dxc-include"           -}}"${tint_src_dir}:dxc-include",
-{{-   else if eq $.Name "dxcompiler-for-fuzzer" -}}"${tint_src_dir}:dxcompiler-for-fuzzer",
-{{-   else if eq $.Name "glslang-res-limits"    -}}"${tint_glslang_dir}:glslang_default_resource_limits_sources",
-{{-   else if eq $.Name "glslang"               -}}"${tint_glslang_dir}:glslang_lib_sources",
-{{-   else if eq $.Name "google-benchmark"      -}}"${tint_src_dir}:google_benchmark",
-{{-   else if eq $.Name "gtest"                 -}}"${tint_src_dir}:gmock_and_gtest",
-{{-   else if eq $.Name "jsoncpp"               -}}"${tint_src_dir}:jsoncpp",
-{{-   else if eq $.Name "langsvr"               -}}"${tint_src_dir}:langsvr",
-{{-   else if eq $.Name "libprotobuf-mutator"   -}}"${tint_lpm_dir}:libprotobuf-mutator",
-{{-   else if eq $.Name "metal"                 -}}"${tint_src_dir}:metal",
-{{-   else if eq $.Name "spirv-headers"         -}}"${tint_spirv_headers_dir}:spv_headers",
-{{-   else if eq $.Name "spirv-opt-internal"    -}}"${tint_spirv_tools_dir}:spvtools", "${tint_spirv_tools_dir}:spvtools_opt", "${tint_spirv_tools_dir}:spvtools_val",
-{{-   else if eq $.Name "spirv-tools"           -}}"${tint_spirv_tools_dir}:spvtools_headers", "${tint_spirv_tools_dir}:spvtools_val",
-{{-   else if eq $.Name "thread"                -}}"${tint_src_dir}:thread",
-{{-   else if eq $.Name "winsock"               -}}"${tint_src_dir}:winsock",
-{{-   else                                      -}}{{Error (printf "unhandled external dependency '%v'" $.Name)}}
+{{-        if eq $.Name "abseil"               -}}"${tint_src_dir}:abseil",
+{{-   else if eq $.Name "dl"                   -}}"${tint_src_dir}:dl",
+{{-   else if eq $.Name "dxc-include"          -}}"${tint_src_dir}:dxc-include",
+{{-   else if eq $.Name "glslang-res-limits"   -}}"${tint_glslang_dir}:glslang_default_resource_limits_sources",
+{{-   else if eq $.Name "glslang"              -}}"${tint_glslang_dir}:glslang_lib_sources",
+{{-   else if eq $.Name "google-benchmark"     -}}"${tint_src_dir}:google_benchmark",
+{{-   else if eq $.Name "gtest"                -}}"${tint_src_dir}:gmock_and_gtest",
+{{-   else if eq $.Name "jsoncpp"              -}}"${tint_src_dir}:jsoncpp",
+{{-   else if eq $.Name "langsvr"              -}}"${tint_src_dir}:langsvr",
+{{-   else if eq $.Name "libprotobuf-mutator"  -}}"${tint_lpm_dir}:libprotobuf-mutator",
+{{-   else if eq $.Name "metal"                -}}"${tint_src_dir}:metal",
+{{-   else if eq $.Name "spirv-headers"        -}}"${tint_spirv_headers_dir}:spv_headers",
+{{-   else if eq $.Name "spirv-opt-internal"   -}}"${tint_spirv_tools_dir}:spvtools", "${tint_spirv_tools_dir}:spvtools_opt", "${tint_spirv_tools_dir}:spvtools_val",
+{{-   else if eq $.Name "spirv-tools"          -}}"${tint_spirv_tools_dir}:spvtools_headers", "${tint_spirv_tools_dir}:spvtools_val",
+{{-   else if eq $.Name "thread"               -}}"${tint_src_dir}:thread",
+{{-   else if eq $.Name "winsock"              -}}"${tint_src_dir}:winsock",
+{{-   else                                     -}}{{Error (printf "unhandled external dependency '%v'" $.Name)}}
 {{-   end}}
 {{- end}}
 
