Skip to content
Docs
Reference

Error codes

Every build and validation problem code and every disko command error, each with a page.

A problem object looks like this; code is stable, message states the fix and docs links to the code's page:

json

line and column are 1-based and present only for source positions. A build reports at most 100 problems.

Build and validation problems

disko publish, the registry and room hosts report these codes in problems.

CodeMeaning
archive_gzip_invalidThe archive is not a valid gzip stream (header, deflate data, CRC or length).
archive_gzip_multi_memberThe gzip stream contains more than one member.
archive_too_largeThe compressed archive exceeds 10 MiB.
archive_trailing_dataBytes follow the single gzip member.
asset_content_mismatchAn asset's bytes do not match the media type its extension selects.
asset_import_formAn asset is imported or re-exported by a form other than its default binding.
digest_mismatchThe uncompressed tar does not hash to the expected release digest.
extension_unsupportedA file or import names an extension that is not allowed here.
file_too_largeOne module exceeds 2 MiB or one asset exceeds 16 MiB.
file_unreachableAn archive file is not reachable from the entry module through imports.
image_dimensionsAn image side is outside 1-4096 px.
import_attributesAn import or re-export carries import attributes (with or assert).
import_dynamicA module uses dynamic import().
import_metaA module uses import.meta.
import_unresolvedA relative import names a file that does not exist with exactly that path.
manifest_invalidgame.json is missing, too large, not valid JSON, or has a missing, unknown or invalid key.
manifest_not_canonicalThe archive game.json differs from its canonical serialization.
module_encodingA module is not UTF-8 or starts with a byte-order mark.
module_syntaxA module does not parse as an ECMAScript 2023 module.
modules_too_largeAll modules together exceed 8 MiB.
package_too_largeThe uncompressed tar, headers included, exceeds 64 MiB.
path_case_conflictTwo file paths are equal after ASCII case-folding.
path_invalidA file path breaks the package path grammar.
source_case_mismatchAn import's case differs from the file name on disk.
source_file_missingA file named by game.json or an import does not exist in the project.
source_symlinkA project path on the import graph is a symbolic link.
specifier_escapes_rootA relative import climbs above the package root.
specifier_invalidAn import specifier is neither an exact relative path nor a disko: built-in name.
stdlib_module_unknownA disko: import names a module the host does not provide.
tar_header_not_canonicalA tar header or its padding differs from the canonical ustar encoding.
tar_malformedThe tar stream is truncated, has a wrong checksum, or has a missing or non-empty end marker.
tar_orderTar entries are not in strictly ascending path-byte order, or a path repeats.
too_many_assetsThe package contains more than 512 assets.
too_many_modulesThe package contains more than 512 modules.
top_level_awaitA module uses await or for await outside any function.
ts_construct_unsupportedA TypeScript file uses import = require, export =, a reference directive, or module/global augmentation.
ts_emit_conflictBoth a.ts and a.js exist, so emitting a.ts would overwrite a.js.
ts_type_errorTypeScript type-checking reported an error.

Command errors

disko reports these codes as error in its --json output.

CodeExit codeMeaning
api_unavailable4disko-master could not be reached, or cannot create test rooms right now.
auth_unavailable4The sign-in service could not be reached or answered with an error, so disko could not sign you in.
build_failed1The local build found problems; the output lists each one with its own code.
conflict5The registry refused the release with a conflict or rate-limit response; wait and try again.
credential_store_unavailable3No OS credential store is available, so disko login --with-token cannot save the token.
game_project_required2disko dev was run in a directory without game.json.
game_required1game.json has no game address, which a real publish needs.
internal_error1disko hit an unexpected error that has no specific code.
invalid_package1The registry rejected the uploaded archive and listed the problems it found.
invalid_token3The value given as a CLI token is not a dpt_ CLI token.
missing_permission3The CLI token lacks the permission the command needs, such as publish for the game or test_rooms.
not_found3The game does not exist, or the credential in use may not publish to it.
quota_exceeded5The account has used up a quota, such as publishes per 24 hours, stored release bytes or concurrent test rooms.
registry_error1The registry refused the request with an error the CLI has no specific handling for.
registry_unavailable4The registry or disko-master could not be reached, or is temporarily unavailable.
sign_in_failed3Browser sign-in did not complete: it timed out, was canceled, or was rejected.
token_required2disko login --with-token read no token, because stdin is a terminal or is empty.
unauthorized3The credential was rejected: the token or sign-in is invalid, expired or revoked.
usage2A command was run with an unknown, repeated, malformed or missing flag or argument.
version_exists5This version is already published with a different archive or visibility; releases are immutable.
visibility_not_allowed2A private game accepts only private releases.
visibility_required2Publishing to a public game needs --visibility; there is no default.