Process uses symlink despite hard link specified with publishDir mode

I have a simple process that stages a remote reference genome:

process StageGenomeReference {
    publishDir "resources",
               saveAs: it,
               mode: "link"

    input:
    tuple path(uri)

    output:
    tuple path(uri)

    shell:
    ":"
}

workflow {
channel.of(["https://www.encodeproject.org/files/GRCh38_no_alt_analysis_set_GCA_000001405.15/@@download/GRCh38_no_alt_analysis_set_GCA_000001405.15.fasta.gz"])
}

I believe that in the past, it was staging the file as a hard link, which is what the other processes in my pipeline do when mode: “link” is specified. However, the file here is being published with a symlink instead. I’m wondering if that might have something to do with the file being staged from a remote location, since this is the only process in the pipeline that has this issue and the only one that has this issue?