ACCESS_DENIED for bulk order query with draft application

I’m trying to get all orders placed within the last 2 weeks. My query ends up looking something like:

mutation {
  bulkOperationRunQuery(
    query: """
      {
        orders (query:"created_at:>'2023-09-11T00:00:00Z'") {
          edges {
            node {
              name
            }
          }
        }
      }
    """
  ) {
    bulkOperation {
      id
      status
    }
    userErrors {
      field
      message
    }
  }
}

I have an application in production today that does this with the “read_orders” scope (not “read_all_orders”). When I try in my unlisted draft application tested in a demo store, the query is created successfully but then it fails with ACCESS_DENIED. The code is not just close, it’s the same code, the same app secret with the same scopes, only with different config variables (different API secret, different shop access token).

Bulk query submitted with production API key and secret: success

Bulk query submitted with test API key and secret: ACCESS_DENIED

Any guesses?

Weirdly, if I add another constraint to the query string so that nothing is returned, it seems like the query happily returns no results (i.e. bulk query completes with as the content).