Nightly dependency upgrades
Dependency upgrades are the chore everyone agrees matters and nobody gets to. They pile up until one big, scary upgrade blocks a release. Put a deputy on it every night. You arrive in the morning to a tested pull request for acme/web, and the deputy asks you before it goes near a breaking change.
Available when your administrator enables deputies.
The result
- Small, safe steps. One night of upgrades at a time, so every pull request is easy to review and easy to revert.
- Tested before you see it. The run upgrades, builds and runs your tests in its own space. Only green changes become a pull request.
- You decide on the big ones. A major version or a failing test turns into a question for you, not a surprise in
main. - No cost while it waits. If you answer at 09:00, the run parks overnight with its work saved and its environment shut down.
How it works
At 02:00 in your time zone, the schedule on the Deps Keeper deputy launches its mission. The run starts in a fresh space with your repo’s toolchain. It clones acme/web, finds outdated packages, applies the minor and patch upgrades, and runs the tests. When they pass, it pushes a branch and opens a pull request with gh. When a major upgrade or a failing test needs a call, it asks you with clear choices and waits. Nobody is around at night, so the run parks after the hot window and frees its CPU and memory. You answer from Home or Slack in the morning, and the run picks up exactly where it stopped.
What you use
| Piece | Its role in this story |
|---|---|
| Deputy | Deps Keeper, a standing worker with its own manifest, owner and memory. |
| Mission | nightly-upgrades: the upgrade prompt, with a time budget long enough for a full test run. |
| Schedule | Fires every night at 02:00 in a named time zone, with a catch-up rule for missed nights. |
| Manifest | claude-code, github and your toolchain, such as node or go. |
| Credential | A GitHub token that can push branches and open pull requests. The agent never sees it. |
| Run | One night’s work. The Changes tab shows the diff and Costs shows what it spent on models and compute. |
| Timeouts and parking | Keeps a waiting run free while you sleep, and resumes it when you answer. |
Build it
- Connect GitHub. On Connections, connect GitHub with a Personal access token with the
reposcope. Addworkflowif upgrades touch files under.github/workflows/. See Connect GitHub. - Create the manifest. Add
claude-code,githuband your toolchain, with your Claude credential and the GitHub token. See Create a manifest. - Create the deputy. On Deputies, select New deputy, name it “Deps Keeper” and choose the manifest. See Create a deputy and a mission.
- Write the mission. Create
nightly-upgradeswith the prompt below and a Time budget that covers a full build and test run, for example 60 minutes. A schedule supplies no inputs, so the prompt needs none. Select Dry run, then Activate. - Add the schedule. Open the mission and select Schedule under Triggers. Set Repeats to Every day, At to 02:00, and pick your Timezone. Check Next fires. See Run a mission on a schedule or event.
- Choose catch-up. Keep Catch-up on
skip, so a missed night does not stack up extra runs. - Add standing instructions (optional). Open standing instructions in the footer and write, for example, “Post the pull request link in your heads-up.” Marshal adds them on every scheduled launch. Then select Create.
- Check the first night. In the morning, open the run from Runs. The Trigger column says
schedule.
The mission prompt:
You keep the dependencies of acme/web up to date.
1. Clone acme/web and create a branch named deps/nightly-<date>.
2. Find outdated dependencies. Apply minor and patch upgrades.
3. Build and run the full test suite.
4. If a single package breaks the tests, leave it out and keep the rest.
5. If the tests pass, push the branch and open one pull request with gh.
List every package with its old and new version.
6. For each major upgrade, ask me with the choices "Try it in a separate
pull request" and "Skip for now". Do the work I pick.
7. Never merge. Send me a heads-up with the pull request link.Make it yours
- Weekly instead of nightly. Set Repeats to Every week and On to Monday, or write
0 2 * * 1as a cron expression. - Weekdays only. Use the cron expression
0 2 * * 1-5. - Keep a pin list. Put “never upgrade the database driver” in the deputy’s Context. The deputy also keeps its own notes in Memory. See Memory.
- Ask before every pull request. Add “Before you open the pull request, ask me with the choices Open it and Skip.” The run parks until you answer.
Next
Run a mission on a schedule or event to put your first mission on a timer.
Related