Reasonix Extension Protocol v2

September 4, 2026 · View on GitHub

  • Protocol ID: reasonix.extension.v2
  • Protocol major: 2
  • Schema: internal/extension/protocol/schema.generated.json
  • Schema hash: sha256:ac99dbabd4f6e354c89aced778d8a83646e7a06345cc67d08bcb3faf73bb56f5

Within major v2 only optional fields, new enum values, and new methods may be added; existing required fields, directions, limits, error reasons, and semantics never change.

Methods

MethodDirectionClassParamsResult
extension/eventhost_to_extension_notificationobservationEventParams-
extension/initializehost_to_extension_requestlifecycleInitializeParamsInitializeResult
extension/initializedhost_to_extension_notificationlifecycleInitializedParams-
extension/intercepthost_to_extension_requestinterceptInterceptParamsInterceptResult
extension/provider/cataloghost_to_extension_requestproviderProviderCatalogParamsProviderCatalogResult
extension/provider/stream/cancelhost_to_extension_requestproviderStreamCancelParamsStreamCancelResult
extension/provider/stream/chunkextension_to_host_notificationproviderStreamChunkParams-
extension/provider/stream/endextension_to_host_notificationproviderStreamEndParams-
extension/provider/stream/openhost_to_extension_requestproviderStreamOpenParamsStreamOpenResult
extension/resources/changedhost_to_extension_notificationobservationResourcesChangedParams-
extension/shutdownhost_to_extension_requestlifecycleShutdownParamsShutdownResult
extension/ui/actionhost_to_extension_requestuiUIActionParamsUIActionResult
extension/ui/submithost_to_extension_requestuiUISubmitParamsUISubmitResult
host/content/readextension_to_host_requestcontentContentReadParamsContentReadResult
host/ui/publishextension_to_host_requestuiUIPublishParamsUIPublishResult
host/ui/requestextension_to_host_requestuiUIRequestParamsUIRequestResult

Intercept events (17)

extension/intercept (blocking) and extension/event (observation) share these frozen hook points:

  • agent.before_start
  • compaction.complete
  • compaction.prepare
  • context.prepare
  • frontend.event
  • input.receive
  • permission.decision
  • provider.request
  • provider.response
  • session.end
  • session.load
  • session.rotate
  • session.save
  • session.start
  • system_prompt.build
  • tool.after
  • tool.before

Limits

LimitValue
frameBytes8388608
externalizeFieldBytes65536
contentRefChunkBytes262144
contentRefObjectBytes8388608

Errors

ReasonJSON-RPC codeRetryableMessage
activation_failed-32000falseComponent activation failed; the new generation was not published.
capability_not_declared-32000falseThe extension used a capability its manifest did not declare.
cleanup_failed-32000trueComponent cleanup failed while disposing scoped effects.
content_ref_expired-32000trueThe referenced content has expired.
dependency_cycle-32000falseThe dependency graph contains a required cycle.
dependency_unsatisfied-32000falseA required dependency is missing or not version-compatible.
frame_too_large-32000falseThe frame exceeds the frozen protocol size limit.
intercept_timeout-32000trueThe extension did not answer an intercept within its timeout.
internal-32603trueAn internal extension protocol error occurred.
invalid_params-32602falseThe params do not match the registered method schema.
protocol_error-32600falseThe extension protocol frame or envelope is invalid.
provider_failed-32000trueThe extension provider stream failed.
provider_interrupted-32000trueThe extension provider stream was interrupted.
schema_mismatch-32000falseA capability schema hash does not match the expected pin.
shutdown_timeout-32000trueThe extension did not shut down within the requested timeout.
stale_generation-32000falseThe message belongs to a superseded runtime generation.
stream_cancelled-32000falseThe provider stream was cancelled.
stream_gap-32000trueA provider stream chunk is missing from the ordered sequence.
unknown_method-32601falseThe method is not registered in Extension Protocol v2.
unsupported_version-32000falseThe peer's extension protocol version is not supported.