---
title: "Changelog | Netlify"
description: "Stay updated with the latest features, fixes, and improvements. Realize the speed, agility and performance of a scalable, composable web architecture with Netlify. Explore the composable web platform now!"
source: "https://www.netlify.com/changelog/page/8/"
last_updated: "2026-08-05T08:52:31.000Z"
---
# Changelog

All Tags Agent-runners AI Ai-gateway Angular Astro AX Build CLI Database Design Devtools Domains E-commerce Extensions Forms Framework Functions Logs Next.js Nuxt.js Remix SDK Security Updates Workflow  [Subscribe to feed](https://www.netlify.com/changelog/feed.xml)

-   [
    
    ## Limit AI usage on your team
    
    ](/changelog/2026-03-06-limit-ai-feature-usage/)
    
    March 6, 2026
    
    -   [agent runners](/changelog/tag/agent-runners/)
    
    Team Owners can now set a credit limit on [AI inference usage](https://docs.netlify.com/manage/accounts-and-billing/billing/billing-for-credit-based-plans/how-credits-work/#credit-usage-for-ai-inference) to keep [Agent Runners](https://docs.netlify.com/build/build-with-ai/agent-runners/overview/) and [AI Gateway](https://docs.netlify.com/build/ai-gateway/overview/) costs within budget.
    
    When your team’s usage hits the credit cap you define, active agent runs stop, new agent runs are blocked, and continued AI Gateway usage is paused to help you keep more of your credit balance.
    
    This is especially useful for teams actively using AI features who want predictable monthly costs without manually watching the meter. Set it once, and Netlify enforces it automatically across your entire team.
    
    Learn more in our docs on [limiting AI features](https://docs.netlify.com/build/build-with-ai/manage-ai-features/#limit-ai-feature-usage).
    
    ## Agent run credits tracking
    
    You can also track how much each agent run task costs on your agent runs page, shown next to how long the agent took to run the task.
    
    Learn more about [AI inference usage](https://docs.netlify.com/manage/accounts-and-billing/billing/billing-for-credit-based-plans/how-credits-work/#credit-usage-for-ai-inference) and [how credits work](https://docs.netlify.com/manage/accounts-and-billing/billing/billing-for-credit-based-plans/how-credits-work/).
    
    [Permalink to Limit AI usage on your team Permalink](/changelog/2026-03-06-limit-ai-feature-usage/)
    
-   [
    
    ## OpenAI GPT-5.4 and GPT-5.4 Pro Now Available in AI Gateway and Agent Runners
    
    ](/changelog/gpt-5-4-ai-gateway-agent-runners/)
    
    March 5, 2026
    
    -   [ai gateway](/changelog/tag/ai-gateway/)
    -   [agent runners](/changelog/tag/agent-runners/)
    
    OpenAI’s GPT-5.4 and GPT-5.4 Pro models are now available through Netlify’s AI Gateway and Agent Runners with zero configuration required.
    
    Use the OpenAI SDK directly in your Netlify Functions without managing API keys or authentication. The AI Gateway handles everything automatically. Here’s an example using the GPT-5.4 model:
    
    ```
    import OpenAI from 'openai';
    export default async () => {    const openai = new OpenAI();
        const response = await openai.responses.create({        model: 'gpt-5.4',        input: 'Give a concise explanation of how AI works.',    });
        return Response.json(response);};
    ```
    
    GPT-5.4 and GPT-5.4 Pro are available for all Function types and Agent Runners. You get automatic access to Netlify’s caching, rate limiting, and authentication infrastructure.
    
    Learn more in the [AI Gateway documentation](https://docs.netlify.com/build/ai-gateway/overview/) and [Agent Runners documentation](https://docs.netlify.com/build/build-with-ai/agent-runners/overview/).
    
    [Permalink to OpenAI GPT-5.4 and GPT-5.4 Pro Now Available in AI Gateway and Agent Runners Permalink](/changelog/gpt-5-4-ai-gateway-agent-runners/)
    
-   [
    
    ## Deploy Preview screenshots in agent runs
    
    ](/changelog/2026-03-03-agent-runs-deploy-preview-screenshot/)
    
    March 3, 2026
    
    -   [agent runners](/changelog/tag/agent-runners/)
    
    Starting today, all completed agent runs show a screenshot of your Deploy Preview. This makes it easier to quickly see the result of an agent run and keep track of agent run sessions without opening the full preview.
    
    ![Screenshot of the agent runs dashboard showing a completed run with a Deploy Preview screenshot](/images/changelog/agent-run-deploy-preview.png)
    
    Test it out today:
    
    1.  Go to your Netlify project dashboard.
    2.  On the left, select **Agent runs**, then choose an existing agent run or start a new one by entering a prompt and selecting **Run task**.
    3.  At the bottom of your agent run sessions, you’ll find a screenshot of your Deploy Preview. The screenshot is taken from the main page of your project.
    
    > **Note:** If you’ve set up private deploys or password protection, the screenshot will show a sign-in page instead. Learn more about [Password protection](https://docs.netlify.com/manage/security/secure-access-to-sites/password-protection/).
    
    Learn more about getting started with [Agent Runners](https://docs.netlify.com/build/build-with-ai/agent-runners/quickstart-for-agent-runners/).
    
    [Permalink to Deploy Preview screenshots in agent runs Permalink](/changelog/2026-03-03-agent-runs-deploy-preview-screenshot/)
    
-   [
    
    ## Gemini 3.1 Flash-Lite Preview now available in AI Gateway
    
    ](/changelog/gemini-3-1-flash-lite-preview-ai-gateway/)
    
    March 3, 2026
    
    -   [ai gateway](/changelog/tag/ai-gateway/)
    
    Google’s Gemini 3.1 Flash-Lite Preview is now available through AI Gateway. You can call this model from Netlify Functions without configuring API keys; the AI Gateway provides the connection to Google for you.
    
    Example usage in a Function:
    
    ```
    import { GoogleGenAI } from '@google/genai';
    export default async () => {    const ai = new GoogleGenAI({});
        const response = await ai.models.generateContent({        model: 'gemini-3.1-flash-lite-preview',        contents: 'How can AI improve my coding?'    });
        return Response.json(response);};
    ```
    
    This model works across any function type and is compatible with other Netlify primitives such as caching and rate limiting, giving you control over request behavior across your site.
    
    Learn more in the [AI Gateway documentation](https://docs.netlify.com/build/ai-gateway/overview/).
    
    [Permalink to Gemini 3.1 Flash-Lite Preview now available in AI Gateway Permalink](/changelog/gemini-3-1-flash-lite-preview-ai-gateway/)
    
-   [
    
    ## GPT-5.3 Instant now available in AI Gateway
    
    ](/changelog/gpt-5-3-instant-ai-gateway/)
    
    March 3, 2026
    
    -   [ai gateway](/changelog/tag/ai-gateway/)
    
    OpenAI’s GPT-5.3 Instant model is now available through Netlify’s AI Gateway with zero configuration required.
    
    Use the OpenAI SDK directly in your Netlify Functions without managing API keys or authentication. The AI Gateway handles everything automatically. Here’s an example using the GPT-5.3 Instant model:
    
    ```
    import OpenAI from 'openai';
    export default async () => {    const openai = new OpenAI();
        const response = await openai.responses.create({        model: 'gpt-5.3-chat-latest',        input: 'How does AI work?'    });
        return Response.json(response);};
    ```
    
    **Note:** The model API name is `gpt-5.3-chat-latest`.
    
    GPT-5.3 Instant is available for all Function types. You get automatic access to Netlify’s caching, rate limiting, and authentication infrastructure.
    
    Learn more in the [AI Gateway documentation](https://docs.netlify.com/build/ai-gateway/overview/).
    
    [Permalink to GPT-5.3 Instant now available in AI Gateway Permalink](/changelog/gpt-5-3-instant-ai-gateway/)
    
-   [
    
    ## Use Netlify Agent Runners from Linear
    
    ](/changelog/2026-02-27-agent-runners-linear-integration/)
    
    February 27, 2026
    
    -   [agent runners](/changelog/tag/agent-runners/)
    -   [workflow](/changelog/tag/workflow/)
    
    Linear users can now launch Netlify Agent Runners directly from any Linear issue, allowing you to seamlessly share context with your AI agent of choice. If you have your Linear issue synced with related Slack messages, this context will also be included in your agent run prompt.
    
    Before starting your agent run, you can review and edit your prompt. Next, you can choose which AI agent to use — Claude Code, Google Gemini, or OpenAI Codex. Netlify Agent Runners doesn’t lock you into using a single AI agent so you can pick the agent that fits the task best.
    
    To start an agent run from Linear:
    
    1.  Go to a Linear issue where you want to trigger an agent run.
    2.  In the top right corner, select **Configure coding tools…**. ![Linear issue view showing the Configure coding tools option in the top right corner](/images/changelog/linear-configure-coding-tools.png)
    3.  Toggle **Netlify Agent Runners** on.
    4.  Go back to the issue and in the top right corner, select **Open in Netlify Agent Runners**. ![Linear issue view showing the Open in Netlify Agent Runners option in the top right corner](/images/changelog/linear-open-in-netlify-agent-runners.png)
    5.  Review the prompt and choose your AI agent.
    6.  To start the agent run, select **Run task**.
    
    Once you’ve enabled this integration from your personal Linear preference settings, any Linear issue you open in your workspace will give you the option to open with Netlify Agent Runners.
    
    Now your entire team can save time and seamlessly share context between Linear and Netlify Agent Runners while keeping this work clearly tracked across Linear and Netlify. Learn more about [Agent Runners](https://docs.netlify.com/build/build-with-ai/agent-runners/overview/).
    
    [Permalink to Use Netlify Agent Runners from Linear Permalink](/changelog/2026-02-27-agent-runners-linear-integration/)
    
-   [
    
    ## Automatic PHP bot scan blocking now live on all plans
    
    ](/changelog/2026-02-27-php-scan-blocking/)
    
    February 27, 2026
    
    -   [security](/changelog/tag/security/)
    
    Netlify now automatically blocks bot scans targeting PHP paths across all plans — no configuration required.
    
    Previously, these bots generated noise in [Observability](https://docs.netlify.com/manage/monitoring/observability/overview) logs and metrics. They showed up without a `User-Agent` header. Netlify now blocks them at the edge.
    
    Since rolling out edge-level blocking on December 28, 2025, Netlify has blocked 2.9 billion of these requests.
    
    [Permalink to Automatic PHP bot scan blocking now live on all plans Permalink](/changelog/2026-02-27-php-scan-blocking/)
    
-   [
    
    ## Support for stale-while-revalidate in Cache API
    
    ](/changelog/cache-api-stale-while-revalidate/)
    
    February 27, 2026
    
    -   [build](/changelog/tag/build/)
    
    The Netlify Cache API now has full support for [`stale-while-revalidate`](https://docs.netlify.com/build/caching/caching-overview/#stale-while-revalidate-directive) (SWR). This was a previous limitation of the Cache API that has now been lifted, thanks to a request from a customer.
    
    When using `fetchWithCache` with the `swr` option, background revalidation is handled automatically. If a response is stale but still within the SWR window, it’s served immediately while a fresh response is fetched and cached in the background.
    
    ```
    import { fetchWithCache, DAY, HOUR } from "@netlify/cache";import type { Config, Context } from "@netlify/functions";
    export default async (req: Request, context: Context) => {  const response = await fetchWithCache("https://example.com/expensive-api", {    ttl: 2 * DAY,    swr: HOUR,    tags: ["product"],  });  return response;};
    export const config: Config = {  path: "/api/products",};
    ```
    
    For users who interact directly with `cache.match` and `cache.put`, a new `needsRevalidation` method lets you check whether a cached response is stale and trigger background revalidation manually:
    
    ```
    import { needsRevalidation, cacheHeaders, MINUTE, HOUR } from "@netlify/cache";import type { Config, Context } from "@netlify/functions";
    const cache = await caches.open("my-cache");
    export default async (req: Request, context: Context) => {  const request = new Request("https://example.com/expensive-api");  const cached = await cache.match(request);
      if (cached) {    if (needsRevalidation(cached)) {      context.waitUntil(        fetch(request).then((fresh) => {          const response = new Response(fresh.body, {            headers: {              ...Object.fromEntries(fresh.headers),              ...cacheHeaders({ ttl: MINUTE, swr: HOUR }),            },          });          return cache.put(request, response);        })      );    }    return cached;  }
      const fresh = await fetch(request);  const response = new Response(fresh.body, {    headers: {      ...Object.fromEntries(fresh.headers),      ...cacheHeaders({ ttl: MINUTE, swr: HOUR }),    },  });
      context.waitUntil(cache.put(request, response.clone()));  return response;};
    export const config: Config = {  path: "/api/data",};
    ```
    
    Learn more in the [Cache API documentation](https://docs.netlify.com/build/caching/cache-api/) and the [caching overview](https://docs.netlify.com/build/caching/caching-overview/).
    
    [Permalink to Support for stale-while-revalidate in Cache API Permalink](/changelog/cache-api-stale-while-revalidate/)
    
-   [
    
    ## Gemini 3.1 Flash Image Preview now available in AI Gateway
    
    ](/changelog/gemini-3-1-flash-image-preview-ai-gateway/)
    
    February 26, 2026
    
    -   [ai gateway](/changelog/tag/ai-gateway/)
    
    Google’s Gemini 3.1 Flash Image Preview, also known as Nano Banana 2, is now available through AI Gateway. You can call this image generation model from Netlify Functions without configuring API keys; the AI Gateway provides the connection to Google for you.
    
    Example usage in a Function:
    
    ```
    import { GoogleGenAI } from '@google/genai';
    export default async (request: Request) => {    const url = new URL(request.url);    const prompt = url.searchParams.get('prompt') || 'two happy bananas';    const ai = new GoogleGenAI({});
        try {        const response = await ai.models.generateContent({            model: 'gemini-3.1-flash-image-preview',            contents: prompt,            config: {                imageConfig: {                    aspectRatio: '16:9',                    imageSize: '1K'                }            }        });
            let imagePart = null;        for (const part of response.candidates[0].content.parts) {            if (part.inlineData) {                imagePart = part.inlineData;                break;            }        }
            const bytes = Buffer.from(imagePart.data, 'base64');        const mimeType = imagePart.mimeType || 'image/png';
            return new Response(bytes, {            status: 200,            headers: {                'Content-Type': mimeType,                'Cache-Control': 'no-store'            }        });    } catch (err) {        return new Response(JSON.stringify({ error: String(err), prompt }), {            status: 500,            headers: { 'Content-Type': 'application/json' }        });    }};
    ```
    
    This model works across any function type and is compatible with other Netlify primitives such as caching and rate limiting, giving you control over request behavior across your site.
    
    Learn more in the [AI Gateway documentation](https://docs.netlify.com/build/ai-gateway/overview/).
    
    [Permalink to Gemini 3.1 Flash Image Preview now available in AI Gateway Permalink](/changelog/gemini-3-1-flash-image-preview-ai-gateway/)
    

[Previous page](/changelog/page/7) [Next page](/changelog/page/9)