Log in to your harness - The Modern Software Delivery Platform® account to give feedback

Feature Requests

Anonymous

Feature Requests for Harness. Select 'Category' based on the module you are requesting the feature for.
Support Account-Level Pod Spec Overlay Configuration for IaCM Kubernetes Execution Pods
Use Case Customers running IaCM pipelines with KubernetesDirect infrastructure need to apply Kubernetes pod-level settings consistently to the build execution pods created for Terraform operations such as Plan and Apply. For example, the customer needs to configure: spec: terminationGracePeriodSeconds: 600 tolerations: - key: "<key>" operator: "Equal" value: "<value>" effect: "NoSchedule" IaCM currently supports podSpecOverlay when it is configured directly on the individual IaCM stage through pipeline YAML: infrastructure: type: KubernetesDirect spec: connectorRef: <connector> namespace: <namespace> podSpecOverlay: |- spec: terminationGracePeriodSeconds: 600 tolerations: - key: "<key>" operator: "Equal" value: "<value>" effect: "NoSchedule" Current Gap We do not want to configure this separately in every IaCM pipeline/stage. For CI, customers can configure a default Pod Spec Overlay centrally under: Account Settings → Default Settings → Pod Spec Overlay We would like equivalent functionality for IaCM so that Kubernetes pod configuration can be defined once at the account level and automatically inherited by temporary IaCM execution pods. Requested Enhancement Add an account-level/default Pod Spec Overlay configuration for IaCM, similar to the existing CI capability. Ideally, customers should be able to define an IaCM Pod Spec Overlay under account settings and have it automatically applied to IaCM KubernetesDirect execution pods, while still allowing stage-level configuration/overrides where appropriate.
0
·
IACM
Support Harness Cloud runtime for IACMAnsiblePlugin step type
What: The IACMAnsiblePlugin step type only works with KubernetesDirect infrastructure (K8s delegate). It should also support Harness Cloud runtime, the same way IACMTerraformPlugin does. Current behavior: When you configure an IACM stage with IACMAnsiblePlugin using Cloud runtime (platform: Linux/Amd64, runtime: {type: Cloud}), the step fails immediately with "exit status 1" and no actionable error message. No logs, no explanation — just a silent failure. Expected behavior: The plugin should execute the playbook against reachable hosts (public IP, SSH open) from Cloud runtime, or at minimum return a clear error explaining why Cloud runtime is not supported. Why this matters: IACMTerraformPlugin already works on Cloud runtime — there's no reason the Ansible plugin shouldn't have parity. Many demo and dev environments have publicly reachable hosts. Requiring a persistent K8s delegate just to run Ansible adds infrastructure cost and complexity that isn't necessary when targets are reachable over the internet. The current workaround (Run steps with shell-scripted ansible) works but bypasses the native IaCM Ansible integration — no registered playbooks, no registered inventories, no visibility in the Harness UI. Reproduction steps: Create an IACM workspace with a registered playbook and inventory Create a pipeline with an IACM stage using Cloud runtime Add an IACMAnsiblePlugin step with command: run Execute — fails with exit status 1, no logs Environment: Harness SaaS, IaCM module, August 2026
0
·
IACM
Per-step federated identity across all step types, with scoped ephemeral credentials
Extend HarnessID so that every pipeline step receives its own uniquely-claimed, short-lived JWT, and provide a supported mechanism to inject that JWT into a credential-minting service that exchanges it for an ephemeral, least-privilege credential scoped to exactly what that step needs (e.g., a Kubernetes token valid only for a single namespace, for the duration of the step). Problem Statement Insufficient process isolation on the delegate Harness delegates today execute pipeline steps within a shared execution context. Steps running natively on a delegate execute as separate JVM threads inside the same process, so serial and parallel executions share process state. Any misconfiguration, vulnerability, or inappropriate use of local resources can affect the security of other pipeline executions and deployments running on the same delegate. This risk is amplified by Harness capabilities that permit developer-authored inline code (shell/script steps) to run inside the delegate's context. Abuse of these features creates a credible privilege-escalation and confused-deputy path. Credentials are broader than the task requires Because credentials are resolved at the connector/delegate level rather than the step level, a step inherits the full entitlement of the connector or delegate identity — not the entitlement the individual task actually needs. A drift-detection step and a production-apply step reusing the same connector present identical identities to the cloud provider, so the trust policy must be written to the widest common denominator. Fragmented OIDC today Per the current design, OIDC is implemented per connector (AWS, GCP, Azure, Vault each with their own code path, token shape, and signing key), is unsupported for several connector types, and has no path at all outside a connector — meaning custom shell and container steps fall back to long-lived static secrets, defeating the purpose of federation. Requested Capability Per-step identity by default — Every step execution is issued its own JWT from HarnessID, with a distinct sub derived from account / org / project / pipeline / stage / step / execution ID. No two steps share a token. Configurable claims and subject template — Support subjectTemplate and customClaims declared at pipeline, stage, and step level, with closer-to-step precedence. Base claims (account, org, project, pipeline, execution) must be platform-stamped and non-overridable. Native (connector-less) identity — Allow YAML to declare named identities that surface as environment variables inside the step container, so custom shell/container steps can federate without a connector and without stored secrets. Token exchange for ephemeral scoped credentials — Provide a documented, supported flow to present the step JWT to a minting service (Kubernetes API, HashiCorp Vault, AWS STS, GCP STS, Azure AD) and receive a credential scoped to exactly that step's target — e.g., a namespace-bound Kubernetes ServiceAccount token, TTL bounded by step duration. Scope and suppression controls — scope: STEP must guarantee the token is present only in the declaring step's container environment, never pod-wide. disabled: true must suppress an inherited identity so, for example, third-party scan steps never see a Vault token. Mint-time abuse prevention — HarnessID must structurally validate the requested sub against the workload token's execution context to close cross-project/cross-account impersonation, and must strip and audit any attempt to set reserved claims via customClaims. Step-level containerization — Complete and make generally available the roadmap item to execute all delegate-native steps in ephemeral, isolated containers, so the identity boundary and the process boundary align. Steps in the same stage may share a context only where entitlement requirements are identical; separate pipelines must never share one. Unified audit trail — A single audit stream across all connectors and native identities, recording the requested subject, resolved claims, audience, and any validation failure with a claim diff. Optional Enhancement (Future Consideration) Multiple identities per step — Support a map of named identities per step, each with its own audience, subject, and claims, so a single step could authenticate to Kubernetes, Vault, and a registry with three independent, separately-scoped tokens. This is not required for the initial delivery; a single scoped identity per step satisfies the security finding. We would like this on the roadmap for future multi-cloud and multi-target step patterns Concrete Target Scenario A deployment stage targeting namespace payments-prod: 1) Step run_migrations is issued a JWT with sub = account:abc:pipeline:deploy:stage:deploy_prod_eu:step:run_migrations. 2) That JWT is presented to the cluster's OIDC-federated token minting endpoint. 3) The cluster returns a token bound to a RoleBinding permitting only apps/deployments and batch/jobs in payments-prod, with a TTL of 10 minutes. 4) The next step, rolling_deploy, receives a different JWT and a different minted credential with a different RoleBinding. 5) Neither token exists after the step container exits, and neither is visible to the other step or to any other pipeline on the delegate.
0
·
General Platform Requests
Load More