Skip to main content
If you want assistance implementing any of these updates, please reach out to your account manager
From a New Agent to a Trusted One, at Every Step
After you create an agent, the dashboard now lays out the four steps that make it trusted, and starts the first one. Run now, supervised opens Run now for the new agent with Supervised run switched on. It is 100% safe: Neo asks you before every write operation. Then approve, reject or comment on each card as it works; when the ticket is done, click Train on the run in Executions and say what should change, and Neo Support reviews the run and your decisions and updates the agent when you confirm. Approval cards in Teams and rows on the Approvals page link to the run that waits on the request when you can open it, and GET /public-api/til-requests returns that run as initiating_temporal_run_id. Ask the Neo Support agent whether an agent is safe to enable, and it offers a supervised first run. See From a new agent to a trusted one.
Train an Agent From Your Approvals, With Nothing to Type
Train on a run opened Neo Support with the run attached, but it would not send until you typed what went wrong. That was often already said: on a supervised run, your technicians rejected a change, left a note on a card, or picked a choice when the agent asked about an unclear instruction, and Neo never read those decisions. Train now sends with an empty message box. Neo Support reads the run and every approval decision on it, turns a technician’s answer into an edit to the agent’s instructions (starting from the wording the agent suggested when it asked), and shows you the edit before it changes anything. With no decisions and no feedback, it reviews the run’s reasoning, tool errors and final message by itself, and either proposes an edit or tells you the run looked right and why. Feedback you type still leads. GET /public-api/executions/<id>/til-requests now returns only the requests that run raised, across all of its pauses; it used to return every request the agent had raised on the ticket. Runs from before August 12, 2026 return no requests there, because their requests did not record which run raised them. See Train Neo and train the agent after a supervised run.
Supervise One Run From Run Now
An agent you do not trust yet had two settings: test mode, where it changes nothing, and a live run you watch afterwards. Run now now offers Supervised run for a single run. Every change waits for your approval, one at a time, the agent shows its plan before its first change, and it asks when one of your instructions leaves a decision open. You name who approves that run, and those technicians receive the cards in place of the agent’s own approvers; your choice is remembered in your browser for the next run. The agent’s saved settings do not change, so turning it on here does not start supervising the agent’s scheduled and triggered runs. An agent whose own supervised runs setting is already on shows the switch on and locked, because every one of its runs is supervised. Supervision survives each approval, including the resumed half of the run that makes the change. The switch says why it is off when the agent is a workflow, is in test mode, or processes its entities one at a time. The dialog itself is rebuilt, with the testing switches moved under Advanced. POST /public-api/agents/<id>/run-now takes the same supervised_run. See supervise a single run.
Watch, Approve and Train a Supervised Run on Its Own Page
After a supervised run starts, Run now reminds you that Neo asks before every change it makes on this run, and Open the run takes you to the run’s page. Each approval card appears there at the point where the agent raised it, and you can approve, reject or ask for changes without leaving the run. The plan and a question about your instructions keep their own buttons, so answering them never reads as approving a change. Teams cards and the Approvals page still work, and the first answer counts wherever you give it. A card has buttons only for an admin and for the technicians it was sent to. Each approval usually resumes the work as a new run, and the run page now shows all of an execution’s runs as one flow, with a line and a copyable run id where each run starts. A supervised run carries a Supervised label in Executions and on its page. When the run ends, Train sits in the page header, and a supervised run shows how many decisions you recorded. An unsupervised Run now keeps its notice, with a link to the run. GET /public-api/executions/<id>/til-requests and GET /public-api/til-requests now return initiating_temporal_run_id, the run that raised each request, and executions carry supervised, for a run supervised from Run now or by the agent’s own setting. POST /public-api/agents/<id>/run-now also returns the execution_id when it reaches a run already live on the ticket, where it returned null before. See Watch the run.
Neo Refuses an End-User Self-Install While Your Internal Bot Is Still on the Shared Identity
Moving an internal bot onto its own identity takes three steps: you remove the channel’s registration, you generate a new install link, and an administrator opens and approves it. Only that last step replaces the old app in your Teams catalog. An end-user bot installed in your own tenant in between landed on an identity the old app still held, and Teams left every technician’s existing chat on the app that then moved — it showed a name they did not recognise and refused to send, and start a new chat could not rescue it, because typing was what was blocked. Neo now refuses that install while the internal channel is still on the shared identity, and names the channel to move first. The refusal lifts when the new link is generated, before the approval, so approve the internal link before you install the end-user bot. A technician already in that state opens the bot from Apps by name. See the end-user bot and custom internal bots.
Open a Teams Bot’s Chat Straight From Its Channel
Teams does not list a bot nobody has messaged yet, so a bot you had just installed in your own tenant was in no chat list and no search result, and there was no obvious way to start talking to it. After an internal bot moved onto its own identity it was worse: the only chat on the old identity still carried the old bot’s name. Each channel now carries the link to its own chat — Open the chat in Teams under Install in your tenant on an internal channel, and open your test chat in Teams under White-label installs once you have installed an end-user channel in your own tenant. It is also the link to pass to a technician who cannot find the bot. See custom internal bots and the end-user bot.
The Phone Agent Answers About a Second Sooner
The agent now starts speaking about 1.5 seconds after a caller finishes, where it took about 2.4 seconds before.
Call History Shows Which Ticket a Phone Call Created and Where the Caller Was Transferred
Until now the only way to learn whether a Phone Agent call had produced a ticket was to listen to the recording. Each row in Call History now shows the tickets the call created, labelled Created in call or Created after call and linked to your PSA when Neo has a link for them, and the number the agent transferred the caller to, with the time; a call with no ticket says No ticket. The transcript note on the ticket also names the transfer number and time, so a caller who reached voicemail on that line is not mistaken for one who was helped. GET /public-api/phone/calls returns the same tickets, transferred_to and transferred_at fields. Both are filled a minute or two after the call ends; calls from before this week show a dash, because their outcome was never recorded. See Phone Agent.
Internal Chat Agents Attach Pasted Screenshots to Tickets
A technician could paste a screenshot into a chat with an internal agent and the agent could read it, but it could not put that screenshot on a ticket. It told the technician to upload the file to the PSA by hand. With Attach File to Ticket enabled, the agent now attaches the screenshot or file itself, with its original name, including one sent a few messages before the ticket was created. It attaches only the files the technician asks for, and only files from the same conversation. If the tool is not enabled on the agent, the agent now says that plainly. Works on ConnectWise, Autotask, Halo and ServiceNow. See Attach File to Ticket.
Screenshots Inside Halo Notes
On Halo, an agent can now show a screenshot inside an internal note, as it looks when a technician pastes an image into a note, instead of only in the ticket’s attachment list. Ask it to put the screenshot in a note: it writes one internal note with a short line about the image and the image below it, and it still attaches the file. The note follows your rules for the agent’s other internal notes, including the outcome, the per-ticket limit and technician approval. The agent needs write access to Halo notes. See Screenshots inside a Halo note.
The End-User Bot Knows the User’s Open Tickets
The end-user Teams bot now reads the user’s open tickets from your PSA when a conversation starts, so it tells a follow-up from a new problem without being asked. “My email ticket” matches the open ticket about email, and “Outlook still isn’t getting mail” as the opening message matches the open Outlook ticket instead of opening a second one. Your ticket policy in the bot’s instructions still decides when a new problem gets a ticket. See Choose when the bot opens a ticket.
Search the Workflow List
A search box now sits above the workflow list. Type part of a name or of a workflow’s ID, and both tables filter as you type. Each match shows inside its group, every group with a match opens even if you collapsed it, and the other groups are hidden. The search stays in the page’s address, so refreshing the page or pressing browser Back keeps it. Drag-and-drop reordering pauses while a search is active, and your collapsed groups come back as you left them when you clear it. See Find and organize workflows.
A Shorter Categories Summary, and a Line That Says What Each Insights View Answers
The Categories view of Insights replaces the long written executive summary and the four figure cards with one line: your total annual savings opportunity, in money and hours. It follows your edits to minutes per ticket. Under the page title, a short line now says what the open view answers: Categories shows which high-level categories your tickets fall into, and Problems shows which types of tickets your technicians still resolve by hand. The PDF export keeps the full written summary. See Neo Insights.
Leave Companies Out of a Problem Map, and No Estimate for Tool-Closed Problems
On the Problems view of Insights, New problem map now has an Exclude companies picker beside the single-company choice, so a whole-desk map can skip an internal company or a client that has left. The map’s header and the report switcher say what was left out. Separately, a problem that no technician has ever logged time on now gets no estimated opportunity and shows no time logged: those tickets are most often closed by a tool, and the desk median was pricing work nobody does. Such rows now rank by ticket volume. Problem maps built earlier keep their old figures until you build a new one. See Problems.
Problem Maps Now Group Tickets by the Fix, Not by the Wording
On the Problems view of Insights, tickets that need the same fix but are written differently, such as new-starter requests, used to spread across the long tail because the grouping only saw wording. Neo now groups in two passes: alert streams and other near-identical tickets first, then a list of the jobs your desk does, written from your own tickets, that every remaining ticket is filed under. A row that turns out to hold several runbooks is split. On four service desks this put 84 to 100 percent of onboarding tickets in one row, against 0 to 39 percent before, and cut the long tail from about half of the sample to under a tenth. Expect a run to take about 10 to 20 minutes. Problem maps built earlier keep their old rows until you build a new one. See Problems.
A Deleted Ticket No Longer Counts as a Failure
When a ticket was deleted in your PSA, the PSA events that arrived for it were listed in Executions as failures. They were the majority of everything shown there as failed. Such an event now shows as Skipped, with the reason beside it, so the failures you see are the ones worth reading.
Note Triggers Fire Once per Note
A workflow on Note added or Technician added a note ran again for the same note at every later change to the ticket, unless Run only once per ticket was on. Neo now records each note it has seen, so a later status or priority change on the ticket does not run the workflow again for that note; notes that arrive together share one run, as with every other trigger. On Autotask, Neo also subscribes your ticket webhook to the Last Activity Date field when a workflow uses one of these triggers, so an internal note fires the trigger when it is saved instead of at the next unrelated change. See Triggered workflows.
Autotask Time-Entry Triggers Fire on Their Own
On Autotask, a workflow on Time entry created fired only when another change to the ticket arrived, sometimes hours later, because Autotask sends no webhook for a time entry alone. Neo now subscribes your Autotask ticket webhook to the Last Activity Date field when a workflow uses that trigger, so it fires when the entry is saved. The field is added at your next scheduled PSA sync. See Triggered workflows.
Every Dashboard View Now Has Its Own Link
Opening an integration, a skill, a technician, an inbox message, a phone call, a saved Insights report or problem map, a conversation in Chat History, or a rated conversation on the Feedback page now changes the address in your browser. So does switching a tab in the agent editor and on the Phone Agent and Feedback pages. Copy the address to share exactly what you are looking at: whoever opens it lands on the same view. Browser Back closes the view you opened. A link to something that was deleted, or that belongs to another workspace, opens the page’s list instead.
Moving an Internal Bot Onto Its Own Identity No Longer Strands Your Technicians’ Chats
Teams attaches a chat to the bot’s identity. When an internal bot created before per-bot identities moved onto its own identity, each technician’s existing chat with it stayed on the old identity. That chat stopped answering. After an end-user bot was installed in your own tenant, the chat answered as the end-user bot under the internal bot’s name. Neo now posts a message into each of those chats with a link to the new app, closes the conversations in them, and the end-user bot’s first message in such a chat says which bot it now is. If every internal bot identity is in use, the move stops and tells you to contact support; we add identities on request. See custom internal bots.
Autotask Time Entries Now Reach the End-User Chat on Their Own
With time-entry relay turned on, a technician’s Autotask time entry reached the end user’s Teams chat only when the same save also changed the ticket’s status or queue, because Autotask sends no webhook for a time entry alone. Neo now subscribes your Autotask ticket webhook to the Last Activity Date field whenever time entries relay, so each time entry arrives on its own. The field is added at your next scheduled PSA sync; from then on Autotask sends Neo a webhook for every change to a ticket. See Autotask: time entries need one more webhook field.
Send an Approval Request Back With Changes Instead of Approving or Rejecting It
When an agent asks for approval and the plan is close but wrong, you can now say so and get a revised request instead of choosing between Approve and Reject. On the Teams approval card, open Add a note, write what should change, and press Ask for changes. Neo does not run the action. It reads your comment, revises its proposal, and sends a new approval request that reflects the change; nothing runs until you approve that new request. The same choice is on the Approvals page, in the chat approval card, and through the public API as "action": "request_changes" on POST /public-api/til-requests/{id}/decision, which needs a note. Requests that were sent back show as Changes requested. Plain Approve and Reject are unchanged; Approve with Feedback is now called Approve with note and still runs the action. In the chat approval card, Decline is now Reject, matching the agent approval card in Teams and the Approvals page. See Technician-in-the-Loop.
Run Several Internal Teams Bots — and Try Your End-User Bot in Your Own Tenant
Until now your own Microsoft 365 tenant could hold one internal Teams bot, so a second internal agent — say a dispatcher next to a documentation assistant — had nowhere to live, and installing your branded end-user bot in your own tenant to see what clients see was blocked too. Both now work: every new internal channel gets its own bot identity, so several internal bots install side by side, and the end-user bot fits alongside them. Internal channels created earlier can move onto their own identity themselves — remove the channel’s registration under Install in your tenant, generate a new install link, and reinstall from it. See custom internal bots.
Problem Opportunity Now Counts the Tickets Nobody Logged Time On
On the Problems view of Insights, Opportunity / mo used to add up only the tickets that carry a PSA time entry, so a desk that logs time on one ticket in ten saw a tenth of its real opportunity. Each ticket without a time entry now adds the median logged time of its problem, or the median of the whole desk when the problem has fewer than 5 logged tickets. The logged hours stay visible under each figure as the floor, and rows rank by the new figure. Problem maps built earlier keep showing the logged hours alone. See Problems.
A Simpler Organization Page, and an Explicit Workspace ID When You Create a Subsidiary
The Organization page now matches the Companies, Technicians, and Users pages. Workspaces appear as a compact tree with the organization at the root and one line per workspace showing its status, data region, and your access; the + next to Workspaces creates a subsidiary. The create dialog asks for two names, as signup does: the workspace name and a unique lowercase workspace ID that Neo fills in from the name and you can edit. The public API route POST /public-api/organizations/{organization_id}/workspaces accepts an optional client_name with the same rule and answers 409 when the ID is taken. See Organizations and subsidiary workspaces.
The Organization Page Shows the Organization of the Workspace You Have Open
The page is now called Organization and shows one organization: the one your open workspace belongs to, with its workspaces. There is no organization picker and no way to create an organization; Neo makes one with the first workspace at signup. Any workspace member can see the workspaces; an organization role is still needed to create a subsidiary, grant access, or see administrators and activity. Moving an acquired workspace between organizations is a request to Neo. The public API route GET /public-api/organizations is removed; use GET /public-api/organizations/current. See Organizations and subsidiary workspaces.
Insights Now Shows the Specific Problems Your Technicians Resolve by Hand
The Insights page has a second view. Problems lists the recurring problems on your desk, one row each, such as INKY User Reported Spam Blocking or New Starter Device Provisioning, with tickets a month, the share Neo already closes, the median time logged, and the hours a month an agent would take on. Open a row for the steps technicians take today, what still needs a person, any system an agent would need access to, and example tickets. Neo builds a problem map only when an admin presses Build problem map; it never runs on its own. A run reads a random sample of your closed tickets and takes 3 to 15 minutes. See Problems.
A More Compact Organizations Page
The Organizations page separates Workspaces, Administrators, and Activity into tabs. Search the organization picker, open a workspace from its row, and use the three-dot menu for access and directory actions. Administrator and rename forms open when needed. See Organizations and subsidiary workspaces.
See How Much Documentation Storage You Use
Every documentation platform you connect writes into one search index, and your plan includes an allowance for it. Each documentation card on Integrations now carries a Documentation storage row: usage in gigabytes and as a percentage of the allowance, with a split by platform underneath. The figure is the same on every card because the allowance is shared. The gigabytes are the size of Neo’s index for your documentation, a different measurement from the size of your own libraries. A tenant over the allowance sees it in red; nothing has stopped syncing. The same figures are available to the Neo Support Agent and through the public API at GET /public-api/documentation/quota. See Documentation storage allowance.
Manage Subsidiary Workspaces in an Organization
Organization owners and admins can create separate MSP workspaces under their organization. Each workspace keeps its own members, integrations, data region, and paid plan. Organization roles do not automatically open workspace data: access is granted explicitly. Neo staff can create workspaces for a selected organization and move acquired workspaces after verifying ownership. See Organizations and subsidiary workspaces.
Access Several MSP Workspaces With One Microsoft Account
Workspace admins can invite someone from their own company or another MSP by name and email. Recipients open the email link, sign in with their Microsoft work account, and accept. The link expires after seven days; admins can resend pending invitations. Each workspace assigns its own role and permissions. People with several memberships can use Switch workspace; people with one open it directly. Removing access in one workspace leaves their other memberships intact. See Access across workspaces.
Dispatch No Longer Reopens a Ticket Somebody Resolved While It Was Deciding
A dispatch decision takes minutes, and the ticket’s filters are checked once, before it starts. So a technician who resolved a ticket in that window could watch Neo reopen it, book a session on it and email the end customer about a visit nobody wanted. The Dispatch Ticket action’s Exclusion rules now offer The ticket was resolved or closed by someone else: with it on, Neo re-reads the ticket after it picks a technician and, if somebody resolved or closed it in the meantime, writes nothing — no owner, no status change, no booking, and no message to the contact. It is off by default, available on every PSA, and costs one extra read of the ticket per dispatched ticket. Neo compares the ticket against how it looked when it selected it, so a workflow that deliberately dispatches closed tickets keeps working. See Exclusion rules.
Every HaloPSA Priority Level Is Now Available
HaloPSA defines priorities per SLA, and each SLA numbers its own levels 1, 2, 3 and so on. Neo kept one name per number, so a Halo account with five SLAs saw five priority options in the Priority ID dropdown, some of them named after an SLA the ticket does not use. The dropdown now lists every level of every SLA under the name HaloPSA shows for it, a filter rule matches the tickets whose own SLA calls their level by that name, and ticket details and agent instructions show the priority under the ticket’s own SLA name. Filters saved earlier keep working. Nothing to enable. See Filter by priority (Halo).
Screenshots Kept Inside Autotask’s Originating Email Are Now Read
On some Autotask mailboxes the Incoming Email Processor stores the mail as OriginatingEmail.eml and keeps the screenshots pasted into it inside that file only, with no attachment of their own. The description still showed a [cid:...] placeholder where each one sat, and Neo, which looked for a matching attachment, found nothing and left the placeholder. It now opens the email file, finds the image by that same reference, and reads it the way it reads any other screenshot, so the description gets the image’s description in the placeholder’s place. Signature logos in the mail are read the same way, once, and served from the 30-day cache after that. Nothing to enable. See Reading Images.
Ticket Triage Now Reads Screenshots and Attached Emails
The Ticket Triage action read the ticket’s text only. A screenshot showed up as a [cid:image001.png] placeholder, so an instruction like “clean up the description” could only delete the placeholder, and a phishing-report ticket whose whole content sits in the attached Report.eml looked empty to it. Triage now loads the ticket the way agents do: each screenshot is read with a vision model and its description takes the placeholder’s place, and any .eml or .pdf on the ticket is read as text. So a description-cleanup instruction can say “if a screenshot is attached, add one line that says what it shows”, and a phishing-report workflow can take the company and contact from the reported email. Nothing to enable. The extra load runs beside the similar-ticket search, which is usually the slower of the two. Reading a picture costs a small model call; the description is kept for 30 days, so the same logo file that arrives on every email from one person is read once. See Ticket Triage.
Ask Neo Support to Set Up a Template for You
Applying a template used to mean opening it in the editor and finding your own way to the settings it couldn’t know — your boards, your statuses, your approvers. A dashboard admin can now hand that to your Neo Support Agent instead: say “set up the Ticket Bundler template for me” and it runs the interview an onboarding call would. It needs an admin because the flow checks your connected integrations, and that check is closed to non-admin members. It fetches the template already adapted to your workspace — permissions for integrations you haven’t connected are dropped, and the author’s own people never travel with it — asks a handful of questions one at a time offering your real values, checks the integrations the template needs before touching anything, and creates the workflow or agent disabled with a link — you review it in the editor and enable it when you’re happy. An optional integration you don’t have never blocks the setup; a required one that isn’t connected stops it, with the connect link in hand. The template picker itself also got clearer about requirements: each template’s detail panel lists the integrations it needs by category, with a ✓ once yours is connected. See Templates.
Activity: One Place for Every Run and Every Action
The per-agent “Event Executions” dialog and the “Event History” tab were the same table written twice, one scoped to an agent and one with PSA events mixed in. Both are now one page under Activity in the sidebar, beside the Audit Log, so runs and the actions inside them sit together. Agent & Workflow Executions lists every run of your agents and workflows, newest first: pick one agent or several, filter by status, ticket number or id, run id and date, and the filters live in the URL so a filtered view can be sent to a colleague. The history icon on an agent’s row opens it filtered to that agent, with Run now at the top. Filter to a ticket and tick Include PSA events to see the ticket created and updated rows for it and which agents each one triggered, with the reason for every agent that did not match. Agent Actions Audit Log is the second tab, moved from Reporting and otherwise unchanged. Train, Skillify, Stop, artifacts and CSV export all carry over, and old links to either former screen redirect. See Executions.
The Execution Log Is Now a Page
Steps on a run used to open a dialog on top of the executions dialog: a flat list of rows, all the same size, cramped, and gone when you closed it. Every run now has a page of its own, at /executions/<run id>, which you can bookmark, share with a colleague, or keep open in a tab while the run is still going. The page reads the run as a story: each of the agent’s reasoning steps is a heading, showing its first line and how long the agent thought before it, and the actions it then took sit under it one line each — the tool, what it was for, what came back, and how long it took. A failed action is red, and the run ends with the agent’s own verdict and the message it wrote. Click a heading for the full reasoning, or an action for its exact arguments and result. Opened from the list it appears over the list, so closing it puts you back on the same filters; opened from a link it is a full page. Search, local and UTC times, download and the run inputs for super admins are all still there, behind a search icon and a menu. See Execution Log.
Creating an End-User Bot Now Asks When It Should Open a Ticket
When a ticket gets opened is your policy, and it has always lived in the bot’s instructions — but the starter instructions only ever expressed one of the three shapes MSPs actually use, so you got that one unless you knew to rewrite it. Creating an end-user agent now asks the question outright, under Audience on the Overview tab: Ticket first (every request traceable from the first message), Troubleshoot first (a ticket only when a technician is needed — still the default), or Record at the end (every conversation leaves a record, without paging a technician for chat that resolved itself). Each card says in one line when to use it, and your choice writes the matching text into the instructions. Nothing is stored behind the cards, so the instructions stay the only place the policy lives: edit them whenever you like, or ask the Neo Support agent to. Existing agents are untouched. See Choose when the bot opens a ticket.
An End-User Chat’s Messages Now Follow the Right Ticket
Last week every message in an end-user chat started landing on the ticket the conversation was on. One chat covers many problems over its life, though, so a message about something new could be written to the previous ticket as a customer reply — starting your customer-replied rules on a ticket nobody had mentioned. Each message is now recorded on the ticket it is actually about. Follow-ups, corrections, answers to the bot’s questions and a “thanks, that worked” hours later still continue the ticket the chat is on. A different problem is held back instead, so nothing lands on a ticket nobody mentioned; once it has a ticket of its own, everything said from then on is recorded there. The check runs per message and needs your PSA to return the ticket it is comparing against; when it can’t run, the message is recorded on the ticket the chat was already on, as before. Nothing to configure. See End-user Teams bot.
Neo Reads Email Files Attached to Tickets
When one of your clients’ users reports a suspicious email through a report button — Phished, KnowBe4, Microsoft’s Report Message — the reporting tool mails the report into your service desk. Your PSA turns it into a ticket, keeps a message-id, and drops the body, so the ticket said almost nothing: everything was inside the attached Report.eml, and Neo could not open it. It can now. Any .eml or .pdf file on a ticket is read when Neo loads the ticket, the same way it already reads screenshots. From an email the agent sees the headers, the sender’s domain and authentication results, the body, the links in it — the first 60 — the names of its attachments, and the reported email nested inside the report. From a PDF — how Phished exports the reported email, and how invoices, quotes and vendor letters arrive on ordinary tickets — the agent sees the title, the text of the first 20 pages, and the link targets on those pages. That is enough for an agent to correct the ticket’s company from the reporter’s domain, judge whether the email is legitimate, write the assessment as a note and route the ticket to the desk. Works on every supported PSA — Autotask, ConnectWise, Halo, ServiceNow and Syncro — up to 10 MB per file and five files per ticket, and there is no model call involved, so it costs no credits. Nothing to enable. See Reading Email and PDF Attachments.
HaloPSA Webhook Events Are Now Created for You
Connecting HaloPSA created the Neo webhook but left it without events, and a webhook without events never fires. So the last step of every HaloPSA connection was a manual one: open the webhook in HaloPSA and add four events by hand, including a status criterion on “Ticket Updated”. Neo now adds those four events itself when it creates the webhook, so the connection is complete the moment the checks pass. The sets people built by hand also drifted: one account had only “New Ticket Logged”, so Neo never heard about ticket updates there. If your existing Neo webhook has no events at all, Neo adds the four events to it on its own during its next sync of your HaloPSA data, or straight away if you open your PSA on the Integrations page and click Save & run checks. A webhook that already has events, including ones you chose yourself, is left as it is. See Webhook Events.
Choose Which Company Data Each Person’s AI Chat May Use
Earlier this week the Neo Support Agent’s company data became admin-only for everyone else. Now you decide per person. Open Roles & Access, click the person’s row, and tick the sources their chat may use: your PSA’s synced tickets, contacts and configurations, each documentation source on its own (IT Glue, Hudu, SharePoint, Confluence…), and the device inventory from your RMMs. A technician granted tickets but not IT Glue can ask “how did we fix this before?” and gets answers from tickets, while a request for a document is politely declined with a note on who can change that. Nothing is granted to a new user until you tick it, admins hold everything, and people who chat with the bot from Microsoft Teams without a dashboard account get a separate default you set on the same page, empty out of the box. The user page also replaces the old Manage Permissions pop-up: dashboard sections are grouped like the sidebar and searchable, the agents shared with them sit alongside, and the page has a link you can send to a colleague. See Roles & Access.
One Page Per Person in Roles & Access
Click a team member’s row in Roles & Access to open their page. Their name and role are now editable there, alongside the dashboard sections they can open and the company data their AI chat may use — the menu no longer carries Edit Role, Share Workflows or Manage access, because all three led to the same person. It keeps the account actions: activity history, announcement subscription, and disabling someone. Sharing an agent or workflow is now a table on that page: click Add agent, tick as many as you need and grant them in one go, and use the bin icon to take one back. Each agent’s id sits beside its name in the list, so two agents that share a name can be told apart. Removing asks you to confirm first, because one workflow out of a chain still takes the rest of its chain with it.
Due Date Rules in Your Own Words
Ticket Triage’s Due Date field now follows the rules you write in its custom instructions — before, a rule like “Priority 3 = due in 5 days” quietly did nothing, because the due date could only be one of four fixed lead times, whatever you wrote. Write your rules in plain language and Neo computes the date from them: lead times per priority, business days or business hours (business hours count only the open hours in your Settings; business days step over your non-working days and keep the time of day), a date the ticket states or an offset from it (“the day before the stated deadline”), a clock time (“next business day at 8am”), moving an existing due date forward on a chase, and a weekend rule (“if it falls on a Saturday or Sunday, move it to Monday”). Neo reads which rule applies; the date itself is always computed in code, so the same rule, the same starting point, and the same business hours and timezone in Settings always give the same date. Two starting points move on their own: a rule that counts from the current time re-triages to a later date, and a deadline the ticket states in words (“by next Friday”) is read out of the ticket text against the date of the run. Workflows with no due-date instructions keep the same four priority lead times as before. The one change there is a deadline stated in the ticket: when it names only a day, it now lands at the start of your business day, and it becomes due now if that day has already started. One sentence — “if the due date falls on a Saturday or Sunday, move it to the following Monday” — is now also how weekend avoidance works, even as your only due-date instruction, and it replaces the weekend toggle (retired with nobody using it). See Ticket Triage.
Save an Unfinished Workflow, and Start Your Trial When You Are Ready
Building a workflow or agent used to be all or nothing: the Save button refused anything half-built, so you had to finish in one sitting or lose the work. Worse, a workflow that had drifted out of shape — a filter pointing at a PSA field that no longer exists, say — could not even be switched off, because turning it off went through the same checks. The builder now offers two buttons on a new workflow or agent: Save & Enable, which checks everything as before and lets it start running, and Save as Disabled, which takes your work as it stands. A disabled workflow never runs on its own, so it can be missing its trigger, its schedule, its actions or its instructions; Neo runs the full checks the moment you enable it, and tells you what is missing then. One thing still has to be complete before you can save at all: the credentials on an External API Request tool, because saving is what stores them securely. The second half of this matters if you are on a trial: your 14-day countdown now starts when you enable or run your first automation, not when you create one. So you can build for as long as you need, save everything disabled, and start the clock on the day you are actually ready. Every button that would start it now says so first — the builder’s two buttons, the Run Now dialog, and the Enable option on your workflow list. Chat agents never start a trial, as before. See Starting a trial.
Disabling a Chat Agent Now Actually Stops It
Setting a chat agent to Disabled changed how it looked in your list and nothing else — your team could still open it and message it, and it still answered. Disabled now means disabled: a disabled chat agent refuses new conversations and stops taking messages in existing ones, and says why. If you disabled a chat agent expecting it to be off, check whether it was still in use before you rely on this. Your Neo Support agent is unaffected. Nothing to enable.
Train, Skillify and Need help? Now Follow Your Access Setting
If a technician wasn’t an admin, the Train and Skillify buttons and the Need help? widget could simply be missing for them — even when your Chat Agent Access setting said everyone on the team may use the Neo Support Agent. The dashboard was deciding from the wrong list: who an agent’s configuration is shared with, instead of who may message it. Those affordances, and the Chat page’s agent list, now follow the Chat Agent Access setting exactly: set the Neo Support Agent to Everyone on your team (the default) and every member gets Train, Skillify and Need help?, with no per-person sharing needed. Viewers are the one exception for Train and Skillify — those flows end in an edit, which a read-only role can’t make. See Roles & Access.
Company-Wide Data in Neo Support Now Follows the Person Asking
The Neo Support Agent’s ticket search, ticket summaries, documentation search, analytics queries and live PSA reads used to see your whole company’s data no matter who was chatting — which is why many teams restricted the agent to admins and lost Train for everyone else. Those company-wide tools now run only when the person chatting is an admin; everyone else still gets product help, can inspect and train the agents they have access to, and is told plainly — with the fix — when they ask for something that needs company data. The same applies in Microsoft Teams, including people who chat with the bot but have no dashboard account. Skills are also protected now: creating or changing a Skill applies to every agent in your workspace, so the agent only does it for people whose role can write. You can safely set the Neo Support Agent back to Everyone on your team. See Roles & Access.
Audit Log: Every Action Your Agents Took, in One Place
A ticket changed status, a note appeared that nobody remembers writing, a user was disabled — was it one of your agents? Until now the only way to find out was to open the run history of each agent in turn and read through its steps. The new Audit Log under Reporting lists every action your agents took in the last 30 days, one row per action, newest first: which agent, which tool it used, what it sent, and whether it succeeded. What you see follows your workflow access: an admin sees every agent, and a user or viewer sees the agents they created or that were shared with them. Type a ticket number or a user’s name to see everything any agent did to it; narrow by tool, by agent, or to failures only. Click a row for the exact input the agent sent and a summary of what came back, and Open run takes you to the full trace of that run, complete results included. Triggered, scheduled, and chat agents are all included, and inputs are recorded with credentials masked. The same log is on the public API at GET /public-api/audit-log/tool-calls, and the Neo Support Agent reads it too, so “did one of my agents touch ticket 48213?” is now a question you can ask in chat — answered under your own access. Nothing to enable. See Audit Log.
Switch Your PSA Without Calling Us
Moved from one PSA to another? You can now point Neo at the new one yourself. Open your PSA on the Integrations page and select Disconnect — it sits beside Edit — then connect the new PSA as you normally would. Before this, the page held one PSA and asked you to disconnect the first, with no way to actually do it, so every move needed a session with our support team. Neo keeps its copy of the tickets it already synced from the old PSA, so your agents can still search those past tickets to find how a similar problem was solved before. Your PSA keeps its own records too. Neo also clears the old PSA’s companies, so your company list is read fresh from the new PSA rather than holding entries that point at a PSA you no longer use. Three things still need your decision afterwards, and Neo names all three on the way out: any workflow that filters on a field only your old PSA had needs pointing at the new equivalent, because Neo cannot guess which field replaces a ConnectWise board; your agents need their PSA permissions granted again on the new PSA; and your company exclusions and Microsoft 365 company links need setting again, because a company you had excluded comes back included and Neo starts working its tickets. Your customers’ Microsoft consent still stands in their own tenants — only Neo’s link to it is re-made. See Switching your PSA.
Chat Agents No Longer Go Quiet While a Workflow Runs
Ask a chat agent to run one of your workflows and it used to wait for that workflow to finish before saying anything — and those workflows often take six to eleven minutes. You got no reply at all in the meantime, and if the wait ran long enough the whole conversation could be lost and you were told your request was too large, which was rarely true. The agent now starts the workflow, tells you straight away what it started and roughly how long that kind of thing takes, and reads the result afterwards so it can tell you what actually happened — which appointments moved, which tickets changed, and anything the workflow left for a person to decide. It reports the real outcome rather than only “I’ve started it”, which is what most people were asking for next anyway. In a conversation the agent also no longer pauses for more than a minute at a time, so it keeps you updated instead of going silent. Nothing to enable, and it applies to any chat agent you have given the Trigger or Schedule Workflow tool.
“Neo Was Updating” Now Says So, Instead of Blaming Your Request
When we released an update while you were mid-conversation, a chat reply could stop part-way through — and the message you got said your request may have been too large and asked you to narrow it down. That was our release, not your question, and narrowing the question would not have helped. Neo now recognises this case and says plainly that it stopped because Neo was updating, invites you to send the same thing again, and reminds you that anything it had already done before stopping still stands, so it is worth asking what it managed to finish. The old “too large” message still appears where it is genuinely true — a request that really is too big to complete in one go.
See How Much SharePoint You Are Syncing
There was no way to tell how big a SharePoint library was before pointing Neo at it, or how much of it Neo had taken once it had. The SharePoint card now carries a Sync size row with both figures: what you selected in SharePoint, with the folders you left out taken off, and what Neo indexed — the files it kept and the number of searchable passages they became. The picker shows the same figures per library and per folder, so opening a library tells you what each folder costs before you tick it. Expect the numbers to differ by a lot, and that is the useful part: most of a document library is file types Neo does not index, and a single spreadsheet or CSV export splits into thousands of passages, so a few hundred data exports can outweigh every real document you have. One account selected 291 GB, which came to under 30,000 files — and 99% of everything Neo held for them sat under one folder. Use the two columns together to find a folder that is small on disk and large in the index, then untick it. Nothing to enable. See SharePoint.
Stop Now Works on Every Workflow, Not Just Agents
Last week Stop started taking effect on agents. It now does the same for workflows built from a fixed list of actions. Pressing Stop on one of those used to change nothing until the whole list had finished, so a workflow part-way through a long step went on to send the notifications, assign the tickets and update the fields that came after it. Stop now takes effect at the next step: whatever step is running finishes, and nothing after it starts. On the run that prompted this, that is the difference between a notification reaching the contacts on 125 tickets and reaching none of them. Stopping is still not instant on these — a step working through hundreds of tickets runs to the end of that step first, and the dialog tells you so before you confirm. Nothing to enable. See Event History.
Put Your Own Words in the Halo Appointment
When dispatch booked a Halo appointment it could name the entry and nothing more, so the appointment itself was empty. Tell your dispatch agent what the appointment should say — “put the ticket reference, the client and a one-line summary in the appointment body” — and it now writes that into the appointment’s note. If your Halo appointments sync to Outlook or Teams, that note is what your technicians read in the calendar event, so the detail travels with the booking instead of staying on the ticket. Say nothing about the body and appointments are created exactly as before. See Dispatch.
Dispatch No Longer Assigns a Ticket That Was Merged Away
Choosing the right technician takes Neo a few minutes, and a lot can happen to a ticket in that time. If somebody merged the ticket into another one while Neo was deciding, Neo still went ahead and assigned it — so a technician picked up a duplicate that had already been folded into the real ticket, and in one case the ticket had been merged more than five minutes before the assignment landed. Dispatch has a new exclusion rule, The ticket was merged into another ticket. Turn it on and Neo re-reads the ticket after it has chosen a technician: if the ticket was merged away in the meantime, Neo skips it and says so in the run, and nobody is sent to work a ticket that no longer stands on its own. It sits next to The ticket is already assigned, which covers the same few minutes for a ticket a technician claimed by hand. Off by default, and available on ConnectWise, Autotask and Halo. See Dispatch.
No More Error Box When We Release While You Are Working
If you had the dashboard open while we shipped an update, the next agent you opened to edit could show “Woops, something went wrong” instead of the page. Refreshing cleared it, which is what most people worked out for themselves. The cause was on our side: a release renames the files the dashboard loads on demand, and your already-open tab was still asking for the old names, which no longer existed. Your tab now recognises that and reloads itself once, so you land on the page you asked for rather than an error. A reload is still a reload — anything typed and not saved on that page goes with it, exactly as it did before — but you no longer have to work out that refreshing is the fix. This covers the whole dashboard, not just the agent editor — the Skills code editor could fail the same way. The Insights PDF export is the one place that does not reload: it already tells you the export failed and leaves the report, your hourly rate and your unsaved per-category estimates on screen, so nothing is taken from under you there. Nothing to enable.
Every Message in an End-User Chat Now Lands on the Ticket
Once one of your clients’ employees is talking to your Teams bot about a ticket, every message from both sides is written to that ticket automatically — including exchanges where the bot had nothing to do, like “that fixed it, thanks”. Their messages now arrive as genuine customer replies authored by their own contact record, so your customer-reply rules fire and the ticket flips to customer-updated exactly as it would for a reply that came in by email; the bot’s own messages stay internal, so nobody is emailed a second copy of something they’ve already read in the chat. Before this, the record depended on the bot choosing to write it, so a conversation could finish with part of the exchange missing from the ticket. If a message can’t reach your PSA it’s kept and retried on the next message; only in the rare case where the note landed but Neo could not record that it had does the retry post it a second time — a duplicate is preferred to a lost message. Nothing to configure — and you can delete instructions like “add the whole conversation as a note at the end”, which are no longer needed. On Halo you can now choose the outcome the customer’s replies carry and the one Neo’s own notes carry, on the same card as the Autotask Note Types; left empty, replies use Note Added and Neo picks a silent outcome for its own notes. Add Ticket Reply (End User) is renamed Link to Existing Ticket (End User), because that is now all it does: it links the conversation to a ticket the user is following up on, and the reply itself is taken from what the user typed. The bot can no longer file a paraphrase — or its own words — under the customer’s name. Your agents keep the tool switched on; only the card’s name changes. See End-user Teams bot. Stop Now Actually Stops the Agent
Pressing Stop on a running agent used to be a request the agent never heard. The run carried on with full authority to act — potentially for its entire time limit — and was only labelled cancelled once it had finished by itself. One account pressed Stop five times and watched the agent keep working for another twenty minutes; on an earlier run, a Teams message went out two seconds after Stop was pressed. Stop now takes effect before the agent’s next action: a tool that has not started will not start, so nothing further reaches your PSA, your documentation or your inboxes. Only what the agent is already doing finishes first, which is normally seconds rather than minutes. Two things worth knowing. Workflows built from a fixed list of actions are not covered yet — Stop still waits for those to finish the whole list. And every screen that offers Stop now tells you which of the two you have, instead of promising a wind-down that never happened. Nothing to enable. See Event History.
What the Phone Agent Costs Is Now Written Down
The Phone Agent has always been a flat monthly fee plus your call minutes, but the per-minute part was not documented anywhere you could read it. It is now on the Phone Agent page and in the credits table: 1 credit per minute, drawn from the same monthly pool your workflows and agents use — there is no separate phone bill. Alongside it, one place in our metering was leaving minutes out of the usage figure it reported, so a small number of accounts on usage-based pricing were not being charged for call time once they passed their monthly allowance. That is corrected, and it matches what the dashboard has shown all along. Nothing changes for accounts on a standard plan.
Phone Numbers Now Pause When the Add-On Stops, and Come Back if You Return
If your Phone Agent subscription ends — you cancel it, or a card fails and Stripe stops retrying — Neo now pauses your phone numbers instead of leaving them running for nothing or taking them away at once. Calls stop reaching the agent, but Neo keeps renting each number from the carrier for 14 days. Restart the add-on inside that window and every number switches back on by itself, with the same digits and the same settings; there is nothing to reconfigure and nobody to ask. After 14 days the carrier takes the numbers back into its public pool, which cannot be undone — restart later and you get new numbers, so your clients would need telling. A number you had switched off yourself follows the same path, because Neo pays the carrier for a paused number exactly as it does for an active one. See Phone Agent.
Leave Folders Out of a Synced SharePoint Library
A SharePoint library synced whole or not at all, so a library that held former customers, archives or raw data exports next to the documentation you wanted meant indexing all of it — one account’s single library came to 426 GB, and two thirds of what Neo indexed from it belonged to customers they no longer had. On the SharePoint card, Read access → Manage now opens each ticked library into its folders: untick a folder to leave it out, and everything inside it stays out with it. Saving removes the documents Neo had already indexed from those folders in the background; from the next sync on, Neo does not read them at all. The library’s checkbox shows a dash while folders are left out, a filter box narrows libraries and the folders you have opened, and ticking a folder again brings it back on the next sync. Left-out folders shape what Neo indexes for search; the SharePoint API tool still follows the library list. See SharePoint.
Feature Requests Now Go to Roadmap & Updates
Ask the Neo Support Agent for something Neo can’t do yet and it used to open a support ticket. That was the wrong place: a support ticket is for something broken, and nobody else can vote on it. The agent now tells you where to click — Roadmap & Updates, at the bottom of the dashboard’s left-hand menu, which signs you straight in — suggests searching for an existing post to upvote rather than adding a duplicate, and writes you a short plain-English summary you can paste straight into the post. It still raises a support ticket when something is genuinely broken or blocking you, and it now calls that a support ticket rather than a feature request. See Roadmap & Updates.
Runs That Stopped Now Say So, Instead of Showing Running Forever
A run can be stopped from outside by the platform — most often because it reached the time limit for a single run, sometimes because the machine executing it was replaced mid-run. In those cases the run had no chance to record its own outcome, so it kept showing Running in Event History indefinitely. Cancelling it returned an error saying it was no longer running, and Retry was refused, which left you with a run you could neither use nor clear. Neo now recovers the outcome on its own: within a day, such a run takes its real final status — Failed if it was stopped before finishing, Success if it had in fact completed and only the record was lost — and Retry works again. Runs from before this shipped have been corrected too, and where the record is too old to check, the run says plainly that Neo could not confirm how it ended rather than guessing. Nothing to enable. See Event History.
What Each Tool Costs — and Why a Scheduled Agent Is Not a Ticket Agent
A ticket-triggered agent bills once per run, at the highest tier among the tools you chose. A scheduled agent with no ticket, and an internal chat agent, bill each tool call at that tool’s tier — so ten API calls on one run cost ten times one call. The builder’s Built-in Capabilities list (skills and always-on tools) still shows no prices, which made it easy to treat those tools as free. They are not: loading a skill is free, but External API Request is 3 credits per call, Find Documentation is 2, and test mode does not stop billing. The full table is on Tool credit costs.
Declining a Dispatch Now Asks What You Meant
A dispatch approval used to offer Approve and Decline, and Decline meant two different things at once — “not this technician” and “do not route this ticket at all”. Whichever one Neo acted on was wrong for half the people pressing it: some found the ticket stopped dead when they wanted it passed on, others found it handed to a colleague when they meant to keep it. There are now three answers, and each says what it does. Assign to <technician> assigns exactly what you see. Offer to someone else passes the ticket to the next available technician and takes everyone who has already declined out of the running, with an optional note if you want to steer the choice — and the next card names who declined before, so nobody wonders why it reached them. Don’t auto-assign stops Neo dispatching that ticket at all and leaves it for manual assignment. All three are on the Teams card and on the Approvals page in the dashboard. One difference worth knowing: a decline lasts only while the ticket is unchanged, so an update in your PSA is a new situation and Neo decides again from the whole team — but “Don’t auto-assign” does not expire, because it is not a guess about a moment. Assign the ticket in your PSA to hand it back to Neo. See Ticket Dispatch (Suggest Technician).
Ticket Dispatch Now Belongs in a Triggered Workflow, Not a Scheduled One
Ticket Dispatch holds an engineer’s time slot for ten minutes while it decides, so nothing else can take it. A triggered workflow decides one ticket per run, well inside that window. A scheduled workflow decides its whole batch of tickets first and books them all afterwards, so a batch that takes longer than ten minutes loses its own earlier holds — and a later ticket books a second appointment on top of one the same run had already made. One account had three engineers double-booked in a single run. Ticket Dispatch is therefore available in triggered workflows only. To dispatch on a schedule, use two workflows: a scheduled one that finds the tickets and hands each of them to a triggered dispatcher with the Trigger Another Workflow action. One ticket is then decided per run, and its appointment is written before the next ticket is decided. Scheduled workflows already using Ticket Dispatch keep running exactly as they are — you are only stopped when you next try to save one, and the builder names the action to replace it with. See Ticket Dispatch (Suggest Technician).
Removing a Documentation Platform Now Asks What to Do With Its Documents
Disconnecting IT Glue, Hudu or Lexful stopped future syncing but left everything Neo had already indexed in place, so agents kept searching and citing content from a platform you had just removed. The Remove dialog now shows how many documents Neo holds from that platform — split by source when there is more than one, so IT Glue lists the older export and the API sync separately — and asks whether to delete them as well. Keeping them stays the default, because rotating an API key or moving to a new instance should not cost you what Neo already learned. Deleting removes Neo’s copy only; nothing in your documentation platform is touched. Large libraries are cleared in the background over a few minutes, and the count on the Documents tab falls as it goes. See Documentation platforms.
Removing IT Glue or Hudu Now Actually Disconnects Them
Selecting Remove on IT Glue or Hudu reported success, but the tile stayed on Connected and nothing appeared to change — because the stored API credentials were never deleted, and it is those credentials that decide whether an integration counts as connected. Removing either platform now deletes its credentials, and tells you plainly if that did not work instead of reporting success. Seven accounts were left showing a disconnected platform as connected; all of them have been corrected, and no action is needed from you. See Documentation platforms.
Agents Can Now Review Their Own Configuration in Bulk
An agent with Neo API permissions could already read and change Neo’s own settings one call at a time. It can now do the same from a script, which is what you want when the job spans many things at once — comparing a setting across every agent you run, checking which workflows still carry an instruction you have moved on from, or pulling a month of runs and summarising them. Until now a script could reach your PSA, your RMM and Microsoft 365 but not Neo itself, so that kind of review had to be done one agent at a time. The same permission groups and approval rules apply either way, and there is nothing new to switch on. See Neo API.
Reorder Filter Rules and Groups Without Rebuilding Them
A rule added to a ticket filter landed at the bottom and stayed there. If you wanted it higher, or inside a different AND/OR group, the only way was to delete it and create it again — and a mistake in a long filter meant redoing several rules. Every rule and group in the filter builder now has a drag handle and Move up / Move down arrows. Drag a rule onto another rule to take its place, onto a group’s header to move it into that group, or onto the top header to pull it out of a nested group; the arrows do the same one step at a time and work from the keyboard. Moving a rule within its own group changes only how the filter reads; moving it into or out of a group changes what it matches, so a short notice names where it landed and the warnings under the filter refresh straight away. Available in the workflow builder, the agent Filters tab and the backfill wizard. See Filter tickets.
Tickets Arriving Together No Longer Pile Onto One Engineer
When several tickets arrive at once, each dispatch decides on its own and takes a few minutes to do it. Every one of them was reading the assignment counts from the moment its run started, so none could see who the others had just chosen — and a group of similar tickets could land entirely on the same engineer, each decision correct on its own. Neo now reads those counts immediately before it decides rather than at the start of the run, and lists any assignment a simultaneous dispatch has just made under the engineer who received it, so the next decision counts it as work already given. For tickets that arrive in the same instant, where no dispatch can see any other, the per-engineer burst limit now spans five minutes instead of one and allows three assignments in it — the old one-minute limit was shorter than a single decision takes, so it could not apply. Nothing to enable. See Parallel Dispatch.
One Home for External APIs — the Per-Agent Editor Is Gone
With Custom API connections live, keeping the old per-agent API editor next to the new Connected APIs picker meant two ways to do the same thing — and no clear answer to which one you should use. There is one now: every existing per-agent API configuration was migrated to a connection (verified request-for-request, credentials included, with nothing changing in what your agents do), and the agent builder shows only the Connected APIs picker. Configure an API once on Integrations → Custom API; pick it in any agent. Rotating a credential updates every agent that uses it. Anything you built keeps working — the migration touched configuration, not behavior. See External API Request.
Connect an API Once, Use It From Every Agent
Until now, every agent that called an external API — a shipping tracker, an alerting webhook, an internal tool — carried its own copy of the endpoint and its own copy of the credential, so rotating one API key meant editing every agent that used it. The Integrations page now has a Custom API tile: a guided setup walks you through pasting the address, choosing how the API authenticates (API keys, access tokens, username & password, or OAuth 2.0 — including providers that need custom token parameters), describing the fields Neo can fill in, and sending one real test request before you save. Agents then pick the connection by name under Connected APIs in the External API Request tool — one definition, one securely stored credential, shared by every agent you allow, and updating the credential updates all of them at once. APIs already configured inside individual agents keep working exactly as before. See Custom API.
A New Teams Channel No Longer Looks Live Before It’s Installed
A channel is only reachable once its Teams app is installed into a Microsoft 365 tenant, and only a Teams or Global administrator of that tenant can approve it. A new channel is Active the moment you create it, though — that only means routing isn’t paused — so anything reading the channel, including the Neo Support Agent asked to put an agent into Teams, could report a bot as live that nobody could actually message. Channels now say so: over the API every channel carries install_required and, while that’s true, the outstanding step in install_next_step, naming the administrator who has to approve it. The Neo Support Agent now finishes by handing you that step instead of calling the channel active. Creating a second Internal channel is also refused now rather than accepted and then impossible to install — your own tenant routes to a single Internal channel — which the dashboard already told you before you clicked. Existing channels are unchanged, and nothing needs configuring. See Channels.
A Copied Agent Saves on the First Attempt
Copying the Neo Support Agent — or any agent carrying a tool Neo supplies on its own — gave you a copy the editor refused to save. The Save button at the bottom of the editor stayed greyed out and reported that a tool definition was missing, naming tools such as Neo API Request or Load Skill. Those tools were never missing: Neo adds them to a chat agent at run time, so they do not appear in the tool picker and there was nothing for you to fix. The editor now leaves them alone, and a copy saves straight away with its full toolbox. Copying also opens the copy as a new agent in its own right, so the page you are on names the agent you are editing. 25 agents across 13 accounts were held in this state and all of them now save.
Format Your Agent Instructions Like a Document
Long custom instructions were a wall of plain text — hard to read back, and anything you pasted from a document lost its bold, lists, and headings on the way in. The instructions box now works like a document editor: headings, bold, lists, quotes and tables render as you type, with a toolbar and keyboard shortcuts like Ctrl/⌘+B. Typing Markdown works too — ## becomes a heading, - starts a list. Indenting works from the keyboard as well: Tab indents a list item and Shift+Tab moves it back out, and typing - or 1. inside an item indents it, so a nested list can be typed straight through instead of pasted in. And if you would rather write the Markdown yourself, switch the box to Markdown with the control in its top-right corner: that is the raw text, editable, saved exactly as you type it. Pasting from Word, Google Docs, a web page, or a Markdown file renders your formatting instead of flattening it. Structure doesn’t just help you — agents follow well-organized instructions more reliably. Works in the agent builder and in every tool’s custom instructions field, with no change needed to instructions you already have. See Writing effective agent instructions.
Your Technicians’ Real Faces on Replies Your Customers Read
When a technician answers on a ticket, your end-user Teams bot relays that reply to the employee as a card showing who wrote it — until now, their name over a coloured disc of their initials. That disc is now their real Microsoft 365 profile photo, which is what an employee actually recognises. It follows the technician mapping you may already have: connect Microsoft Teams — Technician Mapping and every mapped technician’s photo appears on their next relayed reply. There is nothing to enable on the channel, and nothing to set per client. A technician who is not on your Technicians page can still get a photo — Neo matches the note author’s PSA email address against your Microsoft directory. Anyone Neo cannot match, and anyone with no photo set in Microsoft 365, keeps the initials exactly as before. Channels set to Show your own name instead or Don’t label them are unaffected, because they name no individual. Your client’s Microsoft tenant never reaches into yours: the photo travels inside the card Neo sends. See Live ticket updates in the chat.
Remove or Reduce Your Own Top-Up Packs From the Billing Page
Turning the auto top-up toggle off only stops Neo buying new credit packs. The packs you already have are part of your subscription, so they kept billing every month until you emailed us to take them off — and several accounts paid for months of extra credits they had already decided they did not need. Go to Billing → Auto top-up and choose Manage top-up packs, then set how many of each pack to keep: drop one, drop several, or remove them all. As you change the numbers you see what you will pay each month, the extra credits you keep, and the credit limit you are left with. Changes apply straight away, and Neo credits the unused part of this billing period to your next invoice. If you have already used more credits this month than your new limit allows, Neo warns you that your automations will pause until your credits reset on the 1st. Remove every pack and auto top-up switches off too, so they are not bought back; keep at least one and your setting is left alone. You need the Admin or Owner role. See Removing or reducing your top-up packs.
Your Customers Now See Your Service Desk on ConnectWise Replies, Not Neo
ConnectWise records every note against the member who wrote it, and Neo wrote all of them — internal working notes and the replies your customers read — as the API member it signs in with. So a customer reading their ticket saw the reply come from whatever you named that member, usually something like “NeoAgent”. Neo now writes client-facing replies, and the emails ConnectWise sends for them, as your non-API ConnectWise member instead. Internal and resolution notes stay on the API member, so your technicians can still tell at a glance which notes Neo wrote. There is nothing to switch on. To change the name your customers see, rename that member in ConnectWise — “Acme Support”, for example. If you have not chosen a non-API member, nothing changes. See Who authors Neo’s notes.
Dispatch Agents No Longer Double-Book the Same Engineer
Neo runs one agent per ticket, and those runs happen at the same moment. Two of them reading the same engineer’s calendar a few seconds apart would both see the same free slot and both take it. Before a dispatch agent writes an assignment now, it reserves that engineer and slot for ten minutes so no other run can claim them, re-reads the calendar in case the engineer booked something themselves, and reports anything it finds wrong: leave, an overlapping appointment, a slot outside the engineer’s working hours, a slot past the SLA deadline, or an engineer who has just been handed several tickets. A reported problem does not cancel the assignment — your agent reads the report and decides, because your instructions say what your business accepts. You see each decision and the reason for it in Event History. This has been running on selected accounts since mid-August and is now on for every account with a dispatch agent. There is nothing to switch on, nothing to configure, and it costs no credits. See Verify Dispatch Decision.
Chatting With Neo No Longer Grants Access You Never Gave
Someone who chats with the Neo Support Agent — in Teams, for example — but has no account under Roles & Access could ask it to change any agent in your workspace, including dispatch rules that decide who receives tickets. A person you had given an account was correctly held to their role, so the people you never set up had the most access rather than the least. Now anyone without an account is refused, and the agent tells them to ask an administrator instead. If a colleague needs to look at agents through the chat, invite them as a Viewer; if they need to change them, give them a User or Admin role as usual. Nothing changes for people who already have an account. See Roles & Access.
Ask Neo Support Why an Agent Skipped a Ticket
The Analysis tab under Agents & Workflows answered one question from a fixed form, and only ever gave you one answer — no follow-up, no sight of the agent’s configuration. That question now goes to the Neo Support Agent instead: type the ticket ID or number, click Ask Neo Support, and the chat opens with the question written for you. Review it and send. Neo reads the same events the tab read, plus the agent’s settings and the full run trace, and you can keep asking — “so which filter blocked it?”, “show me the last run that did work”. The tab stays where it is, so a bookmarked link still lands in the right place. See Neo Support Agent and Event History.
A Cancelled Service Call No Longer Counts as Booked Work
If you filter Autotask tickets on “[Extra] Count of Service Calls Scheduled for Anytime in the Future”, that count includes calls your team has completed or cancelled. So a ticket whose only booking was cancelled still looks scheduled, and a workflow set to hold back on booked tickets stays quiet when it should act. A new Autotask filter, “[Extra] Count of Open Service Calls Scheduled for Anytime in the Future (excludes complete and canceled)”, counts only work that is genuinely still going to happen. Use it wherever “already booked” should mean an appointment that will actually take place — holding back an hourly escalation, for example. Neo reads a cancellation both from Autotask’s own record on the call and from your status name, so if your cancellation status is called something else, include the word “Canceled” in its label. Filters that read service calls also run much faster now on large ticket sets. See Tickets Without Scheduled Work.
Map a Company to IT Glue, Your RMM, or a Microsoft Tenant From the Companies Page
Fixing a company Neo couldn’t match automatically meant opening the right integration, finding its Organization Mapping tab, and searching back for the company. Every company row now has Map system: choose the system, search its organizations, and map the right one on the spot. It is the same manual mapping as before, so it still beats automatic matching and survives the next sync. Companies with no Microsoft tenant also get Map GDAP tenant in the M365 Access column, so a customer you hold a GDAP relationship with can be connected without asking their admin to approve anything. The GDAP panel on the Integrations page now links straight to the companies you have connected. See Company Mapping.
Pinned Company Memory Now Reaches Every Smart Action
Ticket Triage and Ticket Dispatch already read the memories you pin to a company on every run. L1 Engineer and Acknowledge Issue did not: each carried its own Include company-level custom instructions switch, off unless you found it, and its label pointed at a Companies tab field Neo no longer uses. So a memory you pinned for a client shaped how Neo sorted their tickets but not how it resolved them or replied to them. That switch is gone, and all four actions now read your pinned company memories the same way, with nothing to turn on. If you keep pinned memories for a client, read them once before your next L1 Engineer run, because that action now follows them too. See Memory.
Limit a Memory to the Agents That Need It
Every agent working for a company used to read all of that company’s memories. A memory now has an Agents setting: leave it on All agents, or name the ones that may read it. Use it when a fact belongs to one job — a deployment value your EDR agent needs and your customer-facing agent does not, or a long runbook that would crowd every other agent for no gain. Naming agents also takes the memory out of your classic workflows, because a Smart Action runs inside a workflow rather than as an agent, so the setting says so plainly. Pinned memories are now budgeted per agent too, so a busy agent no longer stops you pinning something for a quiet one. See Memory.
The Companies CSV Import Has Been Removed
The Import CSV button on the Companies tab is gone, along with its template. It was a one-off bulk setup path from before Neo matched companies to your other systems on its own, and it had become the last place that still wrote the retired per-company instruction fields. Set a company up from its row instead: Map system connects it to IT Glue, your RMM or a Microsoft tenant, and the M365 fields are on the company itself. Anything you would previously have put in the CSV’s memory or chat_instructions columns belongs in Memory, where you can also choose which agents read it.
Every Integration Now Shows Its Own Logo, and Technician Mapping Has Moved
Ten tiles in Integrations → Directory had no logo and showed two grey letters instead, and long names were cut off mid-word — the three Microsoft Teams tiles all opened with “Microsoft Teams —”, so the half that told them apart was the half you could not read. Every tile now carries its vendor’s own mark, and the vendor sits on its own line above a short title, so Microsoft Teams → End-user Chat Bot reads at a glance. One tile also changed place: Microsoft Teams — Technician Mapping, previously called “Technician Mapping & Availability” and filed under Scheduling, is now under Identity & Workspace — mapping your technicians to their Microsoft accounts is the thing everything else reads, and dispatch availability is one of its uses rather than the whole point. Your existing mapping, consent and Shifts settings are untouched, and there is nothing to reconnect. See Microsoft Teams — Technician Mapping.
Explain Any Form Question With a Description
A question on an intent form was one line of text, so anything an employee needed to know before answering — a lead time, what counts as an exception, which of your options fits their case — had to be squeezed into the question or left out. Every question now takes an optional Description: a short paragraph shown under it, in the Teams card your employees fill in, in the dashboard chat, and in the numbered list a ticket-triggered agent sends by email. It is where the guidance already sitting on the forms you run today belongs — “please note there is a ten day lead time on all new starters” reads as a note rather than as part of the question. A form can also hold 25 questions now, up from 15, so a longer intake form ports across in one piece. Descriptions can run to 750 characters each and 5,000 across a form; the editor counts as you type and blocks a save that goes over, because everything on a form travels inside one Teams card. Forms you have already built are unchanged.
Edit and Run Your Skill Scripts From the Dashboard
The scripts inside a skill opened in a read-only viewer with a lock icon, so changing one — fixing a calculation, adding a step — meant asking Neo Support and waiting for the answer. Every file in a skill is now editable in the Skills tab, the plain-English procedure and the scripts alike, in a proper code editor with line numbers and syntax highlighting. Save with the button or ⌘/Ctrl + S. Every save keeps the previous version, so History on any file shows you what came before and Restore brings it back into the editor. Edit several files and Save all writes them together, with an Unsaved marker on anything still to save. Before you rely on a change, click Run (or ⌘/Ctrl + Enter): Neo runs the script in the same secure sandbox your agents use, so it reaches your real systems, and streams the output as it goes. You choose which agent’s permissions the run borrows, and the run is always read-only — it can read your PSA, Microsoft 365 and RMM but can never change anything, so trying a script is safe. It runs what is in the editor, so you do not have to save first. When a run fails, Neo says why in plain language — a syntax error with its line, a permission the agent you picked is missing, a timeout — and Ask Neo Support to fix this opens Neo Support with the failed run attached, so it reads exactly what ran and what went wrong. Deleting a skill has moved into the menu, away from the file toolbar. See Creating skills and Custom skills.
Ask an Agent When a Client’s Microsoft Licenses Expire
Asking an agent about a client’s Microsoft 365 licenses told you how many seats existed and how many were in use, but never when anything renewed or lapsed — that part of the answer always ended in “check the Microsoft 365 admin center”. Microsoft publishes a renewal date per subscription and agents now read it, alongside the status, the seat total, and whether the subscription is a trial. So “which of Contoso’s subscriptions renew in the next 60 days, and how many of those seats are actually assigned?” is now one question rather than a report plus a portal visit. It covers subscriptions you did not buy through a marketplace, which is where the gap was widest: Purchase License and its companions only ever knew about the subscriptions your provider sells you. Nothing to enable — any agent whose Microsoft 365 permissions already include Licensing picks this up, at the access level you set. Free and self-service subscriptions publish no date, and Microsoft reports nothing for a subscription bought outside the tenant’s own purchase channel; an agent tells you the date is unavailable in those cases rather than guessing. See Licensing.
Agents Can Attach Files to Halo Tickets
An agent that produced a real file — a licensed-user export, a diagnostic log, a report — could not put it on a Halo ticket. Every attempt failed, and the agent fell back to pasting the contents into a note, so a 200-row CSV arrived as a wall of text rather than a file a technician could open in Excel. Worse, the agent was told the PSA had refused the file, which sent people looking for a Halo size limit that does not exist. Attachments now land on the ticket, under the filename the agent gave them. Nothing to enable, and no limit to work around — the size was never the problem. If a PSA ever does fail an attachment, the agent now says whether the file was refused or the PSA itself had an error, and stops trying to shrink a file that was fine. See Attach File to Ticket.
PSA Connection Checks Now Run Before Neo Stores Your Credentials
When you click Save & run checks on HaloPSA, ConnectWise, or Autotask, Neo now runs the verification suite against the values you just entered — authentication, identity, ticket read and write, and webhook permission — and only stores the credentials when those checks pass. A missing HaloPSA admin:webhooks scope (the usual reason a Client ID and Secret work but the connection still fails) now shows as a failed Webhook registration row with the exact Permissions tab to open, instead of a generic “credentials are not valid” toast. Data sync still starts after a successful save. See Connecting HaloPSA, Connecting ConnectWise and Connecting Autotask.
The Chat Bot No Longer Agrees a Callback Time
When an employee asked to be called back at a particular time, the end-user chat bot would agree to it — a commitment your dispatch team never made, against a queue the bot cannot see. It now treats the time as a request: it passes it through to the ticket and tells the employee your team will confirm. It still gives a time your team set — a booked appointment or a scheduled date on the ticket, or one you have put in the agent’s Custom Instructions — because those are your commitments to make, not the bot’s. The employee’s own request never becomes one of them, even after the bot has written it on the ticket. The same applies to naming a technician or arranging a visit. See End-user tools.
Tools You Can’t Switch Off No Longer Set Your Agent’s Price
Some tools are on for every agent whether you want them or not — the sandbox Neo uses to process large results, the searches over your tickets and documentation, and the ability to split work across subagents. For agents priced per run, those built-in tools used to count toward the price, so an agent whose chosen tools were all 1-credit could still cost 2 per run. Now only the tools you chose set the per-run price. Agents billed per tool call (chat and scheduled agents) still pay each tool’s normal tier when it’s actually used. Nothing to change on your side. See Tool credits.
The Neo Support Agent Is Now Free to Ask About Neo
The Neo Support Agent exists to help you understand, debug, and build your Neo setup — and that help should not cost credits. Its support tooling was already free; now the sandbox it uses to process large results (our documentation index, a long agent run) is free on it too, so a question about how Neo works costs nothing end to end. Searches that read your own tickets and documentation still bill as normal: you pay to fetch your data, not for help with Neo. On your own agents, Neo also now points the agent at the free Sandbox Read File first when picking a large result back up, so plain read-backs cost nothing there either. See Neo Support Agent and Sandbox.
End-User Bot Tickets Now Keep the Customer’s Exact Words — Every Exchange
A ticket handled through your branded end-user bot already carried the opening conversation word for word, but anything the customer said after the ticket existed — most importantly the message where they confirm the issue is fixed — only reached the ticket if the bot chose to write it, and a resolution often recorded just a summary. Now every exchange that touches a ticket also records the customer’s message on it, taken verbatim from the chat itself rather than the bot’s retelling, as an internal note titled Customer message. If the same exchange already put those exact words on the ticket — the intake transcript, or a customer reply note — no duplicate is written. Internal means what it always has: it never emails the customer and never fires customer-facing notification rules. See End-user tools.
Connecting a Documentation Source Now Asks What’s Shared With Every Client
Most documentation belongs to one customer, but some of it — shared runbooks, internal knowledge bases, vendor guides — applies to all of them, and Neo has no way to know which is which unless you say so. That setting used to sit on the connected integration page where it was easy to miss, so shared documentation quietly stayed scoped to a single company and never surfaced in anyone else’s answers. Connecting SharePoint now ends on the global-folders picker: tick the folders that apply to everyone, or click Skip — nothing is global. Confluence ends the same way on its global-spaces picker. Connecting IT Glue asks the question in the connection form — name the organizations that hold general documentation, or state that every organization belongs to one client. Either way it’s a deliberate answer rather than a default nobody saw, and you can change it later from the integration page; reconnecting an existing integration never re-asks. The SharePoint picker now also labels each library with its site, so the libraries that all carry SharePoint’s default name “Documents” can be told apart. See SharePoint, Confluence and IT Glue.
Agents Can Now Work in SharePoint — Writing Only Where You Say
SharePoint joins IT Glue, Hudu, Lexful and Confluence in the agent builder’s Documentation section: a new SharePoint API tool lets agents browse sites and libraries, read and search files, and work with lists and pages — automatically enabled when you set SharePoint permission groups on the agent. Writing is a separate, deliberate opt-in with a boundary Microsoft itself enforces: your admin grants write access site by site on the SharePoint integration page, and a write to any other site is refused whatever the agent’s settings say — deleting is never possible anywhere. Reading needs nothing new; every tenant with SharePoint connected has it today. Per-group Require approval and the usual Read Only/Read-Write levels apply. See SharePoint API and SharePoint.
A Colleague’s Open Tab Can No Longer Overwrite Your Edits
When two people had the same agent open, whoever saved last quietly replaced the other’s work: the older tab sent back the configuration it had loaded, so instructions written an hour earlier disappeared with no warning to either person. Neo now refuses that save and tells you the agent has changed since you opened it — copy anything you want to keep, refresh the page, and re-apply it. The same check covers enabling or disabling a workflow from a Workflows page that has been sitting open for a while. Version history is untouched and still holds every save, so edits lost before this can be recovered there. See Version History.
Connect Lexful and Your Documentation Comes With It
Lexful now appears in the Integrations Directory under Documentation for every account — it had been in a closed pilot. Connect it with the Key ID, secret, Account ID and API URL from your Lexful API key; Neo verifies all four before saving, so a wrong value is refused at setup. Syncs run daily, and Trigger sync on the tile pulls changes in on demand. Neo reads your asset types from Lexful at the start of every run, so documents, configurations, contacts, locations, domains and your own custom types are all indexed — including a type you add later. Passwords never leave Lexful, and any property marked secret or totp is skipped on every type. An Organization Mapping tab shows which PSA company each Lexful organization matched and lets you correct it, so documentation stays scoped to the right customer. For a live value or a write back into Lexful, agents use the separate Lexful API tool. The tile is marked beta for now. See Lexful and Lexful API.
Paused Runs and Their Continuations Now Show as One Row
When an agent pauses for a technician approval or an RMM script, the continuation used to appear as a separate row in Event History — and the paused row read PAUSED forever, so you had to dig to learn whether the work ever finished. The two now show as one row carrying the latest status, the total runtime with the waiting time shown apart (for example + 3h 12m waiting for approval), and the combined credits; a “2 runs” badge expands the individual runs when you want the detail. The pause itself also says why: Awaiting approval or Waiting for script instead of a bare PAUSED, and a pause that was already continued reads Resumed. See Event History.
Read Every Chat Conversation from the Admin Side
A new History tab on the Chat page lists every conversation in your workspace — dashboard and Teams, across all of your technicians — so you can see how an agent actually behaves without being the one chatting with it. Filter by agent, user, channel or time window, or sort by most credits to find the expensive conversations first. Each transcript shows, under every reply, what that turn cost and which tools it called — and a turn that ate most of a conversation’s credits is highlighted, so the reason a chat cost what it did is visible at a glance. If you run a branded end-user bot, an End-user view shows your clients’ conversations with it, with a company filter. Replies your team rated down are marked in the list, with the rating and comment shown in place. Reading history is reserved for a new Owner role — your first user starts as the owner and can appoint others under Roles & Access; other admins keep everything else they have today. See Chat in the dashboard.
“Is in list” Now Works on Numeric Filter Fields
Workflow filter rules on numeric ID fields — Ticket Type, Status, Priority, Agent and the like — can now use is in list and is not in list to match several values in one rule. Until now those operators only appeared on text fields such as Client Name, so matching three ticket types meant three duplicated rules in an OR group. Pick the values from the same dropdown you already use; existing rules keep working unchanged.
Ticket Dispatch Can Now Ask Before It Acts
A new Human in the loop step on the Ticket Dispatch action lets you decide how much autonomy dispatch gets: dispatch on its own (as today), ask before every assignment, or — the interesting one — ask only when unsure. In the last mode Neo handles routine tickets itself and only comes to you on a genuine dilemma: an SLA it can’t meet, a double-booking it would need, or instructions that contradict each other for this ticket. The question arrives as a Teams card and in the dashboard’s Approvals page with 2–4 concrete options — pick one, write your own instruction, or let Neo use its best judgment — and Neo dispatches exactly per your answer. Approving a proposal applies precisely what the card shows, including any calendar entries being moved to make room. A dispatch that asks costs the same one credit as one that doesn’t — waiting and answering are free. See Human in the loop on Ticket Dispatch.
Teams Replies Now Carry an “AI generated” Label
Answers from the Neo AI Agent app in Microsoft Teams now show Teams’ own AI generated tag beside the bot’s name; hover it and Teams adds its note that AI-generated content may be incorrect. It’s the label Microsoft defines, not wording of ours, and it meets a Microsoft Store requirement for apps that answer with AI. It marks chat answers only — approval cards and error notices stay unmarked. Your own branded bots are deliberately left alone: what they show your technicians and your clients stays your call. Nothing to switch on. See Microsoft Teams.
“Run Only Once Per Ticket” Now Holds When One Workflow Triggers Another
If an agent has Run only once per ticket switched on, that now holds no matter what starts the run — including a scheduled workflow using Trigger Another Workflow. Since late May it had been ignored on that path, so a scheduled workflow whose filter kept matching the same ticket re-ran the target agent on every cycle. One MSP’s agent ran 65 times on a single ticket over a weekend before anyone spotted it, and repeat runs like that were billed. Nothing to change on your side: existing agents pick this up automatically, and repeat runs now show as SKIPPED in Event History. Backfills are the one deliberate exception — re-processing tickets you have already handled is the whole point of a backfill, so they still run. Worth a look if you built the scheduled-to-triggered pattern and wondered why a ticket kept coming back. See Run Triggered Workflows on a Schedule.
Choose When a Chat Starts Fresh
A chat carries on where it left off, however long the gap — so someone who comes back the next morning doesn’t have to explain themselves twice. That’s right for an ongoing conversation, but not for a transactional bot, where each request stands on its own and tomorrow’s visitor shouldn’t inherit yesterday’s half-finished one. A new Start fresh after setting on each channel lets you say how long a quiet conversation may sit before the bot offers to start over. It only ever offers: the person sees a Start fresh / Continue card and picks, so nothing is discarded behind their back and a short window costs someone at most one tap if they were only away for a coffee. Leave it empty and nothing changes — the bot still offers the same card on long conversations that have grown big enough to be slow to pick back up. See Starting fresh after a pause.
Guided PSA Setup with Live Verification Checks
Connecting a PSA is now a guided walkthrough instead of a bare credentials form. Open Integrations, pick your PSA from the Directory, and a step rail walks you through the setup in order: creating the API user in your PSA, granting the permissions, and entering the connection details, with each step linking to the matching setup guide. When you click Save & run checks, Neo verifies the connection one check at a time, live: authentication, the identity Neo acts as, ticket read access, write access, the webhook registration, and data sync (Autotask also checks rate-limit headroom). Each check reports its result and timing as it completes, and a failed check names the exact screen in your PSA to fix, so a half-working connection is caught at setup instead of on your first ticket. A new health heartbeat beside the integration’s name shows the last ticket event, sync state, and recent errors at any time, with a Run checks now button on the integration’s own page to re-verify after you change something on the PSA side. The setup guides for all five PSAs were rebuilt to match: ConnectWise, Autotask, HaloPSA, ServiceNow, and Syncro.
Autotask Setup No Longer Asks for a Tracking Identifier
Neo Agent is now a registered vendor in Autotask’s Integration Hub, so when you create Neo’s API user you pick Integration Vendor → Neo Agent from Autotask’s own list instead of creating a Custom (Internal Integration) identifier yourself. Neo identifies itself from there, and the tracking-identifier box is gone from the connection form — a username and a secret are all you enter. This also settles a compliance point: Datto reserves the Custom option for integrations an MSP builds for its own internal use, so it was never the right choice for connecting a third-party product. Connections you made earlier keep working exactly as they are, on the identifier they already use — switch whenever it suits you by changing it in Autotask, then clearing the Your own API tracking identifier box on the integration page. See Creating the API user.
The “Need help?” Panel Is Now Resizable
The Need help? chat panel in the bottom-right of the dashboard opened at one fixed size — workable for a quick question, cramped for reading a long answer or pasting a config. You can now drag its top or left edge (or the corner) to whatever size suits you, and a new button in the panel’s header switches between your chosen size and the original compact one. The panel remembers your size across visits; Open in full page remains for when you want the whole screen. See Neo Support Agent.
Version History Now Shows What Changed in Every Save
The Version History dialog for workflows and agents used to tell you when something was saved and by whom — but never what changed, so finding the save that broke something meant opening versions one by one. Every version now carries labels summarizing its changes (Instructions, Tools +2 −1, Trigger & filters, Enabled), and selecting a version shows the exact before → after for every field — including a line-by-line comparison of instructions. Browsing stays in place: step through versions with the arrow keys, and use Restore this version or Open as copy only when you want to act. Each version also has an open in a new tab action that shows its full configuration in a second window, while the version list stays where it is — inspect as many versions as you like without losing your place. Especially handy when a teammate’s save overwrote your change and you need to find exactly where. See Version history.
Map Any SharePoint Folder to a Company — Not Just Neo’s Matches
The SharePoint mapping queue used to show only the folders Neo could match to a company by name — a folder with a name Neo didn’t recognize never appeared, and there was no way to map it at all. Unmatched folders now appear in the review queue too, each with a company picker, so every folder can be mapped by hand or dismissed. The row on the SharePoint page — now called Company mappings — also shows how many folders are still unmapped, so you can tell at a glance whether anything needs review. Remember: documents in unmapped folders belong to no company and stay out of company-scoped searches, so mapping (or marking a folder global) is what makes them reachable. See SharePoint.
The SharePoint Mapping Queue Opens Instantly, as a Folder Tree
Reviewing folder mappings on a large tenant meant staring at an empty dialog for close to half a minute while Neo finished matching every folder — long enough to look broken. The queue now opens straight away with the name matches already in place, and the AI guesses fill in on their own a few seconds later, so you can start reviewing before Neo has finished. The list is also a folder tree now, grouped by library and nested the way it sits in SharePoint, instead of hundreds of rows that each repeated their full path. A folder Neo matched to a company starts closed, since mapping it already covers everything inside it — open it only if you want a subfolder mapped somewhere else. Folders with no match stay open, because those are the ones still needing a decision. Every folder Neo matched arrives ticked — untick what you disagree with rather than confirming each one — and new All and None buttons, plus a checkbox on each library, let you act in bulk on whatever your search has narrowed the list to. See Map folders to companies.
A Clearer Approvals Inbox
The Approvals page now opens with the numbers that matter: how many requests are waiting on a decision, how many were resolved this week, and how long a request typically waits for one — plus a short primer on how approvals work. Expanded requests are easier to act on too: request text renders formatted instead of showing raw markup, and the agent’s full reasoning sits behind Show Neo’s reasoning so the question stays front and center. See Approvals in the dashboard.
Intents Now Work in Your Own Team’s Chat
Intents — your saved request types, with the details each one needs collected — used to run only on your branded end-user bot and your ticket-triggered agents. They now run on your internal chat agents too: give an intent the new Internal chat surface, assign it to one of your own agents, and your team gets the same intake in the dashboard or wherever you’ve put that agent in Teams. Structured intents show the same fill-in form your clients see, so a request raised in, say, a quote-request channel arrives complete the first time instead of turning into a chase. Two things to know: an internal conversation isn’t attached to a client company, so this surface offers only intents that apply to all companies — a company-scoped intent still runs everywhere else. And the Neo Support Agent can carry an intent if you pick it by name, but leaving the agent list empty never assigns one to it. See Intents.
Long Chat Transcripts Reach the Ticket in Full
When your branded end-user bot files a ticket, it copies the chat that led to it into the ticket body. Long conversations were being cut short there — and because the transcript sits at the end of the body, it was the part that got dropped, mid-sentence, with nothing to say anything was missing. Two fixes: Autotask tickets now carry up to 7,500 characters of body — close to Autotask’s own 8,000 limit, and several times what Neo was allowing before; and anything still too long is written onto the ticket as an internal note holding the whole transcript, with a line in the body pointing to it. Nothing to configure — and on Autotask, the note carries the Note Type you chose for Neo’s own notes. See End-user tools.
Four Tools Now Show as Always On, Instead of Switches That Did Nothing
The three Sandbox tools and Generate Artifact now appear in an agent’s tool list as always on, and can no longer be switched off. Every agent already had a sandbox whether that switch read on or off, so the switch was telling you something untrue — and Generate Artifact, which saves a written report you can read on a run, is now on every agent too. Agents write a report when the work calls for one, not on every run; to make an agent always produce one, or never, say so in its custom instructions. Worth knowing if you’ve ever wondered why a file appeared under Artifacts: a report the agent wrote and a file it produced in its sandbox both land there, and only the first is Generate Artifact’s doing. See Built-in tools and Sandbox.
Watch an Agent Think, Live
When you press Run Now on an agent — or step through one in iteration mode — the execution log no longer sits empty while the agent works out its first move. Its reasoning now streams into the log as it’s written: a Thinking… badge marks the current thought and the text grows in front of you, so you see within seconds that the run is underway and where it’s heading, instead of waiting for the whole first step to finish. Nothing to switch on, and scheduled runs are unchanged — their thoughts appear as each one completes. See Event History.
Stop Now Actually Stops the Agent
The Stop button in chat used to stop the reply appearing on your screen — the agent carried on working behind it, and could still make changes you’d stopped it to prevent. It now genuinely stops the agent: it won’t start another action, and the conversation ends there. Teams’ own stop control on a streamed reply does the same. A stop lands at the agent’s next step, so if it’s part-way through something long it finishes that step first, and anything it had already done stays done. And if your browser loses a running conversation — you close the tab, the connection drops — the chat now tells you the agent is still working, and offers to reconnect or stop it, so you’re never typing a correction at an agent that can’t hear you yet. See Using chat.
The Escalation Status Is Now Optional
When your branded end-user bot hands a ticket to a technician it does two things: leaves a handover note, and moves the ticket to a status you nominated. That second half is now optional. If your chat tickets already open in a status your queue triages, there was never anywhere useful to move them — you can now leave Statuses when Neo needs to escalate to a human empty and Neo hands the ticket over with the note alone, leaving the status untouched. Set one only if your bot’s tickets open somewhere nobody watches, where the move is what puts the ticket in front of a person. If we picked a status for your agent when this shipped and it isn’t what you’d have chosen, clear it or change it — nothing is locked. See handing a ticket to a technician.
The End-User Bot Can Now Hand a Ticket to a Technician
When your branded end-user bot can’t finish the job — the request needs an account change, or the employee simply asks for a person — it now moves the ticket to a status your queue actually triages and writes a handover note for the technician: what the employee needs, what the bot already tried, and what it ruled out. This closes a gap for anyone who parks chat tickets in a bot-only status like Chat Active: those tickets no longer wait for someone to notice them. Pick which status means “a human has this” under Create Ticket (End User), alongside the initial and resolved statuses — most MSPs pick one; pick several and the bot chooses the one that fits. The handover note is internal on every PSA, so it never emails the employee. See End-user tools.
Autotask: Pick the Note Type for End-User Chat Notes, and Tickets That Read as the Employee’s Own
If your Autotask workflow rules key off Note Type, you can now choose the type your branded end-user bot stamps on what it writes — one for the employee’s own replies, one for the bot’s own notes and its handover notes — so your rules can match them and tell them apart from technician activity. Both sit on the Add Ticket Reply (End User) card; leave them empty and nothing changes, they keep using Task Summary as before. Separately, a ticket the bot files is now recorded as raised by that employee’s contact rather than by Neo’s API user, matching how their replies already appear. That attribution needs Contact Impersonation on your Neo API user’s security level — without it Autotask accepts the ticket and quietly ignores it, so it’s worth a look if replies on your tickets show up under your API user. See End-user tools.
A Clearer SharePoint Integration Page
The SharePoint page under Integrations has been redesigned around the questions that matter day to day: is it syncing, what’s being synced, and what needs your attention. The connected view now shows the sync status with a Trigger sync button — pull in SharePoint changes on demand instead of waiting for the next scheduled run — and lists your synced libraries. The two sharing controls are now explained right on the page: Company mappings decides which client sees which folder’s documents, and Global folders shows how many folders you’ve shared with every client. See SharePoint.
ServiceNow: Agents Now Read Screenshots, Catalog Form Answers, and Every Kind of Knowledge Article
Three upgrades for ServiceNow-connected agents. Screenshots and photos attached to a ticket can now be read — the agent receives a written description of what the image shows (error dialogs, codes, visible state) and works from that, alongside the text files it could already open. The answers a requester typed into a catalog form or record producer, and the chat/call interaction a ticket was created from, are now readable too, so an agent no longer misses the actual content of a service request. And knowledge articles built from templates — how-to, known-error, or your own custom templates — now return their full body instead of appearing empty. See PSA API.
Huntress Is Now a Native Integration
Connect Huntress once under Integrations → Security and your agents can work its alerts directly: pull the incident report behind a Huntress ticket with its findings and affected host, approve the remediation, isolate a compromised machine, or file a travel exception that expires on its own so someone abroad stops triggering the same escalation every day. The actions that carry real weight — isolating or removing a host, approving remediations, resolving an incident, changing who has Huntress access — always wait for a technician’s approval, whatever else you let the agent do on its own. Pick one of four access profiles, or set each area yourself. See Huntress.
Triage Notes Now Say Why a Field Was Left Alone
When triage leaves a field as it is, the note on the ticket now gives the reason instead of only reporting that nothing changed. The most common reason is one of your own custom instructions on that field — so if a field keeps coming back unchanged when you expected an update, the note will name the rule behind it rather than leaving you to guess whether triage is working. See Ticket Triage.
Web Fetch Now Reads a Whole Page in One Go
Fetching a long page used to arrive in 32 KB slices that the agent had to request one at a time and stitch back together — slow, credit-hungry, and occasionally wrong, because reassembling text by hand is error-prone. A fetch now returns the entire page in a single step, up to 5 MB. When a page is too big to hold in the agent’s working memory, Neo puts it in the agent’s sandbox and the agent works on it there, so nothing is lost and a large page costs one fetch instead of one per slice. Agents with Web Fetch enabled can also now pull data directly from their allowlisted hosts inside the sandbox — useful for a large feed or a paginated open-data source, which an agent can now retrieve and process in one step. Only the hosts on that agent’s allowlist are reachable, and agents without the Web Fetch tool have no outbound web access at all. See Web Fetch.
Invoices Now Go Wherever You Say at Checkout
When you subscribe — or pay through a link your account manager sends you — you now enter the email address your invoices should go to, so they can reach your accounts team directly instead of whoever happened to be signed in when the plan was set up. It doesn’t have to match the email you log into Neo with, and the person paying doesn’t have to be the person who set up the account. Receipts and payment-confirmation emails follow the same address, and you can change it any time from Billing → Plan & billing → Open Stripe portal. Accounts that already have billing set up keep their current invoice address — change it in that same place. See Billing & credits.
Neo Support Runs on a Newer, Sharper Model
Neo Support — the Need help? assistant, the Chat page, and the Teams bot — now runs on the newest generation of OpenAI models, and your branded end-user bots are upgraded with it. Everyday questions come back faster and more accurately. There’s nothing to configure — every conversation gets this automatically, and the Fast/Smart toggle works exactly as it did.
White-Label Installs: See Every Client’s Status, and Send Install Links in Bulk
The White-label installs section of an end-user channel is now a table of every client with a Microsoft 365 tenant, each with a clear status: not enabled, link sent (and when it expires), link expired, installed, or live for everyone — so you can see at a glance who still needs a nudge. Select several clients and generate their install links in one go, then copy them all as text to send out. Generating a new link for a client replaces the previous one, and removing a row cancels an outstanding link — a link you’ve since replaced can’t be used by mistake. Clients sharing one Microsoft 365 tenant now show as a single row, since one install covers them all. See the end-user bot guide.
Longer Chats, and Your History Stays Put
Two fixes to the Chat page that technicians reported. Switching to another conversation and back no longer blanks out the one you return to — your messages are always there — and a long conversation now opens on your most recent messages, with Load earlier messages at the top to go further back. Chats also hold considerably more before an agent runs out of room; when a single question does pull in more than it can work with, the agent now tells you so and you can simply ask again more narrowly in the same conversation instead of starting a new one. See Using chat.
Neo Support Now Knows Which Page You’re Looking At
Open the Need help? assistant while you’re on an agent and ask “why did this run fail?” — it already knows which agent you mean. The page you have open travels with your message, so “this agent” is enough and there’s no ID to paste. What’s sent is the page name and the ID that’s already in your address bar, and nothing else: not what’s on your screen, not what you’ve typed into a form. A small marker under your message shows when the page went along with it, and asking about something on a different page works exactly as before — the page tells Neo what “this” means, it doesn’t change the subject. Only the Need help? widget does this; the full Chat page and the Teams bot send exactly what you type. See Neo Support Agent.
Iteration Mode: Fix a Step Without Rerunning the Whole Attempt
When you’re stepping through an agent in iteration mode and only the latest step went wrong, Neo can now rerun the attempt from the last good checkpoint instead of from the beginning. Everything the agent already did stays done and stays in its memory — a user it created isn’t created twice, information it looked up isn’t fetched again — and the agent redoes only the step you flagged, now following your instruction fix. Neo Support picks this automatically when it fits, and still reruns from the start when your fix changes what the early steps should do.
The End-User Bot Now Works Quietly
While it put a reply together, your branded end-user bot showed a live “working…” card listing the steps it was taking. End-user channels now start with Show progress updates off, and existing ones have been switched off for you — an employee asking for a password reset reads a running list of tool calls as noise, not reassurance, and every MSP who touched this setting turned it off. Internal channels are unchanged: technicians still watch their agent work. It remains a per-channel switch, so putting it back on for any end-user channel is one click in the channel’s settings, and the bot’s answers are identical either way. See what people experience in Teams.
Sync Client Documentation from SharePoint
Neo now syncs documentation straight from your SharePoint document libraries, so agents can search and cite it while resolving tickets. There’s no API key to create — SharePoint connects through a dedicated Neo SharePoint Connector app that holds read access and nothing else; a Microsoft 365 admin consents it once, then you pick which libraries to sync. It’s separate from Neo’s Microsoft 365 administration app on purpose, so documentation search doesn’t require granting Neo any admin access. Because SharePoint has no built-in sense of which client a folder belongs to, Neo scans your top folders after the first sync, matches each to a company by name, and shows you the list to confirm — so you approve suggestions instead of mapping every folder by hand, and a search for one client only surfaces that client’s documents. Folders you don’t map stay private to their own client — nothing is shared across clients unless you explicitly mark it global (below). Find it under Integrations → SharePoint. See SharePoint.
Choose Which Documentation Every Client Can See
Some documentation applies to every client — shared runbooks, internal knowledge bases, vendor guides. You can now mark those as global so their contents surface in every client’s searches, while everything else stays scoped to the client it belongs to. In SharePoint, click Global folders and tick any folder or whole library; in Confluence, click Global spaces and tick the spaces that apply to everyone. Changes take effect right away — Neo re-tags the already-synced documents without waiting for the next sync. This is always a deliberate choice: documentation is never shared across clients just because Neo couldn’t match it to one. See SharePoint and Confluence.
Time Logged Through Chat Now Lands on the Technician’s Own Timesheet
When a technician asks a chat agent to log time or raise a ticket, that record now carries their name in your PSA instead of Neo’s — so 20 minutes logged from Teams on the way to the next job counts toward their utilization, not a robot’s. Tickets and notes they ask for are credited to them too. There’s nothing to switch on: it works as soon as a technician is mapped to their Microsoft account under Teams Technician Mapping & Availability, in Teams and in the dashboard chat alike, and anyone not yet mapped is told so in the reply rather than silently mis-filed. Automations are deliberately unchanged — anything Neo does on its own is still recorded as Neo, so your audit trail always shows what was automated. Autotask also needs Resource Impersonation on the Neo API user’s security level; if you followed the setup guide it’s already on. See PSA records carry the technician’s name.
The End-User Bot Now Documents Its Own Questions on the Ticket
Until now a ticket handled through your branded end-user bot showed only the customer’s side of the conversation — the bot’s follow-up questions and confirmations never reached the PSA, so a technician opening the ticket saw answers with no questions. Now, whenever the bot creates or updates a ticket, its own message to the user is added to that ticket as an internal note. Internal means exactly that: it never emails the customer, never fires your customer-facing notification rules, and never shows up in the end user’s chat or ticket view. It’s always on, for every PSA. See End-user tools.
Teams Answers Now Appear As They’re Written
In a 1:1 chat with your Teams bot, the answer now streams into the conversation as it’s written — with a Stop button to cut a long one short — instead of the chat sitting silent until the whole reply is ready. Technicians asking for something lengthy, like a written-up procedure, see the reply start within a few seconds rather than waiting a minute or more for it to land in one go. Nothing to switch on, and answers themselves are unchanged. Group chats and channels still receive the finished reply in one message — that’s a Microsoft Teams limitation, not a setting — and when the agent looks things up first, that research still shows in the “working…” card before the live text begins. See what people experience in Teams.
A Channel’s Audience Is Now Fixed, and Channel Names Must Be Unique
Two changes that stop a channel quietly becoming something you didn’t intend. Audience — Internal (your technicians) or End-user (your clients’ employees) — is now set once, when you create the channel, and shown read-only afterwards. Changing it on a live channel used to clear the bound agent and offer only the other audience’s agents, so one stray click could leave a channel answering with the wrong agent in the wrong trust domain. To serve the other audience, create a second channel. Separately, channel names must now be unique: the name is the only label the channel list shows per row, so two channels sharing one made it impossible to tell them apart. Existing duplicates keep working — you’ll just be asked for a different name next time you rename one. The channel list also now shows each channel’s audience alongside its transport. See Channels.
Relayed Technician Replies Now Show Who Sent Them
When a technician replies on a ticket and that update is relayed into your branded end-user Teams bot, it now arrives as a card showing the technician’s own name and avatar, with their message and the ticket number and status below it — instead of a line of italic text that looked much like the AI’s own replies. The name comes straight from the note’s author in your PSA, so there’s nothing to map or maintain. Prefer to present one brand rather than individual staff? Switch the channel to Show your own name instead and every relayed message carries your label and your bot’s icon, never a person’s name. You’ll find all three options — technician’s name, your own name, or no labelling at all — under Relayed technician messages in the channel’s settings; whatever you had configured before carries over as-is. The status on that card is the status name straight from your PSA, in whatever language your PSA is set up in, and Neo can’t translate it there — so if that isn’t a language this channel’s end-users read, switch off Show the ticket status and the card shows the ticket number alone. See live ticket updates in the chat.
Start Iteration Mode From Run Now — and Tell Neo What “Good” Looks Like
Stepping through an agent no longer starts with knowing the right phrase to type at Neo Support. Open Run now on any agent and there’s a second choice next to it: Iteration mode. Pick the ticket and how closely Neo should check with you, and Neo Support opens with the agent already attached — asking one question: what does a good run look like? Describe the outcome you’re expecting, and Neo measures every step against it rather than only asking whether each step looks sensible on its own, calling out the moment a run drifts from what you asked for. If an agent can’t be stepped through, the option stays visible and tells you why instead of leaving you guessing.
Post Notifications Straight to a Teams Channel or Chat
Your workflows and agents can now post to a Microsoft Teams channel or group chat through the Neo app itself, chosen from a simple list in the Notify action — no more emailing a channel’s hidden connector address. Add the Neo AI Agent app to a Team (or a group chat) once and every channel becomes available; you can mix channels, chats, and individual technicians in the same notification. Messages arrive as proper posts from Neo, which also fixes the wrong-sender and occasional duplicate-post problems the old email route could cause. Agents get a matching control: for the Send Teams Message tool you can set who Neo may notify — users and channels/chats each have their own scope (Any, Only specific, or Disabled). If you’re using the email-address workaround today, switch those Notify actions over to the new Teams channels & chats picker. See Post to a Teams channel or chat.
Email Reports: Real Tables and Exact HTML Bodies
Emails your agents send now render Markdown tables as real formatted tables — previously a table in an email body arrived as an unreadable wall of text. And when an agent builds a report in its code sandbox, it can now send the generated HTML file as the email body verbatim (content_type="html" on the sandbox email helpers), so a styled, branded report arrives exactly as generated instead of being retyped or squeezed through the Markdown converter. See Send Email and Send Email to Internal Team.
Script Approval Now Covers Script Runs, Not Just API Calls
If you switched on Require Technician Approval for the permission group that lets an agent run scripts — Datto RMM Jobs, NinjaOne / VSA X / CW Asio Automation, N-Sight Tasks, CW Automate Script Execution — that approval now also gates the agent actually running a script. Previously it covered that RMM’s API calls but not script execution, so an agent could run a script without asking. Nothing to change on your side: agents already set up this way will start requesting approval before scripts run. If you connect several RMMs and any one of them has approval switched on, script runs ask for approval across all of them. See Execute RMM Script.
Chat Agents Can Run Scripts on Any of Your Devices
When a technician asks a chat agent to run a script on a machine, the agent can now target any device in your synced RMM inventory — including your own internal devices — instead of only devices belonging to the company on the ticket the conversation happened to mention. Previously those requests failed with a confusing “device not found”, even though the device was clearly in the inventory. Ticket-triggered and scheduled agents are unchanged and still limited to the ticket’s company. See Execute RMM Script.
Autotask: Choose Which Ticket Updates Reach the End User
If your technicians track all their work as time entries on the ticket, the end-user Teams bot was relaying every customer-facing one into the chat — including the routine ones the customer was never meant to read. You can now narrow it: pick the Autotask Work Types (and, if you use them, Note Types) that count as a message to the customer, and only those relay. The common setup is a dedicated Communication work type your techs apply whenever they contact the customer. Find it under Integrations → Microsoft Teams — End-user Chat Bot. Leaving the pickers empty keeps today’s behaviour, so nothing changes until you choose. See what counts as a client-facing update.
Pay by Direct Debit at Checkout
You can now pay for your Neo subscription by bank Direct Debit as well as by card. When you subscribe, EUR SEPA and USD ACH bank options appear automatically at checkout alongside card. For GBP, tick Pay by Direct Debit on the pricing page before subscribing to set up Bacs Direct Debit. Whichever you choose, your credits, top-ups, and renewals work exactly the same afterwards. See Billing & credits.
Watch an Iteration Session Step by Step
While Neo Support runs one of your agents in iteration mode, the banner above the chat box now opens a live run log — the same detailed timeline you get from Steps on a finished execution, but updating as the run happens. You see every tool call with its full input and output, searchable and filterable, and the step the run is currently parked on is marked Paused so you can read exactly what the agent is waiting on before telling it to continue. The log covers the whole attempt in one view, even after several continues.
Rotate Secrets on Existing Microsoft App Registrations
Agents with Applications: Read/Write can now create replacement client secrets for existing app registrations, not only apps Neo created itself. Every write still requires technician approval, and generated secret values still go directly into a one-time secure link rather than the agent or ticket history. Because this adds the elevated Microsoft Graph Application.ReadWrite.All permission, a customer administrator must re-run Grant access for an already-connected tenant before Neo can manage its existing apps. See M365 agent tools.
Mention Your Agent Under a Teams Channel Post and It Reads the Post
Reply to a Teams channel post with “@YourBot create a ticket with this” and the agent now reads the post you’re replying under — including any screenshot pasted into it — instead of answering that it can’t see any details. Teams only ever hands a bot the message that mentions it, so previously anything posted above was invisible and you had to paste it all in again. This is the case where a form submission, an alert, or a colleague’s write-up lands in a channel and someone wants a ticket out of it. Each thread stays its own conversation, and the agent reads the opening post once, at the start. Because this needs permission to read messages in that team, click Push update on the channel and have a team owner accept the prompt — until then the agent still replies, just without the post. See In a Teams channel thread.
ServiceNow Agents Reach Knowledge Articles, Attachments, SLAs, Approvals and Your Custom Fields
ServiceNow agents could work with a narrower slice of your instance than agents on the other PSAs, so a ticket saying “read through KB0012345” got “I don’t have access to it”, and questions about SLA timers or who still needs to approve a change went unanswered. Four new permission groups — Knowledge Base, Attachments, SLAs and Approvals — close that gap on your agent’s Integrations tab, and your instance’s own custom fields (the u_ columns) now appear in the agent’s view of a ticket and can be set by the Update Ticket Fields action. All four are read-only, deliberately, including under Full Automation: Neo will tell you a change is sitting with a particular approver but won’t approve it for you, and won’t publish knowledge articles. Attachments are listed with name, type and size, and small text files such as .csv and .log can be read — spreadsheets, .msg files and other binaries are named but not opened. If you keep a separate knowledge base per client, note that ServiceNow applies no company boundary to articles: Neo searches the one belonging to the ticket’s company, and the connected account already sees them all. See PSA API.
The Teams Bot Interrupts Less, and Starting Fresh Is Quick
When a Teams conversation came back after a break, the bot offered a Start fresh card — in practice most mornings, for most technicians — and tapping it then left them watching an empty chat for anywhere from thirty seconds to a couple of minutes with no sign anything was happening. It now offers a fresh start only for genuinely long conversations, so an ordinary chat picked up the next day simply carries on, and when the card does appear the reply comes back promptly. Nothing to configure — every Teams conversation gets this automatically. See Sessions & billing.
Searching Your Tickets and Documentation Is Now Much Faster
When an agent searches your past tickets or your documentation, the step that sorts the matches into what’s actually relevant used to take around twenty seconds. It now takes a few. Chats and automations that look things up feel noticeably quicker, and the results are cleaner too — noticeably less loosely-related material makes it through, so the agent works from what genuinely relates to the ticket in front of it. Nothing to configure; every agent gets this automatically.
Turn an Intent’s Intake into a Form
Any intent can now collect its details as a form instead of a conversation. Your end-user bot shows the employee a single card — dropdowns, date pickers, yes/no toggles, each marked required or optional — and they fill it in one go rather than answering a question at a time. The answers come back in the shape you asked for, so requests arrive complete and nobody has to chase a start date afterwards. Build it under Data → Intents: add your questions, pick a type for each, and reorder them however you like. On a ticket-triggered agent, where there’s nowhere to draw a form, the same questions arrive as a numbered list in the agent’s reply — so one intent still covers both chat and email. See Intent Forms.
Iterate on an Agent with Neo, Step by Step
Ask Neo Support to run one of your agents in iteration mode and it becomes a supervised test run: the agent freezes after every action it takes, and Neo inspects each result before letting it continue — narrating what happened in plain language right in your chat. If a step looks wrong, tell Neo what you wanted instead; it updates the agent’s instructions and restarts the run from the top so you can watch the fix work. A banner above the chat box shows while an iteration session is running, and each checkpoint appears as a compact marker in the thread. Just tell Neo Support something like “run my triage agent on ticket 12345 and check each step”.
End-User Teams Bot: A Month With No Usage Is Now Free
The branded end-user Teams bot is billed per active user, with a $100 monthly minimum. That minimum now applies only in months where at least one of your clients’ employees actually used the bot — a month with zero active users costs nothing, rather than the $100 floor. Your dashboard’s projected charge reflects this too, showing $0 for a dormant month. See end-user bot pricing.
Query Microsoft Defender Through Your Agents
Agents with the Security Operations M365 permission category can now actually reach the Microsoft security APIs behind it — Defender alerts and incidents, Secure Score, and Entra identity-protection risk data. Previously these calls were blocked by missing permissions on Neo’s Microsoft app, so a phishing-triage agent couldn’t pull the Defender alert for a reported email. If a tenant was connected via direct consent, re-run the Grant access flow for that company to pick up the new permissions; GDAP-connected tenants can enable them from their permission profile. See M365 permissions.
Resolve Approval Queues in Bulk
The Approvals page now lets you select multiple pending requests—or every pending request currently loaded—and approve or reject them together. Before anything runs, Neo shows the number of selected requests and a preview; you can also apply one optional note to every decision. If another technician already handled part of the batch or an item fails, Neo reports the exact outcome and keeps failed requests selected for an easy retry. See Technician-in-the-Loop.
Block Repeat Spam Senders in HaloPSA
Agents can now manage HaloPSA’s inbound email rules, so a spam-cleanup agent can block a repeat sender at source instead of closing the same spam ticket every week — HaloPSA stops raising tickets from that address until the rule is removed. That also stops those repeat closures consuming credits. HaloPSA’s own “treat as spam” option can’t be reached from quick actions or workflows, so this was previously impossible to automate. It takes two switches: the new Email Rules permission group on your agent, plus the optional admin scope on your HaloPSA API application — see Letting Neo Manage Email Rules.
HaloPSA Dispatch Books in the Technician’s Local Time
When a dispatch agent schedules an appointment on HaloPSA, it now places it in the technician’s own timezone even when the technician’s agent record has no Timezone set — Neo falls back to the technician’s Workday timezone, then your tenant’s default. Previously a technician with no agent-level timezone was treated as UTC, so appointments could land hours outside their real working hours (e.g. an 8:00 AM booking showing up at 4:00 AM). For the most accurate scheduling, set a Timezone on the technician’s agent record or their Workday. See Get Technician Context.
New Trigger: Technician Added a Note
Triggered agents can now fire specifically when a human technician adds a note to a ticket — internal or customer-visible. Until now you had to choose between Technician replied to customer (which misses internal notes) and Note added (which also fires on customer notes and on system noise like Autotask workflow rule notes and RMM alerts, burning credits on runs you never wanted). The new Technician added a note trigger is the middle ground for “react when a tech documents work” automations — automatic time entry being the classic example. Works across ConnectWise, Autotask, HaloPSA, and ServiceNow. See Triggered workflows.
Filter Autotask Agents by Company Territory
If you group your client companies into Territories in Autotask — by region, by the team that owns them, or however you organize accounts — you can now scope an agent to act only on tickets from a specific territory. Add a Company Territory condition to an agent’s trigger filter and pick the territory from the list, just as ConnectWise agents already could. It’s handy for rolling Neo out one territory at a time, or pointing different territories at differently-tuned agents.
Every Chat Agent Now Shows Its ID
Each chat agent has an ID, but the only way to find it was to open the agent and read it out of the browser’s address bar. It’s now shown on the Chat page — in a sortable ID column on the agents list, and under the agent’s name while you’re chatting with it — with a copy button in both places. Handy when you raise an issue with Neo Support about a specific agent, since the ID identifies it exactly even if two agents share a name.
Faster ConnectWise Automate Scripts
When Neo runs a script through ConnectWise Automate, it now submits it at the highest priority by default, so urgent fixes run right away instead of waiting behind lower-priority scheduled work. If you’d rather a specific script yield to your other Automate jobs, tell the agent in its custom instructions to run it at a lower priority.
Exclude Closed Companies from Neo (ConnectWise)
Company filters can now include or exclude companies by their ConnectWise status name. Statuses like Account Closed, Liquidated, or Offboarding still count as active in ConnectWise, so they used to slip past the Active-only filter and clutter your company directory. Add a Company status filter under your ConnectWise integration’s Advanced settings, pick the statuses you don’t service, and Neo keeps those companies out. The status names come straight from your own ConnectWise data. See Company filters.
Disconnect GDAP
You can now disconnect your GDAP connection from Integrations → GDAP — handy for switching the account Neo connected with, or turning GDAP off entirely. Customers you’ve already connected stay connected, since that access lives in each customer tenant on its own; to remove those too, disconnect each company from the Companies page first. See GDAP.
Memory Management Is Now Admin-Only
Adding, editing, pinning, or deleting a memory now requires an admin on your team — including memories created through a chat agent, which now saves one only when the person chatting is an admin. Everyone’s agents still recall memories exactly as before; this just keeps who curates them in your admins’ hands, since a memory shapes how every agent behaves across all your clients. See Memory.
External API Requests Support URL Path Variables
When you connect an agent to an outside API, you can now put a {placeholder} straight in the endpoint URL — like .../device/{serialNumber} — and Neo fills in the value on each call. Many REST APIs (Datto, VirusTotal, Pax8, and countless others) expect the identifier in the URL path rather than as a query parameter, and those endpoints used to fail. Add as many placeholders as you need — Neo detects each one and asks the agent for its value at run time. See External API Request.
Phone Agent Tickets Land on the Right Company
The Phone Agent now matches the company name a caller gives against your PSA’s company list before creating the ticket — instead of writing the name into the ticket as text and falling back to your Default Company. Slight mishearings (“Digicore technology”) resolve to the real company record (“DigaCore Technology Consulting”), and callers who spell the name — “V-E-A-C-T”, “V as in Victor”, or the German spelling alphabet — are understood letter by letter. When the match isn’t certain, the agent reads back the closest companies and asks the caller to confirm rather than guessing. In our replay of six months of real calls, this attached the correct company on the caller’s first attempt in 86% of calls.
Phone Agent Hears Names and Numbers More Accurately
We upgraded the Phone Agent’s speech recognition engine. Callers spelling out names, company names, and phone numbers — letter by letter or digit by digit — are now captured far more reliably, especially on non-English calls (German, French, Dutch, Spanish). In our tests on real calls, phone numbers that previously took multiple attempts now come through correctly on the first try, so callers spend less time repeating themselves and tickets get the right contact details.
New Pilot Plan — Start with Neo for $500/month
There’s a new entry-level plan: Pilot, at $500/month for 2,500 credits — around 750 tickets automated. It includes the same reactive and proactive agents and PSA integrations as every other plan; the dedicated Microsoft Teams support channel with the Neo team starts on the Starter plan (Pilot uses email support). Auto top-up works on Pilot too, and if your top-ups ever add up to more than Starter would cost, we automatically move you to Starter and fold the packs in — so growing out of Pilot never costs extra. See Billing & credits.
One Confirmation, Not Two, for Agent Edits in Chat
When your Neo Support agent proposes an agent change in chat — a Train Neo instruction tweak, a toolbox setting, a trigger filter — it already walks you through exactly what will change and waits for your go-ahead. Previously it then also raised a separate approval card asking the same question again. Your in-conversation confirmation is now the approval: say yes and the edit applies immediately. Destructive operations — deleting an agent, tenant-wide settings, disconnecting an integration, memory changes — still show the approval card. And where the card does appear, it’s had a facelift: it now matches the clean look of the rest of the conversation.
Train Neo Is Now a Conversation
Clicking Train on a run no longer opens a form with a progress bar — it opens a conversation with your Neo Support agent, with that run’s details attached to the message box as a compact training card. The box itself asks for your feedback, so it’s immediately clear where to type — no scrolling through a pre-filled template. Describe what should have happened, and Neo reads the run’s full trace, the configuration it ran under, and the ticket context, then shows you the exact instruction change it wants to make and why — before touching anything. You confirm, it applies just that change, leaving the rest of your instructions untouched. This also fixes the “stuck at 90%” timeouts on large agents, and you can push back or refine the wording mid-conversation. See Train Neo.
End-User Bot Now Supports Clients with Multiple Sites
Many of your clients run several offices or branch companies in your PSA while all their staff share one Microsoft 365 tenant. Your white-label support bot previously required that tenant to be linked to exactly one company — now you can link it to as many as you need. Neo works out which company each person belongs to from their verified email address in your PSA contacts, so a branch-office employee sees their own tickets and files new ones against the right company automatically. See what end users can access.
Keep Neo Focused on Your Real Customers with Company Filters
Your PSA usually holds far more companies than you actively service — vendors, prospects, inactive accounts, and records mirrored in from other tools. Neo now keeps its company directory to active customers by default, instead of importing everything. On your PSA integration’s Advanced settings you’ll find a new Company filters section to fine-tune this by status and account type — using your PSA’s own company types. Adding companies takes effect immediately; when a change would remove companies, Neo shows you exactly which ones and asks you to confirm first. See Company filters.
See When You’re About to Run Out of Credits
The dashboard now warns you before your credits run out, not just after. When your usage this month is trending over your monthly credits, Neo shows a heads-up — and as you get close it tells you the date you’re on track to hit the limit (e.g. “Credits run out around the 14th”), up to five days ahead. If you have auto top-up on, it lets you know top-ups are about to begin instead of pausing. So you — or your account manager — can act before automations pause, rather than finding out when they do. See Billing & credits.
Agents Self-Correct on PSA Field Errors
When an agent tries to write to your PSA using a field that doesn’t belong on that record — a typo, or a field borrowed from a different record type — the PSA usually rejects it with a cryptic message, and the agent could waste attempts guessing. Neo now rewrites that rejection to name the offending field and, for Autotask, lists the record’s actual valid fields, so the agent fixes it on the next try instead of looping. It runs automatically on every PSA write, across ConnectWise, Autotask, and HaloPSA.
Ask the Neo Support Bot to Curate What Your Agents Know
Neo builds up memories — durable facts and playbooks about your MSP and your clients that it recalls into every agent run. You can now ask your Neo Support bot, in Teams or the dashboard, to see, add, correct, pin, or remove them in plain language: “why does Neo keep saying our VPN is Cisco?” and it finds the wrong fact and replaces it, or “always tell agents to use the Acme after-hours line” to add one. Every change asks a technician to approve it first, so nothing an agent “knows” changes without a human clicking approve. The same memory endpoints are available on the public API under /public-api/memories.
End-User Chat Links Tickets to Your Client Portal
When your white-label support bot mentions a ticket to one of your clients’ employees — listing their open tickets, confirming one it just filed, or giving a status update — it can show the ticket number as a clickable link that opens the ticket in your PSA’s client portal, so they can follow along without asking. For Autotask, paste your Client Portal address once under Integrations → Microsoft Teams — End-user Chat Bot → Ticket links in the chat (you’ll find it in Autotask under Admin → Client Portal Global Settings) and every ticket the bot mentions links straight to your portal. Until it’s set — and wherever a client-facing ticket link isn’t available — the bot simply shows the ticket number on its own, never an internal link your client can’t open.
Customize the Email Subject on Internal Notifications
When Neo emails your internal team from a workflow, you can now control the subject line instead of the fixed “Notification from a workflow…” text every message carried. Turn on Customize email subject on the Notify Internal Team action and edit the subject using variables that fill in per ticket — workflow name, ticket number, ticket title, and company. Keep it off for the standard subject, or turn on Suppress email subject to send no subject line at all. See Notify internal team.

Older updates

Apr - Jun 2026

Everything shipped in the second quarter of 2026.

Jan - Mar 2026

Everything shipped in the first quarter of 2026.