When something goes wrong, Microbe Studio reports a stable code alongside the message — DETECT_REGION_TIMEOUT, MAX_NODE_EXECUTIONS_EXCEEDED, FLOW_PACKAGE_SIGNATURE_INVALID. The message is translated into your language; the code never changes, which makes it the thing to search for and the thing to quote in a bug report.
This page is organised by when you hit it, because that is how you look one up.
Some errors are marked retryable below. That means the runtime itself may try the operation again — for example a detection re-polls until its timeout. A final error stops there and needs you to change something.
This is separate from a node's own retry policy, and separate again from status versus route — a detection that finds nothing is not automatically an error at all. See Execution Model first if a "failure" surprised you.
While you are building a flow
These come from validation and from the editor. All are final: nothing retries an authoring mistake.
Graph and wiring
| Code | What it means | What to do |
|---|
FLOW_VALIDATION_ERROR | Validate found blocking problems | Step through them with ◀ Previous error / Next error ▶ |
TRANSITION_NOT_FOUND | A node returned a route with no edge wired | Add or fix an edge for the route it emitted — most often an unwired Failure port |
EDGE_PORT_INVALID | An edge starts from a port that node does not have | Reconnect from a valid source port |
NODE_TYPE_UNSUPPORTED | The flow carries a node type this build does not know | Remove it, or update the node — see Legacy Nodes |
STALE_STATE | Your edit was rejected because the flow changed while you were editing | Nothing was lost. Redo the edit |
Variables and expressions
| Code | What it means | What to do |
|---|
VARIABLE_NOT_DECLARED | An expression uses a name nothing declares | Declare it in Flow Inputs… or create it with a Variable node. Using a name is not declaring it |
VARIABLE_TYPE_INVALID | A declared variable's type is not one the schema accepts | Fix the declared type |
VARIABLE_SHADOWS_GLOBAL | A flow variable reuses a reserved global name | Rename the flow variable |
TYPE_MISMATCH | A default or initial value violates the variable's declared type | Usually an OCR target declared number instead of number?. Declare OCR-bound variables nullable — a failed read writes empty, never a fabricated 0 |
EXPRESSION_SYNTAX_ERROR | The expression does not parse | Fix the syntax |
EXPRESSION_NOT_BOOLEAN | A condition evaluated to something that is not true/false | Conditions must be boolean — compare, do not just reference |
EXPRESSION_EVALUATION_FAILED | The expression parsed but blew up at run time | Check for missing values and division by zero |
Loops
| Code | What it means | What to do |
|---|
LOOP_START_MISSING / LOOP_END_MISSING | A loop region is missing one of its markers | Every Loop has a paired Loop End the editor manages — do not delete one alone |
LOOP_BODY_NOT_CLOSED | The body never reaches its Loop End | Wire the body through to the Loop End |
LOOP_PAIR_AMBIGUOUS | Which Loop End belongs to which Loop cannot be decided | Simplify the nesting |
LOOP_REGION_INVALID | The region shape is not a valid loop | Re-create the loop rather than repairing it by hand |
LOOP_MODE_INVALID | The loop mode is not one of the accepted values | Pick a valid mode |
LOOP_CONDITION_MISSING | A condition-driven loop has no condition | Supply one, or switch to a fixed count |
LOOP_CONTROL_OUTSIDE_LOOP | Break or Continue sits outside any loop | Move it inside the loop region it is meant to control |
MAX_ITERATIONS_INVALID | The iteration cap is not a usable number | Set a positive integer |
Sub flows
| Code | What it means | What to do |
|---|
SUBFLOW_NOT_FOUND | A Sub Flow node points at a flow that no longer exists | Re-point it, or import the missing flow. Shows as missing in the dependency viewer |
SUBFLOW_INVALID | The referenced child is not usable as a sub flow | Open the child and validate it |
FLOW_CIRCULAR_DEPENDENCY / SUBFLOW_RECURSION_DETECTED | A flow calls itself, directly or through a chain | Remove the reference that closes the loop — the message names the chain |
SUBFLOW_DEPTH_EXCEEDED | Nesting is deeper than allowed | Flatten it. Two or three levels covers almost everything — see Sub Flows |
SUBFLOW_VARIABLE_CONFLICT | A child input collides with a name already in scope | Rename the input |
Monitor scopes
| Code | What it means | What to do |
|---|
OBSERVER_FORBIDDEN_NODE | A node type that cannot live inside a watched zone is inside one | Move it out — see Monitor Scope |
OBSERVER_NESTED_MONITOR | A monitor scope is inside another monitor scope | Monitors do not nest. Use one zone |
OBSERVER_SPEC_INVALID | The scope's configuration is not valid | Re-create the scope |
SCOPE_PAIR_AMBIGUOUS / SCOPE_REGION_INVALID | The zone's geometry cannot be resolved | Delete and re-cover the selection |
Regions, points and templates
| Code | What it means | What to do |
|---|
RECT_TOO_SMALL | The drawn rectangle is below the usable minimum | Draw a bigger region |
RECT_X_OVERFLOW / RECT_Y_OVERFLOW | The rectangle runs off the screen | Redraw inside the frame |
POINT_INVALID / POINT_OUT_OF_BOUNDS | A coordinate is unusable or off-screen | Re-pick it on Live Preview |
TEMPLATE_NOT_FOUND | A node references a template asset that is gone | Re-capture it, or re-import the flow package |
TEMPLATE_QUALITY_TOO_LOW | The captured crop is too small or too plain to match reliably | Recapture a larger, more distinctive template |
TEMPLATE_CHECKSUM_MISMATCH | The stored template file does not match its record | Recapture or repair the asset |
TEMPLATE_CAPTURE_FAILED | The capture itself failed | Check the attached instance, then retry |
While a flow runs
Guardrails — the run stopped on purpose
These are the runtime protecting you. All final.
| Code | What it means | What to do |
|---|
MAX_NODE_EXECUTIONS_EXCEEDED | The run executed more nodes than the flow allows | Loops multiply: 200 iterations over 12 nodes is ~2400 executions. Raise Max node executions…, or look for an unintended cycle |
MAX_RUNTIME_DURATION_EXCEEDED | The run ran longer than its time cap | Split the workload, or raise the cap |
MAX_CONSECUTIVE_FAILURES_EXCEEDED | Too many failures in a row with nothing succeeding between | Detection "not founds" do not cause this. Look for an action node failing repeatedly |
Detection
| Code | Retryable | What it means | What to do |
|---|
DETECT_IMAGE_NOT_FOUND | yes | The template was not matched | Adjust the template, threshold, search region or timeout. Run Test Node and read the real confidence before touching the threshold |
DETECT_AMBIGUOUS | yes | Several candidates matched and none wins | Review the candidates or tune the threshold |
DETECT_REGION_TIMEOUT | yes | A Check Region rule never became true in time | Raise timeoutMs, adjust the rule, or verify what is actually in the region |
DETECTION_ENGINE_FAILED | — | The matcher itself failed | Check the attached instance and the template asset |
OCR
| Code | Retryable | What it means | What to do |
|---|
FEATURE_OCR_UNAVAILABLE | — | OCR is not installed or not enabled | Install and enable OCR (Tesseract) before running Read Text nodes. Also check the flow's ocrEnabled gate — this is the commonest cause of "Read Text does nothing" |
OCR_LANGUAGE_MISSING | — | The requested language pack is not installed | Install that Tesseract language pack, or pick an available language |
OCR_FAILED | — | The OCR call failed | Check the OCR executable path in Settings |
OCR_EXTRACT_NO_MATCH | yes | OCR read text, but the extraction pattern matched nothing in it | Compare your pattern against the raw read in Text read result. If the raw text is wrong, the region or content type is wrong — not the pattern |
OCR_REGEX_INVALID | — | The custom pattern does not compile | Fix the regex |
OCR_CONFIG_INVALID | — | The OCR settings are not a usable combination | Re-check language and content type |
| Code | Retryable | What it means | What to do |
|---|
COORDINATE_SOURCE_UNAVAILABLE | yes | A Click points at a Find Image node that has not produced a match on this path | Run the Find Image first, or verify it matched before the click. This is what a copy-pasted Click usually hits |
COORDINATE_PROFILE_INVALID | — | The coordinate profile is unusable | Re-pick the target |
INPUT_FAILED | — | The emulator rejected the input | Check the instance is reachable and focused |
INPUT_COMMAND_TIMEOUT | — | The input command did not complete in time | Check emulator load |
TEXT_EMPTY | — | Input Text has nothing to type | Supply text, or a variable that is not empty |
TEXT_UNSUPPORTED_CHARACTER | — | A character cannot be sent to the emulator | Remove or transliterate it |
TEXT_NOT_FOUND / TEXT_MATCH_INVALID | — | A text match target or rule is unusable | Fix the match configuration |
TEXT_MODE_UNSUPPORTED / TEXT_CLEAR_UNSUPPORTED | — | The requested typing or clearing mode is not available | Pick a supported mode |
SWIPE_INVALID | — | The Swipe geometry is unusable | Redraw start and end |
KEY_UNSUPPORTED | — | That key is not sendable | Pick another key |
WAIT_INVALID | — | The wait duration is not usable | Set a positive duration |
Captcha
| Code | Retryable | What it means | What to do |
|---|
FEATURE_CAPTCHA_UNAVAILABLE | — | The captcha solver is not available in this build | Check the flow's captcha feature gate |
CAPTCHA_UNSOLVED | yes | The challenge was not solved within the attempts allowed | Raise Max attempts, check the challenge region, or wire the unsolved output to a refresh-and-retry path |
Emulator and instance
| Code | What it means | What to do |
|---|
INSTANCE_NOT_ATTACHED | The action needs an attached preview instance and there is none | Attach one in Live Preview |
INSTANCE_NOT_FOUND | The referenced instance is gone | Re-scan with Add Instance |
INSTANCE_OFFLINE | The instance is not reachable | Start the emulator |
INSTANCE_IDENTITY_AMBIGUOUS | Two instances cannot be told apart | Check the MuMu instance list |
INSTANCE_LAUNCH_FAILED / INSTANCE_SHUTDOWN_FAILED | Start or stop did not take | Check MuMu directly, then retry |
INSTANCE_ATTACH_FAILED / INSTANCE_DETACH_FAILED | Attaching the preview failed | Re-open Live Preview |
INSTANCE_REGISTRY_PARSE_FAILED / INSTANCE_PLAYER_STATE_UNKNOWN | MuMu's own state could not be read | Restart MuMu |
MUMU_CLI_UNAVAILABLE | mumu-cli.exe was not found | Set the path in Settings — see Troubleshoot MuMu CLI |
MUMU_CLI_INFO_FAILED / MUMU_CLI_ADB_FAILED / MUMU_CLI_CONTROL_FAILED | A MuMu CLI call failed | Check the CLI path and that MuMu is running |
MUMU_DISCONNECTED | The connection to MuMu dropped mid-run | Re-attach; check whether the emulator restarted |
SCREEN_CAPTURE_FAILED / FRAME_UNAVAILABLE | A frame could not be captured | Check the instance is running and not minimised in a way that blocks capture |
While you are operating
| Code | What it means | What to do |
|---|
QUEUE_FLOW_NOT_FOUND | A queue entry points at a flow that is gone | Remove the entry or re-import the flow |
QUEUE_RESOLUTION_MISMATCH | The flow/instance resolution pair differs from the one you confirmed | Your earlier "Add anyway" covered the pair you actually saw. Confirm again — see Flow Queue |
SCHEDULE_NOT_FOUND | The schedule is gone | Re-create it |
SCHEDULE_INVALID | The schedule's timing is not usable | Check recurrence, time and timezone |
SCHEDULE_IMPORT_INVALID | The file is not a valid .muscheduler export | Re-export it |
SCHEDULE_IMPORT_FLOW_MISSING | Flows in the file do not exist on this machine | Choose a replacement for each before importing |
DEPLOYMENT_NOT_FOUND / DEPLOYMENT_START_FAILED / DEPLOYMENT_STOP_FAILED | A deployment action did not complete | Check the target instance |
Packages, licence and account
| Code | What it means | What to do |
|---|
FLOW_PACKAGE_INVALID | The package file is not readable as a package | Get a fresh copy |
FLOW_PACKAGE_SIGNATURE_INVALID | The signature check failed — modified after export, or not from a trusted publisher | Do not import it. Get a new copy from the original publisher |
FLOW_PACKAGE_CHECKSUM_MISMATCH | The contents do not match the manifest | The file is damaged or truncated. Re-download |
FLOW_PACKAGE_DEPENDENCY_MISSING | A sub flow the package depends on is absent | Import the complete package, not one flow from it |
FLOW_PACKAGE_KEY_REQUIRED / FLOW_PACKAGE_KEY_INVALID | A protected package needs a key you do not have or the key is wrong | See Flow Intellectual Property |
FLOW_PACKAGE_IMPORT_FAILED / FLOW_PACKAGE_EXPORT_FAILED | The transfer failed for another reason | Check disk space and permissions |
FLOW_IMPORT_DUPLICATE_ID | A flow with that id already exists | Overwrite deliberately, or rename |
FLOW_OWNERSHIP_FORBIDDEN | Your account may not use this flow | Check who the flow belongs to |
FLOW_LICENSE_EXPIRED | A time-limited Flow License has run out | Renew it — renewal adds to the remaining time |
FLOW_AUTHORIZE_OFFLINE | A protected flow needs an online check and the server was unreachable | Reconnect and retry |
CAPABILITY_NOT_LICENSED | Your licence does not include a capability the flow uses | Check the capability list on your account |
AUTH_REQUIRED | You are not signed in | Sign in |
AUTH_SERVER_UNAVAILABLE | The portal could not be reached | Check your connection |
FLOW_IN_USE / FLOW_EDIT_LOCKED | The flow is running or open elsewhere | Stop the run, or close the other editor |
ASSET_IN_USE | The asset is referenced by a flow | Remove the references first |
Advanced Captcha (AI)
| Code | What it means | What to do |
|---|
AI_MODEL_NOT_INSTALLED | No model archive has been imported | Download and import it through Settings → Advanced Captcha |
AI_ARCHIVE_INVALID | The archive is not readable | Re-download it |
AI_ARCHIVE_UNTRUSTED | The archive is not signed by a trusted source | Do not import it |
AI_ARCHIVE_INCOMPATIBLE | The archive does not match this build | Get the archive for your version |
AI_INSTALL_FAILED | Importing failed | Check disk space |
AI_RUNTIME_UNAVAILABLE | The local AI runtime is not available | Re-run the install |
AI_INFERENCE_FAILED | The model ran but failed on this challenge | Without Advanced Captcha the node still runs on the offline solver — check whether the offline path handles it |
Retired node families
PARALLEL_BRANCH_INVALID, PARALLEL_START_MISSING, PARALLEL_END_MISSING, PARALLEL_PAIR_AMBIGUOUS, PARALLEL_REGION_INVALID belong to the retired Parallel node. If you see one, the flow still carries that node. It never made anything concurrent — see Legacy Nodes and replace it with a Monitor Scope.
Internal codes
These come from layers below the flow you author — schema migration, the editor's own persistence, and the process boundary between the UI and the runtime. You will rarely see one, and when you do the fix is usually "restart the app" or "report it with the code".
SCHEMA_INVALID · SCHEMA_VERSION_UNSUPPORTED · SCHEMA_MIGRATION_MISSING · SCHEMA_MIGRATION_AMBIGUOUS · SCHEMA_MIGRATION_FAILED · SCHEMA_MIGRATION_INVALID_OUTPUT · IPC_PROTOCOL_UNSUPPORTED · IPC_COMMAND_UNKNOWN · IPC_PAYLOAD_INVALID · IPC_TIMEOUT · PERSISTENCE_FAILED · AUTOSAVE_FAILED · EVENT_LOG_CORRUPT · SNAPSHOT_INVALID · REPLAY_MISMATCH · STATE_INVALID · UI_STATE_INVALID · PROJECT_NOT_FOUND · PROJECT_INVALID · PARAM_INVALID · OUTPUT_MAPPING_INVALID · MEMORY_SCOPE_INVALID · MONITOR_SPEC_INVALID · ASSIGNMENTS_EMPTY · SHARE_FORBIDDEN · STOP_REQUESTED · SCALE_INVALID · USER_ABORTED · REGION_NOT_FOUND · DETECTION_ENGINE_FAILED
Copy the code, not the translated sentence. Copy Result in the Properties panel puts a node's whole test result on the clipboard, which is the most useful thing you can attach to a report.
Related pages