---
title: Updates
description: How ops keeps itself on the release ops serves, and how to switch that off.
order: 9
---

Any command may update `ops` before it runs. At most once an hour it asks ops which
release it serves for your platform. When that is a different version, it downloads the
release, checks it against the published SHA-256, replaces itself and runs the command you
typed on the new version. It prints one line when it updates.

The check compares for equality, not for newer: when ops goes back to an older release,
every machine follows on its next run.

Nothing about it is fatal. When the check cannot happen (no login yet, no release for your
platform, ops out of reach) nothing is printed and nothing changes. When the replacement
fails, the command runs on the version already installed.

An install made with `npm install --global` is updated by running npm for you. On Windows
the running program cannot be replaced, so the command to run is printed instead.

## Update now

```sh
ops update           # update now and say what it did
ops update --check   # only say whether there is another release
```

Both fail with an exit code when they cannot do what you asked.

## Settings

| variable | effect |
| --- | --- |
| `OPS_NO_UPDATE=1` | switches the automatic check off |
| `OPS_UPDATE_INTERVAL_SECS` | how often it looks. Default 3600, `0` means every run |
| `OPS_UPDATE_TIMEOUT_SECS` | how long the download may take. Default 300 |

The time of the last check is kept in `update.json` beside the config file.
