Changelog
This page records public, user-visible release changes. It is curated from published product material and is not generated from private repository history.
1.2.0 — 2026-10-12
Release notes for 1.2.0 (open-source build, release on GitHub ) and 1.2.0-ee (managed-services build). Items marked (managed services) ship in the managed-services build only.
Warning. Upgrading needs operator action, and the managed-services upgrade is not rolling. Read Upgrading to 1.2.0 before deploying.
User-visible changes
Administration
- A new user is offered a guided first setup (provider and key, model, agent, a Playground test, channels and the agent key, optional knowledge) and then an interface tour; the first visit to an agent’s page offers a tour of its sections. Every step can be skipped or dismissed for good, and the Help menu in the header reopens them. The state is stored per user (
GET /api/mereturnsonboarding,PATCH /api/me/onboardingwrites it); accounts that exist at the upgrade start with it dismissed. - An organization Owner issues and revokes management API keys from API keys in the panel on the open-source build too. A key holds the Owner permission set, can expire, is shown once, and cannot issue or revoke keys itself. polyant-cli authenticates with it.
- Management API keys are stored and verified as a SHA-256 digest instead of bcrypt, which held the event loop for about 250 ms on every key-authenticated request. An existing key keeps working and is rewritten on first use.
- The panel’s Playground has its own route,
POST /api/instances/{slug}/playground/stream, which uses the signed-in session and the newagent.playground:usepermission, held by every built-in role, Viewer included. Testing an agent from the panel needs neither its API key nor its Web channel. - (managed services) The outbound mail relay, the installation settings, deleting an organization and deleting a custom role accept only a signed-in session: a personal token or a management key is refused, so a leaked one cannot make changes that outlive it. A custom role someone still holds answers
409instead of being deleted. See Personal API tokens. - (managed services) A management API key can revoke only itself, not the organization’s other keys.
- Installation policies hold the settings that used to be environment variables: the engine’s public address, analytics retention, live-stream caps, rate-limit window and limit, agent-to-agent and MCP timeouts, and scheduler deadlines. They live at Settings → General on open source and Admin Console → Installation policies with managed services, which also holds the conversation-list timeout and the dev-mode limits. See Installation policies.
- The engine’s public address can be corrected in the panel without a redeploy.
BASE_URLstays as the value a fresh installation boots with. - Agents can override time zone, locale, memory dedup threshold and message-coordination timings from their Settings page.
- The engine warns at boot for each retired environment variable still set, naming where the value is set now.
- (managed services) Outbound mail is configured in Installation policies, and a new SMTP password takes effect without a restart.
- (managed services) Each organization declares its own SSO domains. Owners holding the multi-organization licence can create organizations from a panel session again, and a platform admin can create one with a personal API token.
- (managed services) The People list expands each member into one role select per workspace.
- (managed services) Revoking a personal API token also deletes the dev tokens and revokes the pending invitations it issued.
- (managed services) A Platform Admin can tick Act as Platform Admin when creating a personal API token. Such a token works across every organization and on the Admin Console routes, must expire within 24 hours, acts as a Platform Admin only while its holder still is one, keeps any restriction chosen for it, and is audited at creation and on every use. Impersonation, the routes that create, edit or reset the password of a user, the mail relay and the installation settings refuse every token. See Personal API tokens.
- (managed services) A Platform Admin who adds their own address to an organization joins directly with the chosen role, with no invitation or email.
- (managed services) The invitation page offers the sign-in methods the invited account actually has, Google and/or password, so a Google-only account can accept; an invitee already signed in with the invited address accepts with one click. See Invitations.
- Signed-out pages can switch language, and members can no longer remove their own membership by accident.
AI providers, models and spend
- New models: OpenAI’s gpt-6 family, Claude Opus 5, Opus 5.5, Sonnet 5.5, Haiku 5.5 and Fable 5.1, several new Nebius models, and on Bedrock Claude Opus 5, Opus 5.5, Sonnet 5.5 and Haiku 5.5.
- Calls to Claude Haiku 5.5 above 100K prompt tokens, and to GPT-5.4, GPT-5.6 and GPT-6 above 272K, are recorded at the providers’ long-prompt rates.
- Recorded spend matches what the providers bill: Amazon Nova is priced at the eu-south-1 rate (it costs more than 1.1.x reported), a turn preempted by a follow-up message leaves its cost row, embedding calls are logged, and long-period totals keep their precision.
- The embedder selector lists the embedders the server actually serves, and AI providers and embedders can be registered at boot.
- Switching thinking off now switches it off on models that reason by default. Models that always reason show the toggle locked on.
- A failed multi-step model call is logged with the cost of the steps it completed.
- (managed services) TensorX, Scaleway Generative APIs and Regolo.ai are available as chat providers; TensorX and Regolo.ai also provide embeddings.
- (managed services) Platform admins decide which providers and models each organization may use; organizations narrow them per workspace and hold named provider connections.
GET /api/instances/{slug}/providerstells an agent’s builder what its workspace admits. - (managed services) Spend caps per calendar window, per contact and per conversation. They are soft caps. Once a cap is reached a voice note is not transcribed and the sender gets the stop message. A phone call is only partly under the caps: speech, transcription, turn detection and the judges are billed by their providers outside them.
- (managed services) Every provider credential is a named provider connection bound to a role: the agent’s conversation, its embedder, voice-note transcription, each part of a phone call, and the organization’s library embedder. A connection belongs to the organization, which lends it to workspaces, or to one agent, which is refused in an organization set to Organization credentials only. A role that cannot run is refused and reported, never served by another key. The organization’s Provider credentials page is now Connections, under Settings → Organization, with a catalog of what each provider can do, and each agent has a Providers section listing its roles and their readiness. ElevenLabs, Deepgram and Typesafe connections are created like any other.
- (managed services) A provider connection can also belong to one workspace, usable by that workspace’s agents alone. A managed-only organization refuses workspace and private connections, when they are created and at every call. A workspace’s settings list its own connections and those the organization lends it.
- (managed services)
GET /api/instances/{slug}/provider-connectionslists an agent’s private connections, each withusable; in a managed-only organization they stay listed as not usable and can still be deleted. InGET /api/instances/{slug}/provider-roleseach role names its boundconnection, and itsoptionshold only connections the binding would accept. Deleting a connection a role is bound to answers409, for an organization’s connection as for an agent’s. - (managed services) A Bedrock connection holding a region and no key uses the deployment’s own AWS identity only in an organization a platform admin has granted it, from the organization’s Access tab in the Admin Console or
/api/platform/organizations/{targetOrgSlug}/ambient-aws.
Channels, conversations and tools
- Web is a channel. An agent’s
/v1/chat/completionsandchat/streamanswer only while its Web channel is on, switched in the Channels section like Telegram and Slack. A new agent starts with every channel off, Web included, and requires its API key. See Channels → Web/API. - (managed services) A telephone voice channel: an agent answers calls to a Twilio number, with ElevenLabs speech and Deepgram Flux turn detection, through the same pipeline, governance and spend caps as every other channel. The voice layer’s own model calls run on the selected text model (OpenAI
gpt-5.4-miniby default, Anthropic or Bedrock in the EU otherwise) and are charged to the agent; the judges run on Typesafe Jev or OpenAI Decisions. Each part of a call authenticates with the connection bound to one of the agent’s voice roles, and the voice card asks for no key. Italian is the only language pack. - The agent’s tool traces, runs, governance events and retention runs are one Logs section, with the record picked by tab.
- The conversation header keeps the title and one metadata line; the view switches, copy ID, rename and delete move into its ⋯ menu.
- New agents no longer start with
createSkillenabled; existing agents keep the tools they have. - Agent Status flags a Bedrock agent or embedder with no AWS region.
- Telegram and Slack receive messages through webhooks, so a rolling deploy no longer silences Telegram.
- Web and API callers can pass a
contextobject onchat/streamand/v1/chat/completions, mapped onto the conversation state through a per-agent field mapping under Channels → Web/API. _privateis a reserved conversation-state key that is stored but never rendered into the prompt.- A failed upload of an inbound attachment no longer loses the turn. Storing inbound attachments is a per-agent switch, Store attachments, in a card of the agent’s Advanced section that also holds the bucket, region and access keys; deleting a conversation or an agent deletes the files stored for it. See Model → Attachment storage.
- The GitHub, Render, HubSpot, Markdown-to-PDF and file-upload tools ship as plugins with namespaced names. HubSpot comes from polyant-hubspot-plugin v1.1.1, Markdown-to-PDF and file upload from polyant-extra-plugin v1.1.0; the GitHub and Render tools have no open-source plugin.
- (managed services) A plugin marketplace: Owners and Admins holding
org.plugin:manageinstall, update, roll back and uninstall signed plugin releases without rebuilding the image. Platform admins manage marketplaces, block releases, deny a plugin to an organization and grant the plugins baked into the image. - (managed services) A semantic governance policy can fail closed, blocking a message its classifier could not evaluate.
- Scheduled tasks recover after a crash or a run past its deadline, and
GET /health/schedulerreports free slots and stuck runs. - Agent Status names unavailable tools with their cause, missing provider credentials and insufficient Knowledge access.
readSkillexposes sensitive skill environment values as opaque placeholders, resolved only at eligible tool execution.- (managed services) Shared knowledge libraries at organization and workspace level, and remote dev-mode sessions with audited open and close events. The embedder the shared libraries are indexed with is set on the organization’s Knowledge page or through
GET/PUT /api/organizations/{orgSlug}/knowledge/embedder, withorg.secret:readandorg.secret:write; a change is refused with409while any shared document exists. See Knowledge → The library embedder. - The public documentation publishes
llms.txt, downloadable OpenAPI JSON, exact MCP and A2A routes and this release history.
Breaking changes
- New agents start with the Web channel off and require their API key.
POST /v1/chat/completionsandPOST /api/instances/{slug}/chat/streamanswer404until the agent’s Web channel is enabled, which needs its key unless authentication is turned off. Existing agents get Web switched on by the upgrade and keep their authentication setting. Scripts that create an agent and then call it must save its key and enable Web. Bundles are exported as format 1.3 on open source and 1.5 with managed services; an older bundle imports with Web on. - No seeded
demo-agent. A fresh installation seeds no agent, and the upgrade deletes the seededdemo-agentwhere it was never used. - The Anthropic
fasttier moves to Claude Haiku 5.5. It runs the background work (titles, memory, summaries) of every Anthropic agent, pinned or not, so those jobs change model and price. - Each Telegram channel has its own webhook secret. It used to be derived from the bot token. Existing channels get a random secret and register their webhook again at the next engine start or channel enable; until then Telegram’s deliveries fail verification.
- LangSmith metadata key renamed. The conversation id in trace metadata is now
conversation_id(it wasoa_conversation_idon open source andab_conversation_idwith managed services). Dashboards and filters built on the old key need updating. - Telegram and Slack need a public HTTPS address. The engine must be reachable on
/webhooks/*with no sign-in in front. Slack apps must switch Socket Mode off and point Event Subscriptions at<public address>/webhooks/slack/<agent slug>; the Slack app-level token is no longer used. - Tool families moved to plugins. GitHub, Render, HubSpot, Markdown-to-PDF and file-upload tools must be added to the image as plugins, and take namespaced names such as
github:issue,hubspot:contactandextra:fileUpload. A migration renames them in place, so agents keep them enabled and skills keep their links.verifyDocumentand (managed services)claudeCodewere removed without replacement. - Custom S3 endpoints are removed.
s3_endpointis no longer read and stored values are deleted (open-source migration0081, managed-services migration0117). MinIO, Cloudflare R2 and other custom endpoints are unsupported. - Object storage needs a region and static keys.
extra:fileUploadand attachment storage reach an agent’s bucket only with itsaws_region,aws_access_key_idandaws_secret_access_key: there is no fallback to the deployment’sAWS_REGION, ands3_use_task_roleis no longer read, so the deployment’s own AWS identity is never used. An agent without the region no longer sees the tool, and one that relied on the task role stops uploading until it has static keys. Bedrock agents with no region are refused, on chat and on embeddings. - Retired environment variables. Datetime and locale, memory dedup, message coordination, knowledge cap, analytics retention, stream caps, rate limits, agent and MCP timeouts, scheduler deadlines,
AWS_REGION,DEFAULT_INSTANCE_ID,PLATFORM_ADMIN_EMAIL,PLATFORM_S3_*,DEBUG_LLM_PAYLOADandLANGSMITH_*no longer control the product. Values set to something other than the default must be re-entered in the panel. The CDKconfig.yamlappblock keeps onlytimezone. See Retired variables. - OpenAI tiers moved to gpt-6.
fast,standardandheavyresolve togpt-6-luna,gpt-6-solandgpt-6-astra. Agents without a pinned model, and their background jobs, change model and price. - Prices corrected. Claude Sonnet 5, the gpt-5.6 family,
o3cached input and Bedrockeu.*Claude profiles are recorded at their published prices, so cost figures change for those models. - Thinking off is sent explicitly. Agents with thinking off on gpt-6 sol and luna, Claude Opus 5 and Sonnet 5 stop reasoning and stop paying for it.
- Unknown embedders fail. An embedder name the server does not serve, from an import or a stale row, now fails instead of falling back to OpenAI, and an agent bundle naming one is refused on import.
- (managed services) Mail must be re-entered.
SMTP_*,MAIL_FROMandPANEL_URLare not read as a fallback: until the relay is entered in Installation policies, no invitation or password-reset mail is sent. - (managed services) Sign-in domains are per organization.
AUTH_ALLOWED_DOMAINandAUTH_ALLOWED_DOMAINSare replaced by each organization’s SSO domains, which start empty and restrict nothing. - Node 24 and non-root images. The engine and the panel run on Node 24, and both images run as uid 1000: a volume mounted on the engine’s logs or workspaces must be writable by that user.
- Attachment storage is opt-in. Store attachments is off for every agent after the upgrade; turn it on where the files users send must be kept.
- (managed services) Retention policies arrive disabled. Every per-agent retention policy is switched off on upgrade and must be re-enabled once its window is checked. A window must be a positive number of days.
- (managed services) Retention windows are required. Policies with no window are set to 15 days on upgrade, whatever
RETENTION_DEFAULT_DAYSsaid. A custom window must be carried over before the new engine starts, or data can be deleted early. - (managed services)
writeKnowledgeno longer overwrites panel documents. Writing to a document the agent did not create answersDOCUMENT_NOT_OWNED; Full management access restores it. - (managed services) Provider keys are no longer read from secrets. They move into connections bound to roles, and migrations
0153to0156plus the first start carry existing keys over, so each agent keeps the credential it used. An agent created after the upgrade answers only once its roles are bound withPUT /api/instances/{slug}/provider-roles/{role}.PATCHandPOST /api/instancesrefuseproviderConnectionIdwith400, the secret routes refuse provider keys with400, exports omit them, an import warnsprovider_role_required, with arolefield, for each role to bind, and a tool’sctx.apiKeyscarries the chat connection only. In a managed-only organization a role whose agent held its own key stays unbound. Organizations whose Bedrock credential was a region alone are granted the deployment’s AWS identity by the upgrade, with an audit row each, for review. - (managed services) Provider admission covers embeddings and speech-to-text. An agent embedding or transcribing on a provider its workspace does not admit is refused, and a managed-only organization refuses an agent’s own key for those calls.
- (managed services) The upgrade is not rolling. Every 1.1 engine must be stopped before the new one migrates.
Companion releases
- polyant-cli v0.9.0, the command-line client, now public under Apache-2.0. With managed services, v0.7.0 and earlier do not work against 1.2.0-ee. See Using a key with polyant-cli.
- polyant-dev-kit v1.2.0, the workspace of skills and versioned agent files that drives
polyant-clifrom a local coding agent. - Plugin SDK v1.9.0, the version the engine pins.
- polyant-hubspot-plugin v1.1.1 and polyant-extra-plugin v1.1.0, installed from source into the image; with managed services, plugins can also come from the marketplace.
Migration notes
Follow Upgrading to 1.2.0, in order. It covers the steps above, the inventory queries to run before the first boot, and which steps cannot be undone.
Existing sensitive skill environment values need no manual rewrite. After upgrading the engine, readSkill returns opaque {{skill_env.<skill>.<KEY>}} placeholders automatically; update custom instructions that expected plaintext values in the tool result.