History...
Started with the Core 2026.5.0 to 2026.5.1 update. GUI update fails just at the start of the % install. Tried several things with assistance of forums and AI but did not resolve. Then Supervisor 2026.5.0 update was released and Core stated must install Supervisor first. Supervisor update 2026.5.0 failed similar to Core and again with assistance still was unable to get Supervisor to update. Worked with user on Discord and was able to get Supervisor to update to 2026.5.0. The step that made the update succeed was to reset HA Green and then load a backup that I made previous to the reset. Supervisor updated to 2026.05.0 and HA was up and running; however, Core still will not update. Here are some of the things that were tried:
Set DNS on HA Green to 1.1.1.1 & 8.8.8.8
Disabled ipv6
Added vpn to router and set HA to use vpn (OpenVPN)
Supervisor Log:
2026-05-16 13:42:10.754 WARNING (MainThread) [supervisor.docker.manifest] Failed to get token from https://ghcr.io/token: 403
2026-05-16 13:42:10.821 WARNING (MainThread) [supervisor.docker.manifest] Failed to fetch manifest for ghcr.io/home-assistant/green-homeassistant:2026.5.1 - 401
2026-05-16 13:42:10.821 INFO (MainThread) [supervisor.docker.interface] Downloading docker image ghcr.io/home-assistant/green-homeassistant with tag 2026.5.1.
2026-05-16 13:42:11.505 ERROR (MainThread) [supervisor.docker.interface] Can't install ghcr.io/home-assistant/green-homeassistant:2026.5.1: [403] error from registry: denied
2026-05-16 13:42:11.506 WARNING (MainThread) [supervisor.homeassistant.core] Updating Home Assistant image failed
Yesterday, I tried to capture the steps and output in order as I tried to solve Core Update:
here is the ping and nslookup
âžś ~ ping ghcr.io PING ghcr.io (140.82.113.33): 56 data bytes 64 bytes from 140.82.113.33: seq=0 ttl=38 time=105.068 ms 64 bytes from 140.82.113.33: seq=1 ttl=38 time=122.687 ms 64 bytes from 140.82.113.33: seq=2 ttl=38 time=99.414 ms 64 bytes from 140.82.113.33: seq=3 ttl=38 time=114.298 ms 64 bytes from 140.82.113.33: seq=4 ttl=38 time=110.993 ms 64 bytes from 140.82.113.33: seq=5 ttl=38 time=103.861 ms 64 bytes from 140.82.113.33: seq=6 ttl=38 time=100.913 ms ^C --- ghcr.io ping statistics --- 7 packets transmitted, 7 packets received, 0% packet loss round-trip min/avg/max = 99.414/108.176/122.687 ms
âžś ~ nslookup ghcr.io Server: xxx.xx.xx.x Address: xxx.xx.xx.x#53 Name: ghcr.io Address: 140.82.113.33
Your network and DNS look healthy. The host can resolve and reach ghcr.io, so this is probably not a basic connectivity problem.
That narrows it down to:
temporary GitHub Container Registry auth issue
stale/corrupted Docker auth/cache on the host
Supervisor/Docker issue
blocked GitHub token endpoint specifically (less likely now)
The key detail is still:
Failed to get token from https://ghcr.io/token: 403
Ping and DNS do not test that token endpoint.
here is the curl
âžś ~ curl -I https://ghcr.io/token HTTP/2 405 content-type: application/json docker-distribution-api-version: registry/2.0 strict-transport-security: max-age=63072000; includeSubDomains; preload date: Fri, 15 May 2026 19:35:44 GMT content-length: 78 x-github-request-id: 11D8:3BEA76:2BE9DC:316CEC:6A07758F
means:
HTTPS connectivity works
TLS certificates work
GitHub token endpoint is reachable
your DNS/network path is fine
So the problem is now very likely one of these:
stale/corrupted Supervisor Docker auth state
temporary GHCR anonymous pull rejection
outdated Supervisor/container tooling
here is the ha supervisor info
addons: - icon: true name: ESPHome Device Builder repository: 5c53de3b slug: 5c53de3b_esphome state: started update_available: false version: 2026.4.5 version_latest: 2026.4.5 - icon: true name: Samba share repository: core slug: core_samba state: started update_available: false version: 12.6.1 version_latest: 12.6.1 - icon: true name: File editor repository: core slug: core_configurator state: started update_available: false version: 6.0.0 version_latest: 6.0.0 - icon: true name: Advanced SSH & Web Terminal repository: a0d7b954 slug: a0d7b954_ssh state: started update_available: false version: 23.0.9 version_latest: 23.0.9 - icon: true name: eufy-security-ws repository: 402f1039 slug: 402f1039_eufy_security_ws state: started update_available: false version: 2.1.0 version_latest: 2.1.0 addons_repositories: - name: Local apps slug: local - name: ESPHome slug: 5c53de3b - name: Home Assistant Community Store slug: cb646a50 - name: Music Assistant slug: d5369777 - name: 'Home Assistant Add-on: eufy-security-ws' slug: 402f1039 - name: Official apps slug: core - name: Home Assistant Community Apps slug: a0d7b954 arch: aarch64 auto_update: true channel: stable country: US debug: false debug_block: false detect_blocking_io: false diagnostics: null feature_flags: supervisor_v2_api: false unix_socket_core_api: false healthy: true ip_address: xxx.xx.xx.x logging: info supported: true timezone: America/New_York update_available: false version: 2026.05.0 version_latest: 2026.05.0 wait_boot: 5
Your Supervisor looks healthy and current:
Supervisor: 2026.05.0
Channel: stable
Architecture: aarch64
Healthy: true
Very likely cause now: GHCR anonymous pull rejection
Because:
DNS works
HTTPS works
Supervisor is current
system is healthy
…the registry is probably rejecting the anonymous image token intermittently.
That exact pattern:
403 token
401 manifest
denied
usually means:
auth token request failed upstream
not local corruption
This has happened periodically with GitHub Container Registry and Home Assistant image pulls.
What I suspect most right now
Given everything you've shown, the probability order is roughly:
transient GHCR authentication rejection
stale container/image metadata fixed by rebuild
low storage
Docker layer corruption
Not:
DNS
internet connectivity
Supervisor version
Home Assistant configuration
The best next step is:
ha core rebuild
ha host reboot
retry update
Then, if it still fails, paste:
ha info
df -h
result of docker pull (or the error saying Docker unavailable)
newest Supervisor log after retry
ha info
âžś ~ ha info arch: aarch64 channel: stable docker: 29.3.1 features: - reboot - shutdown - services - network - hostname - timedate - os_agent - haos - resolved - journal - disk - mount hassos: "17.3" homeassistant: 2026.5.0 hostname: homeassistant logging: info machine: green machine_id: 61de988d8aea4288b17fca0c327363c3 operating_system: Home Assistant OS 17.3 state: running supervisor: 2026.05.0 supported: true supported_arch: - aarch64 timezone: America/New_York
Everything looks current and healthy:
Home Assistant OS 17.3
Home Assistant Core 2026.5.0
Docker 29.3.1
Supervisor 2026.05.0
So your system stack is not outdated.
At this point, this is almost certainly one of:
temporary GHCR registry auth failure
stale image/cache metadata
low disk space
The remaining high-value check is storage.
Run:
df -h
here is storage
Filesystem Size Used Available Use% Mounted on overlay 27.8G 8.3G 18.1G 31% / /dev/mmcblk0p8 27.8G 8.3G 18.1G 31% /data /dev/mmcblk0p8 27.8G 8.3G 18.1G 31% /ssl /dev/mmcblk0p8 27.8G 8.3G 18.1G 31% /addon_configs /dev/mmcblk0p8 27.8G 8.3G 18.1G 31% /addons /dev/mmcblk0p8 27.8G 8.3G 18.1G 31% /homeassistant /dev/mmcblk0p8 27.8G 8.3G 18.1G 31% /backup devtmpfs 1.7G 0 1.7G 0% /dev tmpfs 1.9G 0 1.9G 0% /dev/shm /dev/mmcblk0p8 27.8G 8.3G 18.1G 31% /share /dev/mmcblk0p8 27.8G 8.3G 18.1G 31% /media tmpfs 784.6M 1.7M 782.9M 0% /run/docker.sock tmpfs 1.9G 0 1.9G 0% /dev/shm /dev/mmcblk0p8 27.8G 8.3G 18.1G 31% /run/audio /dev/mmcblk0p8 27.8G 8.3G 18.1G 31% /run/cid tmpfs 784.6M 1.7M 782.9M 0% /run/dbus /dev/mmcblk0p8 27.8G 8.3G 18.1G 31% /etc/asound.conf /dev/mmcblk0p8 27.8G 8.3G 18.1G 31% /etc/resolv.conf /dev/mmcblk0p8 27.8G 8.3G 18.1G 31% /etc/hostname /dev/mmcblk0p8 27.8G 8.3G 18.1G 31% /etc/hosts tmpfs 784.6M 1.7M 782.9M 0% /run/log/journal /dev/mmcblk0p8 27.8G 8.3G 18.1G 31% /var/log/journal /dev/mmcblk0p8 27.8G 8.3G 18.1G 31% /etc/pulse/client.conf tmpfs 1.9G 0 1.9G 0% /proc/asound devtmpfs 1.7G 0 1.7G 0% /proc/interrupts devtmpfs 1.7G 0 1.7G 0% /proc/keys tmpfs 1.9G 0 1.9G 0% /proc/scsi devtmpfs 1.7G 0 1.7G 0% /proc/timer_list tmpfs 1.9G 0 1.9G 0% /sys/firmware
At this point your system checks all look healthy:
network/DNS works
HTTPS to GHCR works
Supervisor current
OS current
Docker current
plenty of storage
Home Assistant healthy
That leaves two very likely possibilities:
stale Docker/Supervisor image state
temporary GitHub Container Registry authorization issue
So now the most appropriate fix is operational cleanup rather than troubleshooting basics.
ha core rebuild
ha host reboot
After the system comes fully back online, retry the update.
Update failed
docker pull ghcr.io/home-assistant/green-homeassistant:2026.5.1
âžś ~ docker pull ghcr.io/home-assistant/green-homeassistant:2026.5.1
2026.5.1: Pulling from home-assistant/green-homeassistant
1bdaaf0c09b0: Pull complete
c537d70fa6d1: Pull complete
8ea8deadfdc7: Pull complete
bf2874ea635c: Pull complete
fa911897150b: Pull complete
6f1dec89aca4: Pull complete
8603c9a9ee92: Pull complete
3822f3964169: Pull complete
b0143cbb2b04: Pull complete
9904c79f9310: Download complete
Digest: sha256:31efa3db018133934737efeb0ce717c78aca201a91b0b620344f60b6e1242353
Status: Downloaded newer image for ghcr.io/home-assistant/green-homeassistant:2026.5.1
ghcr.io/home-assistant/green-homeassistant:2026.5.1
Pull succeeds
Then the registry is fine and Supervisor had stale metadata/auth state.
Retry:
ha core update --version 2026.5.1
âžś ~ ha core update --version 2026.5.1
Processing... Done.
Command completed successfully.
ha info
âžś ~ ha info
arch: aarch64
channel: stable
docker: 29.3.1
features:
- reboot
- shutdown
- services
- network
- hostname
- timedate
- os_agent
- haos
- resolved
- journal
- disk
- mount
hassos: "17.3"
homeassistant: 2026.5.0
hostname: homeassistant
logging: info
machine: green
machine_id: xxxxxxxxxxxxxxxxxxxxxxxxxx
operating_system: Home Assistant OS 17.3
state: running
supervisor: 2026.05.0
supported: true
supported_arch:
- aarch64
timezone: America/New_York
ha core info
âžś ~ ha core info
arch: aarch64
audio_input: null
audio_output: null
backups_exclude_database: false
boot: true
duplicate_log_file: false
image: ghcr.io/home-assistant/green-homeassistant
ip_address: xxx.xx.xx.x
machine: green
port: 8123
ssl: false
update_available: true
version: 2026.5.0
version_latest: 2026.5.1
watchdog: true
powered off both internet modem/gateway and router, after ~30 seconds powered the modem/gateway back on and waited until it was up then powered router back on wand waited until it was up then ran
âžś ~ docker pull ghcr.io/home-assistant/green-homeassistant:2026.5.1 2026.5.1: Pulling from home-assistant/green-homeassistant bf2874ea635c: Pull complete b0143cbb2b04: Pull complete c537d70fa6d1: Pull complete 1bdaaf0c09b0: Pull complete fa911897150b: Pull complete 6f1dec89aca4: Pull complete 3822f3964169: Pull complete 8603c9a9ee92: Pull complete 8ea8deadfdc7: Pull complete 9904c79f9310: Download complete Digest: sha256:31efa3db018133934737efeb0ce717c78aca201a91b0b620344f60b6e1242353 Status: Downloaded newer image for ghcr.io/home-assistant/green-homeassistant:2026.5.1 ghcr.io/home-assistant/green-homeassistant:2026.5.1
That result is the confirmation we needed:
Status: Downloaded newer image for ghcr.io/home-assistant/green-homeassistant:2026.5.1
So:
GHCR access is working again
your network path is clean
the previous 403/401 failures were transient registry/network authentication issues tied to your WAN path or IP session
The modem/router power cycle effectively cleared whatever was causing GitHub’s registry edge to reject the token request.
What to do now
Run the Home Assistant update again (it should succeed immediately now):
ha core update --version 2026.5.1
Then verify:
ha info
You should see:
homeassistant: 2026.5.1
What actually happened (in plain terms)
Your Home Assistant Supervisor was fine the entire time.
The failure was here:
GHCR token endpoint returning 403 for Docker requests only
curl worked because it hit a slightly different request path
Docker/Supervisor used a different auth flow that was being rejected
After the network restart:
your WAN IP / routing path likely changed
GHCR stopped rejecting the token request
Docker pull succeeded normally
Why this is a known pattern
This specific combo:
ghcr.io/token 403
manifest 401
manual curl works
fixed by router/modem reboot
…almost always points to:
transient IP reputation / edge routing issue on GitHub’s side
or ISP NAT behavior reset
Not a Home Assistant bug.
Bottom line
You’re unblocked now. Just rerun the update and it should complete normally.
If it somehow fails again, paste the new log—but based on your successful docker pull, this is essentially resolved.
ha info
âžś ~ ha info
arch: aarch64
channel: stable
docker: 29.3.1
features:
- reboot
- shutdown
- services
- network
- hostname
- timedate
- os_agent
- haos
- resolved
- journal
- disk
- mount
hassos: "17.3"
homeassistant: 2026.5.0
hostname: homeassistant
logging: info
machine: green
machine_id: 61de988d8aea4288b17fca0c327363c3
operating_system: Home Assistant OS 17.3
state: running
supervisor: 2026.05.0
supported: true
supported_arch:
- aarch64
timezone: America/New_York
âžś ~ ha core update --version 2026.5.1
Processing... Done.
Command completed successfully.
âžś ~ ha info
arch: aarch64
channel: stable
docker: 29.3.1
features:
- reboot
- shutdown
- services
- network
- hostname
- timedate
- os_agent
- haos
- resolved
- journal
- disk
- mount
hassos: "17.3"
homeassistant: 2026.5.0
hostname: homeassistant
logging: info
machine: green
machine_id: 61de988d8aea4288b17fca0c327363c3
operating_system: Home Assistant OS 17.3
state: running
supervisor: 2026.05.0
supported: true
supported_arch:
- aarch64
timezone: America/New_York
This is the same situation as before: the update command succeeded, but the Core container is still running the old version.
So right now:
Supervisor thinks update ran
Docker image is already downloaded (you confirmed that)
But Home Assistant Core did not restart into the new container
I felt I was in a loop much like before on the Supervisor Update and stopped.
Any suggestions or assistance is greatly appreciated and thanks in advance!