@UnstableAcpApi (com.agentclientprotocol.sdk.annotation).
That annotation means the element maps to something defined only in the protocolâs
schema.unstable.json, not the stable schema.json. Everything else, anything without the marker,
is a stable promise.
The marker applies to the element itâs directly on: a package annotation covers its classes, a type
annotation covers its members, but it does not propagate to subclasses or to an interfaceâs
implementers. Docs say âunstable (@UnstableAcpApi)â and nothing more; the Javadoc relies on the
annotation itself rather than restating it in prose.
Whatâs unstable today
Neither
session/fork nor providers/* is defined in the stable schema copy
(acp-core/src/test/resources/schema/v1/schema.json): a test suite derives the unstable surface
from that schema and fails if a public member serving an unstable method lacks the marker, or a
stable methodâs member carries it, so this table canât drift from the code silently.
Everything else is stable
Initialize; authenticate (including terminal auth and@Authenticate); logout; every other session
method (new, load, list, close, delete, resume, set_mode, set_config_option, both
select and boolean); prompt and cancel; $/cancel_request; every session/update variant including
session_info_update; file system and terminal calls; permission requests; elicitation (form, URL,
and complete); extension methods; all transports; and the rest of the annotation model.
If youâre using one of these and the code or Javadoc is missing @UnstableAcpApi, thatâs a bug in
the SDK to report, not a signal to treat the API as unstable yourself.