diff --git a/.changeset/patch-validate-cross-repo-allowlist.md b/.changeset/patch-validate-cross-repo-allowlist.md
new file mode 100644
index 00000000000..656f06d4b66
--- /dev/null
+++ b/.changeset/patch-validate-cross-repo-allowlist.md
@@ -0,0 +1,5 @@
+---
+"gh-aw": patch
+---
+
+Add allowlist validation for the cross-repo helpers so `targetRepo` parameters and GH_AW_ALLOWED_REPOS checks now guard git and API work before any operations.
diff --git a/actions/setup/js/dynamic_checkout.cjs b/actions/setup/js/dynamic_checkout.cjs
index 8f420f2aaa6..f565bee902b 100644
--- a/actions/setup/js/dynamic_checkout.cjs
+++ b/actions/setup/js/dynamic_checkout.cjs
@@ -1,6 +1,9 @@
// @ts-check
///
+const { validateTargetRepo, parseAllowedRepos, getDefaultTargetRepo } = require("./repo_helpers.cjs");
+const { ERR_VALIDATION } = require("./error_codes.cjs");
+
/**
* Dynamic repository checkout utilities for multi-repo scenarios
* Enables switching between different repositories during handler execution
@@ -51,6 +54,7 @@ async function getCurrentCheckoutRepo() {
* @param {string} token - GitHub token for authentication
* @param {Object} options - Additional options
* @param {string} [options.baseBranch] - Base branch to checkout (defaults to 'main')
+ * @param {string[]|string} [options.allowedRepos] - Allowed repository patterns for allowlist validation
* @returns {Promise