Debug flow
Inputs and logs
Inputs are JSON objects. Read the complete input withapi.input() or a named property with api.input(name). Use api.log() for structured runtime diagnostics and never log secrets.
Streaming behavior
Streaming debug and execute operations emit log frames, then exactly one terminal result or error, followed by completion. The stream is request-scoped and is not a durable log tail. Use execution history and trace views for later investigation. Disconnect normally requests cancellation. Cancellation is cooperative: an external system may have accepted a mutation before the request ended, so verify consequential writes before retrying.Debug safety
readOnly: true rejects protected platform mutations with READ_ONLY_OPERATION_FORBIDDEN; it does not silently skip them. External HTTP requests remain real. HTTP responses written to Storage and legacy upload URLs require readOnly: false. Raw SQL runs in a read-only database transaction in restricted mode. Choose full execution deliberately when testing writes, and verify consequential effects before retrying.
Test the boundary, not only the happy path
Investigate a failed run
- Capture the Execution ID, operation ID, UTC timestamp, component version, and debugger settings.
- Find the first failing structured log or platform call; do not diagnose from the final message alone.
- Confirm the effective principal, role, resource ACL, Secret access, and instance limit.
- Compare the active library and Component versions with the editor state used in the run.
- Check the downstream Database, Storage object, Event, Job, or provider before repeating a mutation.

