# Custom headers when adding packages

**URL:** <https://discourse.julialang.org/t/custom-headers-when-adding-packages/105554>\
**Category:** Package Management\
**Created:** [October 30, 2023, 12:41am UTC](https://discourse.julialang.org/t/custom-headers-when-adding-packages/105554 "2023-10-30T00:41:29Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![huguesmp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/huguesmp/32/202444_2.png) [@huguesmp](https://discourse.julialang.org/u/huguesmp)\
**Post date:** [October 30, 2023, 12:41am UTC](https://discourse.julialang.org/t/custom-headers-when-adding-packages/105554/1 "2023-10-30T00:41:29Z")

</div>

Is there a way to specify headers for `Pkg` registry and package downloads?

My corporate proxy will only work with a specific User-Agent string. I tested it successfully with `Downloads.download` using the `headers` keyword-argument, but I am unsure how to specify with `Pkg`.

Maybe through environment variables? Any help appreciated.

---

<div class="post-metadata">

**Author:** ![jd-foster](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jd-foster/32/35824_2.png) [@jd-foster](https://discourse.julialang.org/u/jd-foster)\
**Post date:** [October 30, 2023, 11:51am UTC](https://discourse.julialang.org/t/custom-headers-when-adding-packages/105554/2 "2023-10-30T11:51:22Z")

</div>

Not sure but look into the functions in `Pkg.PlatformEngines`, like `handle_auth_error`?

---

<div class="post-metadata">

**Author:** ![jd-foster](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jd-foster/32/35824_2.png) [@jd-foster](https://discourse.julialang.org/u/jd-foster)\
**Post date:** [October 30, 2023, 12:32pm UTC](https://discourse.julialang.org/t/custom-headers-when-adding-packages/105554/3 "2023-10-30T12:32:37Z")

</div>

Also, this might be relevant: [Installing packages via an SSH SOCKS proxy on a compute cluster](https://discourse.julialang.org/t/installing-packages-via-an-ssh-socks-proxy-on-a-compute-cluster/71735)

---

<div class="post-metadata">

**Author:** ![huguesmp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/huguesmp/32/202444_2.png) [@huguesmp](https://discourse.julialang.org/u/huguesmp)\
**Post date:** [October 30, 2023, 11:18pm UTC](https://discourse.julialang.org/t/custom-headers-when-adding-packages/105554/4 "2023-10-30T23:18:12Z")

</div>

To make sure I understand, are you suggesting that I modify the `Pkg` source code and build Julia?

While perusing the code, I noticed that `Pkg.PlatformEngines.get_metadata_header` will pick up `ENV` variables that start with `JULIA_PKG_SERVER`. So I tried setting `JULIA_PKG_SERVER_USER_AGENT`, but it results in a `Julia-User-Agent` header, which is slightly off…

 ![image](https://global.discourse-cdn.com/julialang/original/3X/7/a/7a89dccbfb17a412e2cdfc9a1ae14152b171bda7.png)

---

<div class="post-metadata">

**Author:** ![jd-foster](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jd-foster/32/35824_2.png) [@jd-foster](https://discourse.julialang.org/u/jd-foster)\
**Post date:** [October 31, 2023, 12:43am UTC](https://discourse.julialang.org/t/custom-headers-when-adding-packages/105554/5 "2023-10-31T00:43:23Z")

</div>

I’m not saying I recommend this, or that it shouldn’t actually be addressed inside a library/package, but you could try to modify `Curl.USER_AGENT`:

```julia
julia> import Pkg.PlatformEngines.Downloads.Curl

julia> Curl.USER_AGENT
"curl/7.84.0 julia/1.9"

```
