---
title: "Vercel Schedules replace cron jobs, Security Review beta"
description: "Vercel, 2 to 9 Nov 2026: Schedules replace Vercel cron jobs, Security Review is billed after 10 Nov, workflow 5.4.0 adds idempotent starts, Claude marks text."
canonical_url: "https://www.outofplace.space/blog/dev-digest-2026-11-09"
language: "en"
last_updated: "2026-11-11"
alternates:
  pl: "https://www.outofplace.space/pl/blog/nowosci-vercel-schedules-zamiast-cron-jobs.md"
---

# Vercel Schedules replace cron jobs, Security Review beta

> Vercel, 2 to 9 Nov 2026: Schedules replace Vercel cron jobs, Security Review is billed after 10 Nov, workflow 5.4.0 adds idempotent starts, Claude marks text.

Published 2026-11-11 · Category: Vercel & AI SDK · Tags: Security, AI Gateway, Claude

This week Vercel put [Vercel Schedules into public beta](https://vercel.com/changelog/vercel-schedules-is-now-in-public-beta) as the successor to Vercel cron jobs, opened Security Review to Pro and Enterprise teams for free until 10 November 2026, and shipped idempotent starts in `workflow` 5.4.0; Anthropic's text watermark now covers Claude Mythos 5, Opus 4.7 and Sonnet 4.6. One thing needs action now: if you start workflows from webhooks, upgrade to 5.4.0. Security Review's free reviews ended on 10 November, so it now bills per token. It reads your code for vulnerabilities; it is not a patch, and if you run Next.js, upgrade to the [Next.js 16.4.5 security release](https://www.outofplace.space/blog/nextjs-16-4-5-security-release) or later.

| Item                                  | Version or date               | What to do                                                   |
| ------------------------------------- | ----------------------------- | ------------------------------------------------------------ |
| Vercel Schedules (public beta)        | 4 and 5 Nov                   | Move cron jobs when you next touch them; set `GET`           |
| Vercel Security Review (public beta)  | 3 Nov, free until 10 Nov      | Billed now: try one repository, then watch the token cost    |
| Token scanning in more public sources | 4 Nov                         | A revoked token means it leaked: replace it, find the leak   |
| Vercel CI without a linked project    | 3 Nov                         | Drop placeholder projects; private GitHub repos only         |
| Workflow SDK idempotent starts        | `workflow` 5.4.0, 4 Nov       | Replace `getHookByToken()` then `start()`                    |
| Ampersand on AI Gateway               | 6 Nov, free until 13 Nov      | Try it if you build a bot for group chats                    |
| Gemini Omni 1.2 Flash on AI Gateway   | 5 Nov                         | Check the price per clip before you build on it              |
| Kimi K3.1 Pro with more ZDR providers | 4 Nov                         | Handle the error when no ZDR provider is free                |
| Claude text watermark                 | 3 Nov                         | Nothing to change; on Sonnet 4.6 omit sampling settings      |

## Vercel

### Vercel Schedules: the successor to Vercel cron jobs

Vercel [introduced Schedules](https://vercel.com/blog/introducing-vercel-schedules) on 4 November 2026 and put them in public beta on all plans on 5 November. A schedule runs on a cron expression or once at a set time, and targets a path, a private Vercel Function or a Vercel Queue topic. Static schedules live in `vercel.json` and change on deploy; dynamic ones are created at runtime with [`@vercel/schedules`](https://registry.npmjs.org/@vercel/schedules) (0.0.3 on npm since 4 November) and target a queue topic. The [Schedules docs](https://vercel.com/docs/schedules) call Cron Jobs legacy, to be migrated to Schedules at a date not yet given; existing ones keep working. On Hobby, Cron Jobs run at most once a day, while a schedule can run every 15 minutes, with 5,000 runs and 500 dynamic schedule creations a billing period included, per the [Schedules limits](https://vercel.com/docs/schedules/limits). Pro and Enterprise pay $5 per million runs and $10 per million schedule creations. The trade: a schedule starts within a jitter window (1 minute by default on Pro, always 15 minutes on Hobby), where a Pro Cron Job fires at its minute.

Our take: on Hobby this is the change: a job every 15 minutes is 2,880 runs in a 30-day month, so one such schedule fits the 5,000 and two don't, and over the limit Vercel skips runs until the next period. On Pro there is no deadline, so migrate when you next touch `vercel.json`, following the [migration guide](https://vercel.com/docs/schedules/migrate-from-cron-jobs): path schedules send `POST` by default, so add `"requestMethod": "GET"`, and remove the `crons` entry in the same change or the route runs twice. Then make the route a private function target: a cron path is a public URL that only your `CRON_SECRET` check protects.

### Vercel Security Review: public beta, billed after 10 November

[Vercel Security Review](https://vercel.com/changelog/vercel-security-review-public-beta) entered public beta for Pro and Enterprise teams on 3 November 2026. Once you enable it in the team's Agent settings, it reviews every push to a connected GitHub repository, production force pushes included, and lists findings with a summary, a suggested fix and an AI-rated severity in the Vulnerabilities dashboard; each commit gets a check and pull requests get review comments. "Fix with Vercel Agent" opens a pull request with the fix, and `vercel security vulnerabilities` (CLI 65.10.0 or later) lists findings in the terminal. Reviews are free until 10 November 2026, then billed at the Vercel Agent rate: model inference at its token price, no markup, plus $0.25 per million tokens. Vercel says plainly that it reads source code only and is not a security audit.

Our take: the free reviews ended on 10 November, so every review now costs tokens. If you try it, start with the repository with your riskiest code and read what it finds on a real push. The bill scales with pushes and changed lines, so a monorepo with many small pushes pays more than its size suggests; set a spend expectation before you enable it on more repositories. Treat the severity as a model's guess, not a score you can sort a backlog by.

### Token scanning now covers npm, Docker, PyPI and more

Since 4 November 2026, [Vercel's token scanning](https://vercel.com/changelog/vercel-token-scanning-expands-to-more-public-sources) takes reports from Truffle Security on Vercel tokens exposed on GitHub, GitLab, Docker, npm, PyPI, Hugging Face, Android APKs and Firefox Add-ons, and Vercel scans each new monthly Common Crawl dataset itself. A token found there is revoked, and its owner gets an email; Vercel says it has revoked hundreds already.

Our take: the revocation is the protection, against someone else running up your Vercel Sandbox or AI Gateway bill. The side effect is a CI job or script that stops working on the day it happens. If you get the email, don't just paste a new token into the same place: the old one leaked from one of the places above, such as a published package or a Docker image, so find it and keep the new token, with the narrowest scope, in a secret.

### Vercel CI no longer needs a linked Vercel project

Since 3 November 2026, [Vercel CI runs on a GitHub repository without a linked project](https://vercel.com/changelog/vercel-ci-no-longer-requires-a-linked-vercel-project). With the Vercel GitHub App installed and write or admin rights on the repository, run `vercel ci enable` in a clone (`--scope <team>` for another team), and tasks run from the next push. Only private GitHub repositories are supported so far.

Our take: libraries, backends and other repositories that never deploy to Vercel no longer need an empty placeholder project to get CI. Delete those placeholders once CI runs without them; they only add noise to the dashboard.

### Workflow SDK 5.4.0: idempotent starts

[`workflow` 5.4.0](https://registry.npmjs.org/workflow), published on npm on 4 November 2026, lets `start()` [admit a run and claim a hook in one atomic step](https://vercel.com/changelog/atomic-start-hooks-in-the-workflow-sdk). Pass `experimental_hook: { token }`, with a token from your own domain such as `order:${orderId}`: a second `start()` with the same token creates no run and throws `HookConflictError` with the `conflictingRunId`, and `resumeHook(token, payload)` hands the duplicate's payload to the run that owns it. `experimental_minRetention` keeps the token taken for a while after the run ends, so late duplicates are refused too. It replaces the pattern of calling `getHookByToken()` and then `start()`, which had a race between the two calls.

Our take: if you start workflows from webhooks, upgrade. Payment and Git providers retry deliveries, and two retries landing together could both pass the lookup and start two runs; now one of them gets an error you can catch. Set `experimental_minRetention` to at least your provider's retry window, and pin the version, since both options are still marked experimental.

## AI Gateway

### Ampersand from Humans& is free until 13 November

On 6 November 2026 AI Gateway added [Ampersand](https://vercel.com/changelog/humans-and-ampersand-now-available-on-ai-gateway) (`humansand/ampersand-v0.1`), a model for group conversations built on Z.ai's open-weight GLM 5.3. It reads every message in a chat, including those not addressed to it, and after each one decides whether to speak. Your app gives it two tools, `send_message` and `pass`, and runs them. It is free on AI Gateway until 13 November 2026.

Our take: the useful idea is `pass`: a bot in a team chat that can choose silence is less annoying than one that answers everything. If you build one, the free window is enough to test it on a recorded conversation; at version 0.1 it is not something to ship on yet.

### Gemini Omni 1.2 Flash generates video through the AI SDK

Since 5 November 2026 [`google/gemini-omni-1.2-flash`](https://vercel.com/changelog/gemini-omni-1-2-flash-now-available-on-ai-gateway) is on AI Gateway: video of 3 to 15 seconds with native audio, from 360p to 4K in 16:9 or 9:16, from a text prompt or a source clip with up to six reference images. A call can extend a video by 3 to 10 seconds, up to 30 seconds in total, and `previousInteractionId` refines a clip in a follow-up call. You call it with `generateText` or `streamText` in the AI SDK and read the video from `files`.

Our take: video becomes one more model behind the same key and the same [Vercel AI SDK](https://www.outofplace.space/blog/vercel-ai-sdk-usechat-streaming) calls, with no Google account to set up. The changelog gives no price per second, and video is where a loop of retries gets expensive, so look up the rate on the gateway's model page and cap resolution and duration in code before you build on it.

### Kimi K3.1 Pro gets more Zero Data Retention providers

On 4 November 2026 [Kimi K3.1 Pro and Kimi K3.1 Pro Highspeed](https://vercel.com/changelog/kimi-k3-1-pro-now-has-more-zdr-providers-on-ai-gateway) (`moonshotai/kimi-k3.1-pro`, `moonshotai/kimi-k3.1-pro-highspeed`, 1M-token context, image input) became available from more providers with a Zero Data Retention (ZDR) agreement; until then Moonshot AI was their only provider. With ZDR on, AI Gateway routes only to providers that have such an agreement with it. You require it per request with `zeroDataRetention: true` in `providerOptions.gateway`, or for the whole team in the AI Gateway settings. When no ZDR provider is available, the request fails rather than going to one without ZDR. The [AI Gateway ZDR docs](https://vercel.com/docs/ai-gateway/security-and-compliance/zdr) add that ZDR needs a paid account (Pro, Enterprise or bought AI Gateway credits), that per-request ZDR costs nothing extra and team-wide ZDR $0.10 per 1,000 requests, and that the failure is a 400 with type `no_zdr_providers_available`.

Our take: if your team requires ZDR, Kimi K3.1 Pro is now a model you can route to with more than one provider behind it, so an outage at Moonshot AI no longer stops it. The changelog doesn't name the new providers, so check the model's provider list before you count on failover, and handle `no_zdr_providers_available` in code as an expected answer, not a crash.

## Claude

### Claude Mythos 5, Opus 4.7 and Sonnet 4.6 now carry the text watermark

The [Claude release notes](https://platform.claude.com/docs/en/release-notes/overview) of 3 November 2026 extend Anthropic's text watermark to Claude Mythos 5, Claude Opus 4.7 and Claude Sonnet 4.6. Per [How Claude marks AI-generated content](https://support.claude.com/en/articles/16266773-how-claude-marks-ai-generated-content), it is applied at the model level, on the Claude API, Claude, Claude Code and through AWS, Google Cloud and Microsoft Foundry, and no way to turn it off is documented; detection is in private preview for eligible organisations such as regulators, media and enterprises checking their own outputs. The [text watermark docs](https://platform.claude.com/docs/en/build-with-claude/text-watermark) say it adds no tokens or hidden characters and carries no information about you. On Sonnet 4.6, text from a request that sets `temperature`, `top_p` or `top_k` to a non-default value might not carry it.

Our take: there is nothing to change in your code, and nothing to strip, since no characters are added. Assume text you publish from these models can be identified as Claude's by those with access to detection. If you rely on the mark to prove where text came from, omit all three sampling settings on Sonnet 4.6, including any your framework sets for you.

## Further reading

- [Vercel: Migrating from Cron Jobs to Schedules](https://vercel.com/docs/schedules/migrate-from-cron-jobs): The vercel.json change, what stays the same for your route, timing by plan and how to make the route private.

- [Vercel Security Review is now in public beta](https://vercel.com/changelog/vercel-security-review-public-beta): What it reviews, how findings reach GitHub, the CLI command and the Vercel Agent rate after 10 November 2026.

- [Claude: Text watermark](https://platform.claude.com/docs/en/build-with-claude/text-watermark): What the watermark leaves unchanged and which sampling settings to omit on Claude Sonnet 4.6.
