---
title: Downgrade app access scopes from write to read - Shopify developer changelog
description: >-
  Shopify’s developer changelog documents all changes to Shopify’s platform.
  Find the latest news and learn about new platform opportunities.
source_url:
  html: >-
    https://shopify.dev/changelog/posts/downgrade-app-access-scopes-from-write-to-read
  md: >-
    https://shopify.dev/changelog/posts/downgrade-app-access-scopes-from-write-to-read.md
metadata:
  effectiveApiVersion: 2027-01
  affectedApi:
    - displayName: Admin GraphQL API
      handle: admin-graphql
  primaryTag:
    displayName: API
    handle: api
  secondaryTag:
    displayName: New
    handle: new
  indicatesActionRequired: false
  createdAt: '2026-09-30T17:41:53-04:00'
  postedAt: '2026-10-07T12:00:00-04:00'
  updatedAt: '2026-10-07T12:51:30-04:00'
  effectiveAt: '2026-10-01T12:00:00-04:00'
---

October 7, 2026

# Downgrade app access scopes from write to read

DateOctober 7, 2026

Version[2027-01](https://shopify.dev/changelog?api_version=2027-01)

FlagsNew

SurfacesAPI

Affected APIs[Admin GraphQL API](https://shopify.dev/changelog?api_type=admin-graphql)

Starting with Admin GraphQL API version `2027-01`, apps that use [Shopify-managed installation](https://shopify.dev/docs/apps/build/authentication-authorization#shopify-managed-installation) can call `appDowngradeAccessScopes` to replace optional write scopes with their matching read scopes. No action is required for existing apps.

## What changed

The mutation affects only the calling app’s installation. Requested scopes must be declared in `optional_scopes` and must be write scopes with matching read scopes. Required scopes can’t be downgraded. Write scopes that aren’t currently granted are ignored. If any requested scope fails validation, the request is rejected and the installation’s scopes remain unchanged.

Revoking a write scope with `appRevokeAccessScopes` also removes its read access when the read scope was only granted through the write scope. Use `appDowngradeAccessScopes` when your app still needs that read access.

## Who’s affected

This change applies to apps that use Shopify-managed installation and declare optional write scopes with corresponding read scopes. The mutation is available starting with Admin GraphQL API version `2027-01`.

## What to do

If your app no longer needs write access, call `appDowngradeAccessScopes` with the optional write scopes you want to downgrade. For example, downgrade `write_products` to `read_products` when your app no longer needs to create or update products:

```graphql
mutation {
  appDowngradeAccessScopes(scopes: ["write_products"]) {
    downgraded {
      handle
    }
    userErrors {
      field
      message
    }
  }
}
```

The `downgraded` field returns the write scopes that were successfully changed. Check `userErrors` for any validation failures.

## Related docs

* [appDowngradeAccessScopes reference](https://shopify.dev/docs/api/admin-graphql/unstable/mutations/appDowngradeAccessScopes)
* [API Access Scopes](https://shopify.dev/docs/api/usage/access-scopes)
