Update Check Configuration
Forge checks GitHub for newer releases and prints a notice when one is available. This page explains when the check runs, how to turn it off, and what data it uses.
How it works
- The check runs in a background thread and does not delay your command.
- Forge caches the result locally and shows the notice from the cache.
- Network and API errors are not shown. They are logged at debug level.
- The notice is written to stderr, so it does not affect piped or redirected output.
When a newer version exists, the notice looks like this:
A newer version of frg is available: <latest> (current: <current>)
Run: curl -fsSL <install-script-url> | sh
If you installed Forge with a package manager, upgrade through that package manager instead. See Installation.
When the check is skipped
Forge skips the update check when any of these are true:
FORGE_NO_UPDATE_CHECKis set.- The check is disabled with
[update_check] enabled = false. - Forge runs in a CI environment (for example,
CIis set). - The session is non-interactive, or you pass
-q/--quiet.
Disable the check
With an environment variable
Set FORGE_NO_UPDATE_CHECK for one command:
FORGE_NO_UPDATE_CHECK=1 frg issue plan
To disable it for every session, add the variable to your shell profile:
echo 'export FORGE_NO_UPDATE_CHECK=1' >> ~/.bashrc
FORGE_NO_UPDATE_CHECK takes precedence over configuration.
With configuration
Use the [update_check] table:
[update_check]
enabled = false # Set to true to show update notices
interval_hours = 24 # Minimum hours between checks
| Key | Description |
|---|---|
enabled | Show update notices. Set to false to disable the check. |
interval_hours | Minimum number of hours between network checks. |
Privacy and data
| Item | Details |
|---|---|
| Endpoint | https://api.github.com/repos/telerik/forge/releases/latest |
| Sent | A standard HTTPS request identifying the Forge version. No project or personal data. |
| Received | Latest release version and metadata |
| Stored locally | update_check.json in the Forge user configuration directory (~/.config/forge/), with the last check time (last_check) and latest version (latest_version) |
You can delete update_check.json to force a fresh check.
Automatic updates and pre-releases
Forge provides the frg update command and two [update_check] keys. Each key has three states: omitted, false, or true. A layer that omits a key inherits the value from the layer below it (system, then user, then repository).
auto_update — automatic installation
| State | Behavior |
|---|---|
| Omitted (default) | Forge shows the notice. You run frg update. |
auto_update = false | Same as omitted, but overrides an opt-in from a lower-priority layer. |
auto_update = true | Forge installs the update after your command finishes. The new version runs on your next command. |
Automatic updates use the same verified path as frg update: detect the install method, download, verify the SHA-256 checksum, smoke test, and swap the binary atomically. Failures never change your command's exit status.
Auto-update is skipped when FORGE_NO_UPDATE_CHECK is set, the update check is disabled, you are in CI, stdout is not a terminal, a package manager installed Forge, the install directory is not writable, or an attempt was made in the last 4 hours.
FORGE_AUTO_UPDATE (1/true/yes/on or 0/false/no/off) overrides auto_update in every layer. FORGE_NO_UPDATE_CHECK still wins: FORGE_AUTO_UPDATE=0 suppresses installation but keeps the notice, and FORGE_NO_UPDATE_CHECK=1 suppresses both.
include_prerelease — installing pre-release versions
| State | Behavior |
|---|---|
| Omitted (default) | frg update installs the newest stable release. |
include_prerelease = false | Same as omitted, but overrides an opt-in from a lower-priority layer. |
include_prerelease = true | frg update installs the newest published release, including pre-releases. |
This setting affects only frg update without --version. If no stable release exists, Forge falls back to the newest pre-release.
[update_check]
auto_update = true
include_prerelease = true
See Update Command.
Troubleshooting
No update notice appears
Cause: The check is disabled or skipped, or no newer version exists.
Solution:
- Check that
FORGE_NO_UPDATE_CHECKis not set:
echo "$FORGE_NO_UPDATE_CHECK"
- Check that
CIis not set, and run Forge in an interactive terminal without--quiet. - Check that
[update_check] enabledis notfalse. - Delete
~/.config/forge/update_check.jsonto force a fresh check.
The check cannot reach GitHub
Cause: A firewall, proxy, or DNS issue blocks api.github.com. Forge does not display these errors.
Solution:
- Test connectivity:
curl -I https://api.github.com/repos/telerik/forge/releases/latest
- Allow outbound HTTPS to
api.github.com, or disable the check withFORGE_NO_UPDATE_CHECK=1.