Breaking Change: Authentication by Default
October 30, 2026 Breaking change in arize-phoenix 21.0.0 Phoenix no longer starts open to the network. WhenPHOENIX_ENABLE_AUTH is unset, authentication follows the bind address, and an explicit PHOENIX_ENABLE_AUTH still takes precedence.
- Loopback by default.
PHOENIX_HOSTdefaults to127.0.0.1for HTTP, gRPC, and Prometheus, and authentication stays off there. A non-loopback address, such as0.0.0.0or::, turns authentication on. - Docker requires an API key. The image sets
PHOENIX_HOST=::, so configure trace exporters and API clients with an API key, or setPHOENIX_ENABLE_AUTH=false. The Helm chart’s authentication default is unchanged. PHOENIX_SECRETis optional. Without it, Phoenix signs tokens with a key stored in the database, but anyone with a copy of the database can then decrypt saved credentials. Settings → Secrets warns admins when this applies. Setting or changingPHOENIX_SECRETmakes saved credentials unreadable, so re-enter them.- Other changes:
phoenix serve --hostis removed in favor ofPHOENIX_HOST,launch_apphonors the authentication settings, the defaultadminpassword must be changed before it can open a session, and browser sign-out no longer ends CLI or MCP OAuth2 sessions.
Migration Guide
Every step for upgrading from v20 to v21
Authentication
API keys, admin accounts, and secrets
DECISION and AGENT Annotator Kinds
October 29 to 30, 2026 Available in arize-phoenix 21.0.0+ (server), arize-phoenix-client 3.6.0+ (Python), @arizeai/phoenix-client 7.17.0+, and @arizeai/phoenix-cli 1.19.0+ Annotations now record two more sources next toHUMAN, LLM, and CODE, so you can tell decision-model and agent judgments apart from LLM-judge output.
DECISIONmarks annotations produced by a decision model, andAGENTmarks annotations produced by an AI agent.- Works for every annotation target: spans, documents, traces, sessions, and experiment runs, across REST, GraphQL, both SDKs, and the UI.
- In
px,--annotator-kindonannotateand the*-annotations deletecommands accepts both. Older servers reject the new kinds.
Capture Feedback
Annotation fields and annotator kinds
Harbor: Reference Outputs and Agent Responses
October 30, 2026 Available in arize-phoenix-client 3.6.0+ Harbor experiments in Phoenix now show the agent’s answer beside the expected one.- Agent responses become run output. The final text turn of the agent’s ATIF trajectory renders as Markdown in experiment comparisons, even with
trace_mode=null. - Optional reference outputs. Point a task at a JSON file under its
tests/directory, and the plugin stores it as the dataset example’s output. Tasks opt in one at a time.
Harbor
Reference outputs and run output format
Session Turn Previews and PXI Model Search
October 29, 2026 Available in arize-phoenix 20.27.0+- Preview a session turn. Hover over a turn in a session, or move to it with the arrow keys, to see its trace and root span evals, timing, tokens, and cost without opening the trace.
- Search for a PXI model. The PXI model picker shows Current, Recent, and Recommended models, searches every configured provider, and lets you type any model name and pick a provider for it. Settings → Assistant uses the same picker.
Client Updates: Trace Filters, Span Sorting, and Dataset Labels
October 30 to November 2, 2026 Available in arize-phoenix-client 3.6.0+ (Python) and @arizeai/phoenix-client 7.18.0+ (TypeScript) The Python client catches up with filter expressions and span sorting, and the TypeScript client can manage dataset labels.filteronget_traces,sessions.list, andget_sessions_dataframetakes the same expressions as the UI and deprecateserror,min_latency_ms, andmax_latency_ms. Requires Phoenix server 20.12.0+.sortandorderonget_spansreturn spans by start time instead of insertion order. Requires Phoenix server 20.16.0+.- Dataset label helpers in
@arizeai/phoenix-client/datasetscreate, list, update, and delete global labels, and add, remove, or replace the labels on a dataset selected by name or GlobalID.
Filter Expressions
Filter vocabulary for spans, traces, and sessions
TypeScript Datasets
Dataset label helpers
Built-in Model Prices Update Without an Upgrade
October 30, 2026 Available in arize-phoenix 21.0.0+ Phoenix now fetches the latest built-in model prices from GitHub shortly after startup and about once a day, so new models get costs without a server upgrade.- Prices never roll back. Phoenix applies a price table only when it is newer than the one in use, so restarts, downgrades, and mixed-version replicas keep the latest prices.
- Settings → Models shows the table’s date, for example “Built-in prices from Oct 14, 2026”. Custom models are never changed by an update.
- Opt out with
PHOENIX_DISABLE_MODEL_COST_AUTO_UPDATE=true. Air-gapped deployments withPHOENIX_ALLOW_EXTERNAL_RESOURCES=falseskip the fetch too.
Cost Tracking
Keeping built-in prices current
Additional Improvements
October 29 to 30, 2026 Available in arize-phoenix 20.27.0–21.0.0 and arize-phoenix-client 3.6.0+- Members can view sandbox settings in read-only mode, while only admins can change them.
- Prompt version responses include
created_atin the REST API and both SDKs’ types. - IPv6 hosts work end to end:
PHOENIX_HOST=::binds dual-stack, and the clients turn IPv6PHOENIX_HOSTvalues into valid URLs. - Server telemetry redacts personal data, including credentials and customer content, from exported logs and spans.
- Experiment run errors are easier to read, and the annotation score chart sizes its y-axis to the data.
- Python prompt helpers keep Anthropic
extra_body, treat thedeveloperrole as system for Anthropic and Google, and keep a label of0when logging annotation dataframes.

