Upload Artifact URL not respecting baseHref

Author: kmcrawfordCreated Sep 30, 2026Updated Sep 30, 2026

Pre-requisites

  • I have double-checked my configuration
  • I have tested with the :latest image tag (i.e. quay.io/argoproj/workflow-controller:latest) and can confirm the issue still exists on :latest. If not, I have explained why, in detail, in my description below.
  • I have searched existing issues and could not find a match for this bug
  • I'd like to contribute the fix myself (see contributing guide)

What happened? What did you expect to happen?

This line of code: xhr.open('POST', `/upload-artifacts/${encodeURIComponent(namespace)}/${encodeURIComponent(workflowTemplateName)}/${encodeURIComponent(artifactName)}`); Is missing the baseHRef configured in my server config https://github.com/argoproj/argo-workflows/blob/main/ui/src/shared/components/artifacts-input/artifacts-input.tsx#L78

Version(s)

v4.1.4

Paste a minimal workflow that reproduces the issue. We must be able to run the workflow; don't enter a workflow that uses private images.

yaml
Server config:

server:
  replicas: 3
  resources:
    limits:
      cpu: 100m
      memory: 200Mi
    requests:
      cpu: 20m
      memory: 150Mi
  baseHref: /argo/
  rbac:
    create: true
  serviceAccount:
    create: true
  extraArgs:
    - --base-href=/argo/
    - --x-frame-options=ALLOW


apiVersion: v1
kind: Secret
metadata:
  name: s3-creds
  namespace: argo
type: Opaque
stringData:
  accessKey: AKI**********
  secretKey: s9K**********
--
apiVersion: argoproj.io/v1alpha1
kind: WorkflowTemplate
metadata:
  name: my-template
  namespace: argo
spec:
  entrypoint: argosay
  arguments:
    artifacts:
      - name: my-uploaded-file
        s3:
          endpoint: s3.amazonaws.com
          region: us-east-1
          bucket: my-bucket
          key: input-file/placeholder.zip  # overridden per-submit via the upload endpoint
          accessKeySecret:
            name: s3-creds
            key: accessKey
          secretKeySecret:
            name: s3-creds
            key: secretKey
  templates:
    - name: argosay
      inputs:
        artifacts:
          - name: my-uploaded-file
            path: /tmp/input-file
      container:
        image: alpine:latest
        command: [cat]
        args: ["/tmp/input-file"]

Logs from the workflow controller

no logs just a 404 in my browser

Logs from in your workflow's wait container

no logs just a 404 in my browser