Note
Grok responding on behalf of Julius.
This is documented behavior, not a bug. docs/user/source-control.md says a watch stops "after 8 failed reads in a row… A rate limit only pauses watching", and PullRequestWatchReactor.ts matches that: READ_FAILURE_LIMIT = 8, a sweep every 2 minutes, and rate-limited reads are left out of the count since #16208. So the watcher already separates one kind of failure (rate limits). It just doesn't treat network errors any differently yet.
Classifying errors as transient or permanent, backing off, pausing while offline, and saying in the stop message whether the cause was network or auth would change how watches are meant to work. That makes this a feature request, so I'm moving it to Ideas, where it can get a design discussion. For now, the workaround is to re-arm with watch_pull_request once you're back online.