diff --git a/templates/validate-plan-apply.yml b/templates/validate-plan-apply.yml
index 04fdb4d0a3a85abe9f010bc81409ce4b7d32c50d..abf6c4f7bebc99168814fbd0daf8d4785ab08489 100644
--- a/templates/validate-plan-apply.yml
+++ b/templates/validate-plan-apply.yml
@@ -70,6 +70,9 @@ spec:
       description: 'Image digest of the image you want to use. The format must be `@<image_digest>`, e.g. `@sha256:abc..`, see regex of this input. Please consult the release page at https://gitlab.com/components/opentofu/-/releases to obtain the image digests.'
 
     # Configuration
+    job_name_prefix:
+      default: ''
+      description: 'Prefix for all job names. Jobs will be hidden if leading with a dot `.`.'
     root_dir:
       default: ${CI_PROJECT_DIR}
       description: 'Root directory for the OpenTofu project.'
@@ -89,7 +92,7 @@ spec:
 include:
   - local: '/templates/fmt.yml'
     inputs:
-      as: 'fmt'
+      as: '$[[ inputs.job_name_prefix ]]fmt'
       stage: $[[ inputs.stage_validate ]]
       version: $[[ inputs.version ]]
       base_os: $[[ inputs.base_os ]]
@@ -100,7 +103,7 @@ include:
       root_dir: $[[ inputs.root_dir ]]
   - local: '/templates/validate.yml'
     inputs:
-      as: 'validate'
+      as: '$[[ inputs.job_name_prefix ]]validate'
       stage: $[[ inputs.stage_validate ]]
       version: $[[ inputs.version ]]
       base_os: $[[ inputs.base_os ]]
@@ -112,7 +115,7 @@ include:
       state_name: $[[ inputs.state_name ]]
   - local: '/templates/plan.yml'
     inputs:
-      as: 'plan'
+      as: '$[[ inputs.job_name_prefix ]]plan'
       stage: $[[ inputs.stage_build ]]
       version: $[[ inputs.version ]]
       base_os: $[[ inputs.base_os ]]
@@ -125,7 +128,7 @@ include:
       artifacts_access: $[[ inputs.plan_artifacts_access ]]
   - local: '/templates/apply.yml'
     inputs:
-      as: 'apply'
+      as: '$[[ inputs.job_name_prefix ]]apply'
       stage: $[[ inputs.stage_deploy ]]
       version: $[[ inputs.version ]]
       base_os: $[[ inputs.base_os ]]
diff --git a/templates/validate-plan-destroy.yml b/templates/validate-plan-destroy.yml
index e1c0b2d03926e4fec80edad5aa30999f115e2dc0..28f304461c513bce86c33e13b08bfeba21273d68 100644
--- a/templates/validate-plan-destroy.yml
+++ b/templates/validate-plan-destroy.yml
@@ -70,6 +70,9 @@ spec:
       description: 'Image digest of the image you want to use. The format must be `@<image_digest>`, e.g. `@sha256:abc..`, see regex of this input. Please consult the release page at https://gitlab.com/components/opentofu/-/releases to obtain the image digests.'
 
     # Configuration
+    job_name_prefix:
+      default: ''
+      description: 'Prefix for all job names. Jobs will be hidden if leading with a dot `.`.'
     root_dir:
       default: ${CI_PROJECT_DIR}
       description: 'Root directory for the OpenTofu project.'
@@ -92,7 +95,7 @@ spec:
 include:
   - local: '/templates/fmt.yml'
     inputs:
-      as: 'fmt'
+      as: '$[[ inputs.job_name_prefix ]]fmt'
       stage: $[[ inputs.stage_validate ]]
       version: $[[ inputs.version ]]
       base_os: $[[ inputs.base_os ]]
@@ -103,7 +106,7 @@ include:
       root_dir: $[[ inputs.root_dir ]]
   - local: '/templates/validate.yml'
     inputs:
-      as: 'validate'
+      as: '$[[ inputs.job_name_prefix ]]validate'
       stage: $[[ inputs.stage_validate ]]
       version: $[[ inputs.version ]]
       base_os: $[[ inputs.base_os ]]
@@ -115,7 +118,7 @@ include:
       state_name: $[[ inputs.state_name ]]
   - local: '/templates/plan.yml'
     inputs:
-      as: 'plan'
+      as: '$[[ inputs.job_name_prefix ]]plan'
       stage: $[[ inputs.stage_build ]]
       version: $[[ inputs.version ]]
       base_os: $[[ inputs.base_os ]]
@@ -130,7 +133,7 @@ include:
       destroy: true
   - local: '/templates/destroy.yml'
     inputs:
-      as: 'destroy'
+      as: '$[[ inputs.job_name_prefix ]]destroy'
       stage: $[[ inputs.stage_cleanup ]]
       version: $[[ inputs.version ]]
       base_os: $[[ inputs.base_os ]]
@@ -145,7 +148,7 @@ include:
       auto_destroy: $[[ inputs.auto_destroy ]]
   - local: '/templates/delete-state.yml'
     inputs:
-      as: 'delete-state'
+      as: '$[[ inputs.job_name_prefix ]]delete-state'
       stage: $[[ inputs.stage_cleanup ]]
       state_name: $[[ inputs.state_name ]]
 
diff --git a/templates/validate-plan.yml b/templates/validate-plan.yml
index 709901f7340c5e96a0e89f790539f0975d8aab00..e3c30856239a14822323e862b675bfe911b55893 100644
--- a/templates/validate-plan.yml
+++ b/templates/validate-plan.yml
@@ -67,6 +67,9 @@ spec:
       description: 'Image digest of the image you want to use. The format must be `@<image_digest>`, e.g. `@sha256:abc..`, see regex of this input. Please consult the release page at https://gitlab.com/components/opentofu/-/releases to obtain the image digests.'
 
     # Configuration
+    job_name_prefix:
+      default: ''
+      description: 'Prefix for all job names. Jobs will be hidden if leading with a dot `.`.'
     root_dir:
       default: ${CI_PROJECT_DIR}
       description: 'Root directory for the OpenTofu project.'
@@ -82,7 +85,7 @@ spec:
 include:
   - local: '/templates/fmt.yml'
     inputs:
-      as: 'fmt'
+      as: '$[[ inputs.job_name_prefix ]]fmt'
       stage: $[[ inputs.stage_validate ]]
       version: $[[ inputs.version ]]
       base_os: $[[ inputs.base_os ]]
@@ -93,7 +96,7 @@ include:
       root_dir: $[[ inputs.root_dir ]]
   - local: '/templates/validate.yml'
     inputs:
-      as: 'validate'
+      as: '$[[ inputs.job_name_prefix ]]validate'
       stage: $[[ inputs.stage_validate ]]
       version: $[[ inputs.version ]]
       base_os: $[[ inputs.base_os ]]
@@ -105,7 +108,7 @@ include:
       state_name: $[[ inputs.state_name ]]
   - local: '/templates/plan.yml'
     inputs:
-      as: 'plan'
+      as: '$[[ inputs.job_name_prefix ]]plan'
       stage: $[[ inputs.stage_build ]]
       version: $[[ inputs.version ]]
       base_os: $[[ inputs.base_os ]]