Skip to content

Cannot push code due to "Invalid ID" #1130

Open

Description

@michaelconan

Version: 3.2.0

  • My Script ID is correct, I have copied from project settings and successfully run clasp clone <scriptId>
  • I can run clasp push in a separate folder after cloning the code
  • I am logged in with the current user, the owner of the script

I believe this is masking another error, perhaps due to filename length or total code file size.

I will experiment to attempt to find the underlying issue, but in any case the error message is incorrect.

Activity

  1. sqrrrl commented on Mar 11, 2026

    @sqrrrl
    Member

    DEBUG=clasp:* clasp push might help get a sense of what is going on.

  2. michaelconan commented on Mar 12, 2026

    @michaelconan
    Author

    @sqrrrl anything here that is helpful?

      clasp:core Collecting local files +0ms
      clasp:core Collecting files in C:\Users\micha\Documents\classroom-sync\dist +1ms
      clasp:core Filtered 0 files from ignore rules +2ms
      clasp:core Updating content, request {
      clasp:core   scriptId: '1nGsOPcniI42SpIOYxmZz5F-a_4KSR65YJ9hXoqmQBsUDwLTaVCqmanuc',
      clasp:core   requestBody: {
      clasp:core     files: [
      clasp:core       [Object], [Object],
      clasp:core       [Object], [Object],
      clasp:core       [Object], [Object],
      clasp:core       [Object], [Object],
      clasp:core       [Object], [Object],
      clasp:core       [Object]
      clasp:core     ]
      clasp:core   }
      clasp:core } +3ms
      clasp:core Error: Invalid ID
      clasp:core     at Gaxios._request (C:\Users\micha\AppData\Roaming\npm\node_modules\@google\clasp\node_modules\gaxios\build\src\gaxios.js:142:23)
      clasp:core     at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
      clasp:core     at async UserRefreshClient.requestAsync (C:\Users\micha\AppData\Roaming\npm\node_modules\@google\clasp\node_modules\google-auth-library\build\src\auth\oauth2client.js:429:18)
      clasp:core     at async Files.push (file:///C:/Users/micha/AppData/Roaming/npm/node_modules/@google/clasp/build/src/core/files.js:422:13)
      clasp:core     at async withSpinner (file:///C:/Users/micha/AppData/Roaming/npm/node_modules/@google/clasp/build/src/commands/utils.js:89:16)
      clasp:core     at async onChange (file:///C:/Users/micha/AppData/Roaming/npm/node_modules/@google/clasp/build/src/commands/push.js:47:23)
      clasp:core     at async Command.<anonymous> (file:///C:/Users/micha/AppData/Roaming/npm/node_modules/@google/clasp/build/src/commands/push.js:67:9)
      clasp:core     at async Command.parseAsync (C:\Users\micha\AppData\Roaming\npm\node_modules\@google\clasp\node_modules\commander\lib\command.js:1104:5)
      clasp:core     at async file:///C:/Users/micha/AppData/Roaming/npm/node_modules/@google/clasp/build/src/index.js:36:5 +3s
      clasp:core Handling API error: GaxiosError: Invalid ID
      clasp:core     at Gaxios._request (C:\Users\micha\AppData\Roaming\npm\node_modules\@google\clasp\node_modules\gaxios\build\src\gaxios.js:142:23)
      clasp:core     at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
      clasp:core     at async UserRefreshClient.requestAsync (C:\Users\micha\AppData\Roaming\npm\node_modules\@google\clasp\node_modules\google-auth-library\build\src\auth\oauth2client.js:429:18)
      clasp:core     at async Files.push (file:///C:/Users/micha/AppData/Roaming/npm/node_modules/@google/clasp/build/src/core/files.js:422:13)
      clasp:core     at async withSpinner (file:///C:/Users/micha/AppData/Roaming/npm/node_modules/@google/clasp/build/src/commands/utils.js:89:16)
      clasp:core     at async onChange (file:///C:/Users/micha/AppData/Roaming/npm/node_modules/@google/clasp/build/src/commands/push.js:47:23)
      clasp:core     at async Command.<anonymous> (file:///C:/Users/micha/AppData/Roaming/npm/node_modules/@google/clasp/build/src/commands/push.js:67:9)
      clasp:core     at async Command.parseAsync (C:\Users\micha\AppData\Roaming\npm\node_modules\@google\clasp\node_modules\commander\lib\command.js:1104:5)
      clasp:core     at async file:///C:/Users/micha/AppData/Roaming/npm/node_modules/@google/clasp/build/src/index.js:36:5 {
      clasp:core   config: {
      clasp:core     url: 'https://script.googleapis.com/v1/projects/1nGsOPcniI42SpIOYxmZz5F-a_4KSR65YJ9hXoqmQBsUDwLTaVCqmanuc/content',
      clasp:core     method: 'PUT',
      clasp:core     apiVersion: '',
      clasp:core     userAgentDirectives: [ [Object] ],
      clasp:core     paramsSerializer: [Function (anonymous)],
      clasp:core     data: { files: [Array] },
      clasp:core     headers: {
      clasp:core       'x-goog-api-client': 'gdcl/7.2.0 gl-node/24.5.0',
      clasp:core       'Accept-Encoding': 'gzip',
      clasp:core       'User-Agent': 'google-api-nodejs-client/7.2.0 (gzip)',
      clasp:core       Authorization: '<<REDACTED> - See `errorRedactor` option in `gaxios` for configuration>.',
      clasp:core       'Content-Type': 'application/json'
      clasp:core     },
      clasp:core     params: {},
      clasp:core     validateStatus: [Function (anonymous)],
      clasp:core     retry: true,
      clasp:core     body: '<<REDACTED> - See `errorRedactor` option in `gaxios` for configuration>.',
      clasp:core     responseType: 'unknown',
      clasp:core     errorRedactor: [Function: defaultErrorRedactor],
      clasp:core     retryConfig: {
      clasp:core       currentRetryAttempt: 0,
      clasp:core       retry: 3,
      clasp:core       httpMethodsToRetry: [Array],
      clasp:core       noResponseRetries: 2,
      clasp:core       retryDelayMultiplier: 2,
      clasp:core       timeOfFirstRequest: 1773354302894,
      clasp:core       totalTimeout: 9007199254740991,
      clasp:core       maxRetryDelay: 9007199254740991,
      clasp:core       statusCodesToRetry: [Array]
      clasp:core     }
      clasp:core   },
      clasp:core   response: {
      clasp:core     config: {
      clasp:core       url: 'https://script.googleapis.com/v1/projects/1nGsOPcniI42SpIOYxmZz5F-a_4KSR65YJ9hXoqmQBsUDwLTaVCqmanuc/content',
      clasp:core       method: 'PUT',
      clasp:core       apiVersion: '',
      clasp:core       userAgentDirectives: [Array],
      clasp:core       paramsSerializer: [Function (anonymous)],
      clasp:core       data: [Object],
      clasp:core       headers: [Object],
      clasp:core       params: {},
      clasp:core       validateStatus: [Function (anonymous)],
      clasp:core       retry: true,
      clasp:core       body: '<<REDACTED> - See `errorRedactor` option in `gaxios` for configuration>.',
      clasp:core       responseType: 'unknown',
      clasp:core       errorRedactor: [Function: defaultErrorRedactor]
      clasp:core     },
      clasp:core     data: { error: [Object] },
      clasp:core     headers: {
      clasp:core       'alt-svc': 'h3=":443"; ma=2592000,h3-29=":443"; ma=2592000',
      clasp:core       'content-encoding': 'gzip',
      clasp:core       'content-type': 'application/json; charset=UTF-8',
      clasp:core       date: 'Thu, 12 Mar 2026 22:24:59 GMT',
      clasp:core       server: 'ESF',
      clasp:core       'transfer-encoding': 'chunked',
      clasp:core       vary: 'Origin, X-Origin, Referer',
      clasp:core       'x-content-type-options': 'nosniff',
      clasp:core       'x-frame-options': 'SAMEORIGIN',
      clasp:core       'x-xss-protection': '0'
      clasp:core     },
      clasp:core     status: 404,
      clasp:core     statusText: 'Not Found',
      clasp:core     request: {
      clasp:core       responseURL: 'https://script.googleapis.com/v1/projects/1nGsOPcniI42SpIOYxmZz5F-a_4KSR65YJ9hXoqmQBsUDwLTaVCqmanuc/content'
      clasp:core     }
      clasp:core   },
      clasp:core   error: undefined,
      clasp:core   status: 404,
      clasp:core   code: 404,
      clasp:core   errors: [ { message: 'Invalid ID', domain: 'global', reason: 'notFound' } ],
      clasp:core   Symbol(gaxios-gaxios-error): '6.7.1'
      clasp:core } +0ms
      clasp:cli Error: Error: Invalid ID
      clasp:cli     at handleApiError (file:///C:/Users/micha/AppData/Roaming/npm/node_modules/@google/clasp/build/src/core/utils.js:161:11)
      clasp:cli     at Files.push (file:///C:/Users/micha/AppData/Roaming/npm/node_modules/@google/clasp/build/src/core/files.js:439:13)
      clasp:cli     at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
      clasp:cli     at async withSpinner (file:///C:/Users/micha/AppData/Roaming/npm/node_modules/@google/clasp/build/src/commands/utils.js:89:16)
      clasp:cli     at async onChange (file:///C:/Users/micha/AppData/Roaming/npm/node_modules/@google/clasp/build/src/commands/push.js:47:23)
      clasp:cli     at async Command.<anonymous> (file:///C:/Users/micha/AppData/Roaming/npm/node_modules/@google/clasp/build/src/commands/push.js:67:9)
      clasp:cli     at async Command.parseAsync (C:\Users\micha\AppData\Roaming\npm\node_modules\@google\clasp\node_modules\commander\lib\command.js:1104:5)
      clasp:cli     at async file:///C:/Users/micha/AppData/Roaming/npm/node_modules/@google/clasp/build/src/index.js:36:5 {
      clasp:cli   [cause]: {
      clasp:cli     code: 'NOT_FOUND',
      clasp:cli     message: 'Invalid ID',
      clasp:cli     error: GaxiosError: Invalid ID
      clasp:cli         at Gaxios._request (C:\Users\micha\AppData\Roaming\npm\node_modules\@google\clasp\node_modules\gaxios\build\src\gaxios.js:142:23)
      clasp:cli         at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
      clasp:cli         at async UserRefreshClient.requestAsync (C:\Users\micha\AppData\Roaming\npm\node_modules\@google\clasp\node_modules\google-auth-library\build\src\auth\oauth2client.js:429:18)
      clasp:cli         at async Files.push (file:///C:/Users/micha/AppData/Roaming/npm/node_modules/@google/clasp/build/src/core/files.js:422:13)
      clasp:cli         at async withSpinner (file:///C:/Users/micha/AppData/Roaming/npm/node_modules/@google/clasp/build/src/commands/utils.js:89:16)
      clasp:cli         at async onChange (file:///C:/Users/micha/AppData/Roaming/npm/node_modules/@google/clasp/build/src/commands/push.js:47:23)
      clasp:cli         at async Command.<anonymous> (file:///C:/Users/micha/AppData/Roaming/npm/node_modules/@google/clasp/build/src/commands/push.js:67:9)
      clasp:cli         at async Command.parseAsync (C:\Users\micha\AppData\Roaming\npm\node_modules\@google\clasp\node_modules\commander\lib\command.js:1104:5)        
      clasp:cli         at async file:///C:/Users/micha/AppData/Roaming/npm/node_modules/@google/clasp/build/src/index.js:36:5 {
      clasp:cli       config: [Object],
      clasp:cli       response: [Object],
      clasp:cli       error: undefined,
      clasp:cli       status: 404,
      clasp:cli       code: 404,
      clasp:cli       errors: [Array],
      clasp:cli       Symbol(gaxios-gaxios-error): '6.7.1'
      clasp:cli     }
      clasp:cli   }
      clasp:cli } +4s
    Invalid ID
    
  3. michaelconan commented on Mar 12, 2026

    @michaelconan
    Author

    Figured it out - Claude hallucinated the ID for the library I wanted to import so it was rejecting my manifest.

    I believe clasp just passes on the Apps Script API error so it may not be possible to provide a better error to isolate this.

  4. sqrrrl commented on Mar 13, 2026

    @sqrrrl
    Member

    Thanks, good to know.

    There are some cases where clasp catches the error to return more detail. I'd need to check:

    • push/pull a completely invalid script ID (may also give NOT_FOUND Invalid ID
    • push/pull a valid script that user doesn't have access to

    If the error is unique we can return a better error.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions