diff --git a/variants/esp32/esp32-common.ini b/variants/esp32/esp32-common.ini
index ea7d8d15c..669e6ed17 100644
--- a/variants/esp32/esp32-common.ini
+++ b/variants/esp32/esp32-common.ini
@@ -17,6 +17,9 @@ extra_scripts =
${env.extra_scripts}
pre:extra_scripts/esp32_pre.py
extra_scripts/esp32_extra.py
+ ; Spill long link commands into @response files. Big MUI/TFT images exceed the kernel's
+ ; exec arg limit ("sh: Argument list too long"; rak_wismesh_tap_v2-tft hit it first).
+ extra_scripts/ld_response_file.py
build_src_filter =
${arduino_base.build_src_filter} + - -
diff --git a/variants/esp32p4/esp32p4.ini b/variants/esp32p4/esp32p4.ini
index 5ad136806..8a284162d 100644
--- a/variants/esp32p4/esp32p4.ini
+++ b/variants/esp32p4/esp32p4.ini
@@ -15,9 +15,10 @@ build_flags =
build_src_filter =
${esp32_common.build_src_filter} - + - -
+; ld_response_file.py is inherited from esp32_common (promoted there when
+; rak_wismesh_tap_v2-tft outgrew the exec arg limit; it originally shipped here).
extra_scripts =
${esp32_common.extra_scripts}
- extra_scripts/ld_response_file.py
; Override esp32_common component pruning: keep esp_hosted + esp_wifi_remote for P4 hosted BT
custom_component_remove =