Current Releases

0.83.0

New Features

  • Computer lifecycle date columns — The Computers report gains a Last Seen column (most recent provider-agent connect/disconnect, shown by default) and an Onboarded Date column (available to add), both sortable and included in Excel exports.
  • Maintenance BCC editing — A new Maintenance BCC field on the Computer Overview tab shows who is BCC’d on a computer’s maintenance emails, and users with the computers:manage_primary_person permission can add or remove people inline without reopening onboarding.
  • Redesigned computer terminal — The computer terminal is rebuilt with a VS Code-style layout, fullscreen toggle, status bar, editor settings, output search, and error navigation, backed by a WebGL renderer for smoother rendering.
  • Separate cross-tenant exclusion toggles — The single "Exclude from cross-tenant deployments and schedules" tenant preference is split into two independent toggles, and existing opt-outs are automatically migrated to apply to both.

Bug Fixes

  • Ad-hoc ("Run Now") maintenance sessions now correctly take priority over scheduled sessions when resuming after a device reboots and reconnects.
  • Clearing the search box in a combobox with a minimum search length now resets filtered results; previously erasing the query was ignored and left stale results, such as in the Schedules maintenance-item picker.
  • Ephemeral agent sessions now follow a deterministic lifecycle, eliminating orphaned Immybot.Agent.Ephemeral.exe processes that could accumulate on a machine.
  • Fixed a memory leak in the agent where PowerShell script output was buffered without bound; per-execution output buffering is now capped and applies backpressure instead of accumulating unbounded output.
  • In Quick Deploy, the Remember this? option that creates a saved deployment is now hidden from users without a deployments:manage_* permission.
  • Maintenance tasks no longer fail or behave unexpectedly when a deployment holds stored values for parameters that were later removed from the task; these orphaned values are now filtered out before execution.
  • New scripts in the script editor now auto-select the current user’s tenant so F5 runs immediately without a 500 error, the tenant field is no longer clearable, and run errors no longer show a duplicate global exception box.
  • Newly created tenants now show all permission-gated tabs immediately on the tenant detail page, instead of showing only the Azure tab until a manual reload.
  • Opening the Search view in the script editor now returns global script results on first open instead of only local results.
  • Saving an onboarding uninstall-only deployment no longer triggers a false Parameter Errors popup.
  • Selecting a task parameter in the compact list on the Edit Task page no longer causes the delete (trash) icon to jump out of position in production builds.
  • SMTP delivery log entries now link to the most specific session page for the email target (Person, Computer, or Tenant), and only when the viewer has permission to access that resource.
  • Support request submissions now report real success or failure instead of always showing "submitted successfully," surface non-fatal issues as warnings, and auto-save the form draft so a failed request can be retried without retyping.
  • Switching items in Quick Deploy now clears the previous item’s task parameter values and mode immediately, so stale parameters can’t carry over into the new deployment.
  • The billing page’s Monthly Maintenance Slots card now shows the correct finite plan limit for addon-only usage features instead of "Unlimited."
  • The Edit, Remove, and Duplicate buttons on the Deployment List are now hidden from users who lack a deployments:manage_* permission, preventing backend 403 errors.
  • The login page no longer renders an unwanted vertical scrollbar; the login card now fills and centers within the visible area.
  • The Refresh and Delete buttons on the OAuth Access Tokens page now render correctly; a runtime error had been aborting the row detail panel, making tokens impossible to delete from the UI.
  • The Schedule Limit to specific maintenance item picker now shows the correct tasks for the schedule’s target — Computer/Person tasks for computer-targeted schedules and Tenant tasks for tenant-targeted schedules.
  • The session table’s Triggered By column now shows the user’s email for accounts with no first or last name (e.g. PAT service accounts) instead of falling back to "System / Automatic Onboarding."
  • The Software Details page now preserves and updates the selected icon correctly.
  • The support-technician banner is restored — IsSupportTechnician had been dropped from the /auth response since v0.78.0, silently hiding the banner for all support technicians.
  • When a test script fails, the maintenance action now reads "by running the configured repair strategy," and Software Details shows an inline note clarifying that the software’s repair strategy (not always a full reinstall) is what runs.
  • With Mask PII Data enabled, PII is now masked across many more pages and components — including tenant names, Azure IDs, integration names, user details, computer names, and serial numbers — and is no longer leaked through tooltip attributes.

Improvements

  • The session filter UI on the session list and detail pages is redesigned: a compact Filters: chip opens a popover with a labeled dropdown per filter, and changes are now staged and committed together with a single grid refresh.
  • The session status filter cards on the Maintenance Sessions page have been restyled to match the updated design, with the same functionality.

0.82.0

Released June 24, 2026

New Features

  • Script Editor Workspace — The script editor is now a full VS Code-style workspace: a file Explorer for navigating all scripts, a native diff view for reviewing changes, a timeline pane showing script revision history, a "Copy Link" command, permission-aware action gating (edit, duplicate, etc.), and preserved debugger output in the workspace’s Output panel.
  • Personal Access Tokens — Users can now create long-lived API tokens on their /profile page for scripted access to the ImmyBot REST API. Tokens carry the creating user’s permissions, support an optional expiration date and a descriptive label, and the plaintext value is shown exactly once at creation. Up to 20 active tokens per user are allowed. A new /settings/personal-access-tokens admin page (gated by the personal-access-tokens:revoke_others permission) lets eligible admins view and revoke tokens across their tenant scope. MSP Admin and System Admin built-in roles receive the relevant permissions automatically on upgrade.
  • Immy 101 Onboarding Page — A new "Immy 101" page walks new users through Quick Deploy, sessions, connecting tools, and other key workflows with illustrated tutorial cards and an interactive learning drawer. Users, tenants, and app admins can independently hide or show the First Steps and Immy 101 nav items; app-level defaults are seeded on first run and updates to those toggles take effect in real time without a page refresh.
  • Computer Create Audit Logging — The audit log now records when a new computer is created through agent identification, alongside the existing delete events. Each entry includes the computer name, tenant, and the source (e.g. "Agent Identification Resolver", "Replace Computer", or "Keep Both Computers").
  • **Dashboard v1 (In Progress) ** — A new Dashboard landing page highlights overall ImmyBot health and integration status. The Integrations page filters are simplified, disabled integrations are hidden by default, and unhealthy integrations are now marked with a red badge. Deleting an integration has moved to its Setup tab.
  • Sticky Header and Native Scrolling on Tables — Large tables now keep their column headers, header toolbar, and pager visible while scrolling, so you no longer lose your bearings on long lists.
  • Email Delivery Diagnostics — ImmyBot now records every SMTP send attempt for test emails and maintenance session emails, with masked recipient addresses and sanitized error messages. The SMTP configuration form includes a new Email Logs grid for diagnosing delivery problems, and maintenance session logs display privacy-safe SMTP status messages. Delivery logs are automatically purged after 30 days.
  • Filter and Sort Agent Status Columns — The Computer Agents / Agent Status grid now supports Connected, Disconnected, and Missing header filters and full sorting on each provider column, applied against the complete result set instead of just the visible page.
  • Installation Disclosure Prompt — EXE agent installers now show a disclosure prompt before installation that clearly states the install enables remote management and control by the deploying organization, along with the ImmyBot backend’s address.
  • Preferences Tab Deep Links — The Preferences page now reflects the active System / Tenant / User tab in the URL as /settings/preferences/<tab>, so tabs are bookmarkable and shareable. Deep links to a tab the user cannot view are automatically redirected to the most appropriate accessible tab instead of showing a blank page.
  • Tag-Based Access Mode — Authorization Management for Software, Maintenance Tasks, Scripts, Media, and Tags now offers a "Tag-Based" access mode. Select one or more tenant tags and any tenant belonging to those tags automatically receives access — new tenants inherit access as soon as they’re tagged, with no manual update required.
  • Improved Tooltips — Tooltips on icon-buttons throughout the app are now read aloud by screen readers (no hover required), tooltip arrows track the underlying element correctly when the tooltip is flipped or shifted to fit the viewport, and tooltips no longer block clicks on the element beneath them.
  • Unified Time Range Picker — A new time range picker replaces the old dropdown filter on data grids (Sessions, Audits, etc.). It offers relative presets (Last 1/6/24 hours, 7/30 days, 3/6/12 months), calendar presets (This month, Last month, Year to date), and a custom absolute range with minute precision. ◀ / ▶ step buttons page backward and forward through time windows directly from the chip. When Sessions is filtered to active statuses (Created, Running, Pending), the time filter is automatically bypassed so active sessions are never hidden.
  • Computer Details Agents Tab Redesign — Integration agents now appear in a compact, scannable list with inline health icons (Healthy / Degraded / Unhealthy / Disabled), an overflow menu for less-common actions, smooth expand/collapse for identification logs and update forms, a hero-style row for ephemeral agents with readable stats (created, last activity, scripts processed, data transferred), an illustrated empty state, and loading placeholders while identification logs load.

Bug Fixes

  • Fixed corrupted -infinity timestamps that could appear on certain audit dates for entities created through bulk-insert paths. Affected rows are repaired by a migration that runs automatically on upgrade.
  • Fixed Wi-Fi SSIDs containing / (or other special characters such as ?, #, %, &, ") producing a corrupt provisioning package. Such SSIDs are now safely encoded before being written into the configuration.
  • Fixed deny role assignments for feature-level permissions — including MSP-scoped, tenant-scoped, and tag-scoped denies — being silently ignored. Deny overrides now correctly revoke access for any scoped deny claim. Resource-based permissions (computers, deployments, etc.) are unaffected.
  • Fixed a performance regression on the Tenant Sessions page; the page now loads noticeably faster on tenants with many sessions.
  • Fixed text and banner colors on the Dashboard page. Headings and body copy now use the default text color, and the translation-note banner uses a clearer background.
  • Fixed the Computer Details Agents tab stretching too wide on large screens — it’s now capped to a comfortable width, and the agent health legend wraps cleanly on narrow layouts instead of overflowing.
  • Fixed scheduled maintenance with Cloud Tag or Cloud Provider Client Group target types failing to create sessions due to a routing error. These target types now correctly run through the tenant scheduling path.
  • Fixed the loading screen disappearing before the application finished initializing, briefly exposing a blank or partial UI. The splash now stays visible through initialization, and the preload logo includes a subtle blinking cursor animation.
  • Fixed preflight script enablement requiring the broad scripts:manage permission. A new scripts:manage_preflight_enablement permission now controls the toggle for both global and local preflight scripts, with a clarifying note that the setting is local and does not modify the script definition.
  • Fixed the "Parameters" panel header in the maintenance item configuration form sticking to the top of the page while scrolling.
  • Fixed a race during fresh agent installs where the first identification attempt would reliably fail, causing the identification window to expire and the agent to retry after a ~16-second delay. Fresh installs now identify on the first attempt.
  • Fixed a single failing Azure tenant aborting the background Azure data sync for all remaining tenants. Each tenant is now processed independently, and tenant-specific errors are visible in monitoring instead of being lost.
  • Fixed the Compliance Tool not updating the page URL when maintenance items were added through the search selector, preventing the page state from being copied or shared. Identifiers containing dashes (e.g. Ninite 7-zip) now also round-trip cleanly from a reloaded URL.
  • Fixed the Computer List bulk-action panel and checkboxes remaining stuck after re-identifying failed agents. Selection now clears immediately once the retry completes, and the "Retry" button is protected against double-clicks with an in-flight spinner.
  • Fixed sticky table headers and pagers showing solid background bands over the dark theme’s gradient. Sticky bands are now transparent at rest and switch to a matching background only when actually pinned. The light theme uses a subtle elevation tint at rest.
  • Fixed individual-scoped deployments targeting a deleted computer becoming unmanageable (edit and delete returned "not found" errors). Such deployments can now be edited or deleted even when the target computer has been removed.
  • Fixed branded session emails leaking the previous brand name as logo alt text when no custom alt was configured. The alt now defaults to "Company Logo", and special characters in custom alt text are properly escaped.
  • Fixed a brief visual flicker where breadcrumbs would disappear while navigating between pages.
  • Fixed the Open Debugger button on the script and log panel blending into the background. The button is now a proper warning-style control with only the bug icon. Primary log entries also gain a "Primary Script" heading with a help icon explaining what a primary script is, and a neutral background that reduces visual noise.
  • Fixed forced reboots (Reboot Preference set to Force, or If Necessary with force-on-normal) not logging the machine’s pending-reboot state when business hours suppressed the reboot, leaving operators with no visibility into the machine’s reboot state.
  • Fixed maintenance sessions containing any PartialPassed stage incorrectly remaining in Passed status after cleanup. The session is now correctly marked as PartialPassed.
  • Fixed maintenance task File-type parameters resolving to incorrect paths when the cache source path was empty. ImmyBot now always falls back to the base temp path, zip extraction uses MIME type rather than file extension (so files like drivers.package are correctly extracted), extraction is skipped when the download fails, and parameters that reference a deleted media record now resolve to nothing instead of a raw placeholder.
  • Fixed migrating a local Software with an icon to global failing with a database error. The icon image is now copied to global storage as part of the migration; if the local icon reference is orphaned, the icon link is cleared instead of failing the whole migration.
  • Fixed the sidebar collapse toggle losing its right-side padding so the hamburger icon overflowed its container.
  • Fixed calls to the provisioning package URI endpoint failing when the ppkgOptions body was omitted. The field is now optional, and SkipOobe defaults to false.
  • Fixed the "Onboarding" indicator in sessions appearing bold and oversized. It’s now displayed as a compact, subdued secondary badge (laptop icon + "Onboarding"), shown only once under the Session / ID column in the sessions list, and moved to its own row beneath the session title on the session details page.
  • Fixed saving a software with itself listed as a prerequisite (either as the condition or the action target) being allowed via direct API calls. The server now rejects self-referential prerequisites; the UI already blocked this path.
  • Fixed tables using the time-range picker (Sessions, Tenant Actions) issuing two requests on every mount — first showing a partial row set and then reloading with the full range. Only a single request is now issued. Active-status session lists no longer fire a redundant reload either.

Improvements

  • Initial application load is noticeably faster. The Script Editor and its underlying code-editing tooling are now loaded only when you actually open an editor, shrinking the upfront page download.
  • Tables wider than the page now have a sticky horizontal scrollbar that stays visible at the bottom of the viewport, so you can scroll wide tables without jumping to the bottom of the grid.

0.81.0

Released June 3, 2026

New Features

  • Billing page overhaul — A redesigned Billing page lets operators upgrade or downgrade between Immy Starter and Immy Standard, switch monthly/annual cadence, adjust usage limits (maintenance targets, concurrent sessions, concurrent remote-control sessions) via slide-out drawers, and view masked payment cards plus the full invoice history.
  • In-page documentation — Collapsible How to use this page help panels now appear on 40+ pages across Computers, Deployments, Maintenance, Software, Schedules, Tenants, Integrations, RBAC, and Settings. Each panel is collapsed by default and remembers its open/closed state per browser.
  • Post-install script ordering — Post-install scripts now run after the Verify phase (instead of before it) and have access to two new variables, $InstallSucceeded and $TestSucceeded, so scripts can branch on the outcome of the install and test phases.
  • Script editor execution auditing — Script runs triggered from the ImmyBot script editor are now recorded in the audit log with target tenant, target computer, and the full script content captured at execution time. The audit expander renders Run-type entries in a Monaco diff viewer.
  • Skip OOBE for PPKG/ISO installers — Installer generation now supports an optional Skip OOBE toggle for Provisioning Packages and ISO installers.
  • Structured session log events — Session logs now capture and replay structured display events (output, debug, info, warning, verbose, progress, error, exception) produced during metascript execution. The Action Logs panel, Progress Log, and Script Editor output now render with proper stream colors and ANSI formatting in both live and replayed sessions.
  • Streamlined agent installer drawer — clicking the ImmyBot Agent Download sidebar card now opens a compact single-screen drawer (default for all users) with a 5-card installer picker: PPKG, ISO, EXE, PowerShell, and Sandbox.Per-user preference — a new toggle in Preferences → User → Agent Installer controls whether the sidebar opens the streamlined picker or the original guided multi-step wizard. The preference is also togglable inline via escape-hatch links in both drawers ("I know what I’m doing / Advanced setup" and "Help me choose").

Bug Fixes

  • Editing an already-onboarded computer’s onboarding form now prompts for confirmation before resetting the onboarding status.
  • RBAC roles with OwnerScope=Allow that explicitly deny the user’s own tenant no longer show an empty tenant dropdown when downloading an agent installer. Resources owned by sub-tenants of a denied MSP and global resources (no tenant) are also filtered correctly when multiple tenants are denied.
  • The tag selector in the Target Selector now only shows tags accessible to the chosen target tenant — owned by it, explicitly shared with it, or visible to all tenants. Cross-tenant target types (Tag, CloudTag) preserve their prior behavior.
  • Dynamic maintenance item column headers on the Dashboard page’s audit grid no longer render blank.
  • Selecting a deployment in a grouped deployment list no longer resets the grid or collapses expanded groups.
  • The ConnectWise Control extension now ignores Host-triggered events and correctly filters Guest vs Host connections, with improved ScreenConnect version compatibility.
  • Duplicating a maintenance task now respects RBAC permissions.
  • Duplicate horizontal scrollbars no longer appear on tables throughout the app. The fix resolves a long-standing CSS overflow regression where DevExtreme’s custom scrollbar layered on top of a native browser scrollbar.
  • User-delegated bearer tokens (e.g. tokens obtained via az CLI with an scp claim) are now restricted to support technicians; other users receive 403 Forbidden with auth code BearerTokenAccessRestricted. User-delegated tokens are blocked during first-user/instance-setup flows.
  • The Additional Users picker in the agent installer flow is now scoped to the selected tenant. Changing the tenant clears selected persons, and the backend validates that all onboarding persons belong to the target tenant, returning 400 Bad Request for cross-tenant submissions.
  • New instances where Immy Support Access has never been granted now show Access not granted on the Preferences page instead of the broken Access revoked on n/a by () message.
  • Clicking the Download Agent Installer sidebar item now opens the installer wizard directly on the download step, skipping the introductory screen. The intro is still shown for first-time users from Getting Started and the account dropdown.
  • HP machines (and other manufacturers that issue duplicate serial numbers) are no longer incorrectly merged into the same computer record. ImmyBot now compares hostnames before applying the trusted-manufacturer fast path — if hostnames differ, full identification runs and each physical machine gets its own device record.
  • The Application Locks page now supports column sorting via header clicks and a page size selector (5/10/20/50 rows). The Caller Info column displays correct data again, the defunct Caller Id column is removed, and the unreachable Terminate button has been removed in favor of Request Cancellation.
  • Breadcrumbs no longer carry stale entries across cross-route navigation. They are preserved when navigating between sub-sections of the same named route, such as tabs on Computer Details and Tenant Details.
  • Renaming a tenant now syncs to integrations that don’t support listing clients (e.g. ImmyBot Agent), eliminating the stale-name mismatch previously visible in the UI.
  • Typography styling has been updated across the application for consistency.
  • Zip extraction on non-English (non-ASCII locale) endpoints no longer garbles filenames. Expand-ZipFile.ps1 now uses explicit UTF-8 via ZipFile.ExtractToDirectory, and -LiteralPath prevents wildcard expansion in extraction paths.
  • PPKG admin usernames are now validated (1–20 characters, no leading period, no reserved characters such as / \ [ ] : ; | = , + * ? < > " @ &), both username and password are required when admin account setup is enabled, and special XML characters in usernames, command scripts, or package names no longer corrupt the generated PPKG XML.
  • Async-search dropdowns (Computers, People, Tags, Scripts, Software, Tenants, Users, Azure Groups, Maintenance Tasks) now show Start typing to search... before any input, instead of the misleading No results found.
  • Deployments using uninstall-only software now default the desired state to Uninstalled instead of being left undefined.
  • Branded email headings (h1, h2, h3) now use TextColor instead of BackgroundColor, restoring readable heading colors that were previously invisible when background and foreground tones were similar.
  • The Impersonate button on the RBAC User Details page now works again.
  • The maintenance task parameter editor now uses flexbox for the drag-to-reorder handle (fixing alignment across screen sizes), tightens select parameter option-tag styling, and truncates the parameter name and data type cleanly in their own elements.
  • HaloPSA /api/Item, /api/RecurringInvoice, and /api/ClientContract are now paginated, preventing memory exhaustion on large HaloPSA instances. Recurring invoice lines are also deduplicated by item ID (ClientGroupId) rather than invoice line row ID, so the same item across multiple recurring invoices correctly collapses to one entry.
  • The Link unmatched clients and Bulk sync confirmations on the Provider Link Details page now clearly state that only the read-only Get-WindowsDeviceIdentifier.ps1 runs — no software is installed and no deployments are triggered. The banner is rendered as a primary informational ImmyAlert instead of a red danger icon.
  • Maintenance sessions on orphaned computers (no script-capable agents) now fail immediately with No Agent available. This computer is orphaned... instead of passing through early guards and consuming a license. When the session’s offline behavior is Apply on Connect, the session moves to PendingConnectivity and resumes automatically when an agent is re-associated.
  • Config task file download failures now correctly fail the maintenance session with a clear reason. Previously the failure was silently ignored, allowing subsequent install/enforce phases to run without required files and surface as misleading errors (e.g. MSI 1619).
  • Piping Invoke-ImmyCommand output to Select-Object -First 1 (or any cmdlet that stops the pipeline early) no longer silently drops the captured result in metascripts. This was a shipped regression from the 0.76.2 → 0.77.0 window.
  • The PageHeader end-actions row now wraps to its own line when the primary action group is too wide, keeping the Delete button visible on small screens. Wrapped action buttons keep their natural widths, More Actions and the primary action stay side by side, and More Actions now sits to the right of the primary action.
  • The Enable Non-Essential Device Inventorying preference is no longer hidden behind the Schedules feature gate and now appears for all users on instances where the preference exists.
  • Bulk-removing groups from a user no longer returns 400 Bad Request — the user group assignments grid now sends groupId as the key instead of [object Object]. The Date Assigned column also sorts and filters correctly (it now points at addedDate rather than a non-existent createdDate).
  • The Access Requests link in the header now navigates to /settings/rbac/users (which shows the access request list) instead of /settings/rbac/users/new.
  • The Script Editor now ships the PSScriptAnalyzer.psd1 manifest and compatibility_profiles/ alongside the root DLLs, fixing silent script-analysis failures at Script Editor Services startup.
  • Real-time audit log streaming and several cross-provider link actions (disable/enable linking, delete/create linked references, sync/fetch clients) now work for filtered provider links (e.g. soft-deleted or unhealthy integrations).
  • Maintenance task editing now allows disabling individual Get, Test, and Set methods in both combined-script and param-block modes via a unified checkbox row. New tasks default all three methods to enabled, mode switches preserve each mode’s script selections and enabled flags independently, Update and go back correctly navigates on edits (not just creation), and stale state when re-opening a new-task form after editing has been cleared.

Improvements

  • The Computer Details page now wraps the Quick Deploy and Detected Software sections in titled panel cards with a subtle background, replacing the hard-coded border separator beneath Quick Deploy.
  • Enabling Mask PII data in Preferences now masks significantly more identifying data throughout the app — computer names, tenant names, person names and emails, audit usernames (created/updated by), external IPs, Azure domain names, and serial numbers. No visible change when PII mode is off.
  • Status banners for restarting, updating, and update failed now appear immediately for all connected users the moment the state changes.

0.80.0

Released 05/06/2026

New Features

  • Created By filter for maintenance tasks — Local maintenance tasks now show who created and who last updated each task, and the list can be filtered and searched by those columns.
  • First Steps onboarding page — A new First Steps page walks new users through connecting their first machine. The wizard for setting up a first computer now lives in a quick slide-out panel you can also launch from the account menu or the Immy Agent download entry in the sidebar.
  • Halo PSA Assets — The Halo PSA integration now supports syncing computer details back to assets in Halo PSA. You can configure which assets are considered for syncing, which fields should be used to match an immy computer to a Halo asset, and which fields you want synced back into Halo assets.
  • MFA enforcement — ImmyBot now enforces the first user signing into a new instance must authenticate with MFA. If desired, support can set a flag to require MFA for every login.
  • Orphaned Computers tab — The Computers page has a new Orphaned tab for computers that no longer have an active, script-capable agent. The Active tab now hides these so the list stays focused on manageable devices. The Orphaned tab supports batch actions and updates automatically as agents come and go.
  • Updated dark mode theme — The dark mode theme has been revamped and both the light and dark mode themes have been improved in several areas.

Bug Fixes

  • Agents on machines with a damaged WMI service no longer fail while detecting whether the machine is a domain controller — they now proceed normally.
  • Bulk-deleting multiple role assignments for the same user or group no longer returns a 403 Forbidden. You can now remove all role assignments for a user in a single operation.
  • Setting or clearing maintenance mode through the ConnectWise Automate integration no longer fails.
  • Cron schedule descriptions now correctly include the day number (e.g. 1st, 2nd, 3rd) instead of showing only the suffix.
  • Dynamic version scripts in the Script Editor now run and debug without requiring a tenant to be explicitly selected.
  • File parameters (and other task parameters) are no longer silently lost when deploying software using Do Not Remember from the Software Tab — the values you enter now reach the maintenance action.
  • Global alert banners (e.g., validation errors) now stay pinned in view while you scroll long forms instead of scrolling out of sight.
  • Ignoring a config task no longer leaves the alert panel without a description; the explanation text now renders correctly.
  • Log entries in the Logs panel are now legible across every theme.
  • Maintenance task File parameters now honor assignment-level media overrides during script execution instead of using the previously bound value.
  • MSP role assignments now correctly apply to the MSP tenant itself, not just its child tenants.
  • Metascripts no longer flag valid string booleans like "True" and "False" with false-positive warnings, and Write-Output -NoEnumerate array results are preserved correctly.
  • Provider agents can now move between clients while keeping their identity and history; agents previously deleted are restored when they reappear under a different client.
  • Session status now correctly reports PartialPassed when re-entering with an execution stage already at PartialPassed (for example, after a server restart), instead of reporting Passed.
  • The Assign button on the role assignments form is disabled until all required scope fields are filled, preventing accidental empty submissions when the scope is MSP but no MSP tenant is selected.
  • When the backend is unreachable, the alert area no longer fills up with duplicate error banners, and the agent list no longer flashes a loading state on routine background refreshes.
  • A computer with an online (but non-script-capable) agent is now correctly shown as online on the computer detail page, matching the main Computers list.
  • The hideChocolateyPackages user preference is now respected in the Dashboard, Quick Deploy, Multi-Software Selector, and Schedule Details software pickers — not just on the Deployment Details page.
  • The ConnectWise Automate Invoke-CWARestMethod cmdlet no longer throws an error when QueryParams is provided; REST calls with query parameters now work correctly.
  • The Package Analyzer no longer intermittently fails on incoming requests.
  • The Software Tab now handles installability consistently — uninstall-only software is shown as informational rather than error-like, and install options are preserved when software has a valid install path but no static versions.
  • The target selector now resets the target type correctly when you change the target category, so switching to Tenant lands on a valid default instead of a stale value.
  • Tenant dropdowns (such as Change Tenant on a computer) are now alphabetized instead of showing tenants in an arbitrary order.
  • Users without the system_operations:view permission now see a clear "You do not have permission to view this data." message on the Preferences page’s support access section; users with view but not manage permissions see a "You do not have permission to manage support access." message instead of broken Grant/Revoke buttons.

Improvements

  • Page load progress bar — Page navigation now shows a smooth progress bar driven by real view-load progress, with an error state that turns the bar red if a load fails. It’s also accessible to screen readers.
  • Faster tenant and tag loads — Tenants and tags are now pre-loaded when you sign in, so dropdowns like Change Tenant are ready before any page renders. Redundant list fetches have been eliminated across the app.
  • More resilient integrations — OAuth token handling now rejects empty or malformed tokens up front and tracks refresh failures per token, so one misbehaving provider is less likely to affect others.
  • Consistent popups — All confirmation and modal dialogs across ImmyBot now look and behave the same way, with the last of the legacy popups migrated over.
  • UI polish — Card headers are cleaner and more subtle, the side Drawer caps at 80% of the viewport height (with internal scrolling) so it can’t overflow your screen, and required-field indicators (*) render in the correct danger color.
  • Improved agent diagnostic logging to aid in stability and performance improvements.

0.79.1

Released 03/31/26

Bug Fixes

  • Fixed an issue where the MSP tenant’s Owner Tenant could be set to itself, which blocked all device onboarding with a "query returned no rows" error. A migration now repairs affected instances, backend validation prevents a tenant from being saved with itself as the owner, and the Owner Tenant dropdown no longer lists the current tenant as a selectable option.

Performance

  • ConnectWise Manage client lookups no longer cause multi-minute CPU spikes when loading the integration. Client deduplication now uses an O(n) hash set instead of an O(n²) list scan, dramatically reducing CPU usage for instances with large client lists.
  • Resolved severe thread contention during assignment resolution caused by synchronous EF Core queries holding a lock for the full duration of each database call. Assignment queries now use async APIs, releasing the lock immediately so concurrent requests share a single pending task instead of blocking each other.

0.79.0

Released 03/23/2026

New Features

  • Maintenance Session Expiration — Pending maintenance sessions can now be configured to automatically expire after a set number of days, preventing stale sessions from accumulating indefinitely.
  • PowerShell 7.5.4 — The embedded PowerShell runtime has been upgraded from 7.4.0 to 7.5.4, bringing the latest language features, runtime improvements, and security fixes to metascripts and deployment scripts.
  • Software Version Filtering in Get-ImmyComputerIds — The Get-ImmyComputerIds cmdlet now accepts -SoftwareComparisonOperator and -SoftwareVersion parameters, allowing operators to filter computers by installed software version using comparison operators (<, <=, =, >=, >).
  • Tenant Owner Reassignment — MSP admins can now change a tenant’s owner tenant directly from the tenant edit form without requiring backend intervention.
  • Use-OutOfProcessEphemeralConnection — A new metascript cmdlet ensures that the ephemeral connection to a computer runs out-of-process from the installed ImmyAgent service, enabling scenarios that require process isolation from the running agent.

Bug Fixes

  • Fixed OAuth consent flows for MSP custom app registrations using New-MsGraphOAuthConsentParameter — the consent service now correctly retrieves client secrets from the Azure tenant auth details store instead of only checking the generic OAuth key vault store.
  • Fixed a race condition in remote control session quota tracking where in-flight sessions could be missed during periodic sync, allowing concurrent sessions to exceed subscription limits.
  • Fixed ProviderClientGroupType GUIDs regenerating on every instance restart, which silently broke target assignments and schedules that stored the previous GUID value.
  • Fixed Get-ImmyComputerIds -Tag to include tags assigned at the tenant and primary-person level, restoring parity with legacy behavior.
  • Fixed dynamic software installs with LatestVersion or UpdateIfFound desired state to install the newest available dynamic version instead of aborting with an error when the dynamic version was newer than the pinned semver.
  • Fixed tenant-scoped licenses disappearing in child-tenant deployments. An "Apply to Child Tenants" option (enabled by default when a tenant is selected) now controls license visibility and applicability checking is moved to the backend.
  • Fixed local-to-global software migration failures where new configuration tasks defaulted to Local type and caused foreign key violations during migration. null maintenance task types are now treated as Local in the migration guard.
  • Fixed duplicate task execution during onboarding when the winning deployment changes after the primary user is set — the resolver now reuses existing actions by maintenance item identity rather than requiring an exact assignment ID match.
  • Fixed onboarding deployment ordering so OnboardingOnly tasks no longer jump ahead of other onboarding deployments with higher configured priority.
  • Fixed custom download scripts so that terminating errors (including throw and OperationStopped) now correctly fail the download phase. Non-terminating errors no longer cause unintended download failures.
  • Fixed Monaco editor listener accumulation on session detail pages with large log counts. The editor now initializes lazily when scrolled into view and log rendering is capped at 1,000 entries by default with a "Show all" option.
  • Fixed BindParameterHook calling orig() twice on PowerShell type coercion exceptions, reducing the exception rate in profiler traces by approximately 50%.
  • Fixed typed arrays (e.g., [int[]]) losing their element type after PowerShell CliXml round-trip serialization in metascript parameters.
  • Fixed user scripts running in USER_CONTEXT aborting on transient token acquisition failures during session state transitions (e.g., logon/unlock timing races) — GetSessionUserToken now retries on NoLoggedOnUserException.
  • Fixed the Azure permission level selector not initializing to the correct active level on page load due to onMounted firing before the component was fully loaded.
  • Fixed the "Use computer’s timezone for execution" schedule option being hidden when "Immediately after detection" is selected.
  • Fixed Maintenance Task parameter rows losing their padding in production due to a CSS specificity conflict.
  • Fixed the Software Details advanced section showing duplicate Dynamic Versions and Agent Integration entries. Spacing, separators, and help text have also been normalized.
  • Fixed spacing and alignment issues in the Software Version advanced settings layout, bringing it in line with the Software form.
  • Fixed the onboarding form incorrectly displaying validation errors when none were present.
  • Fixed the onboarding flow so that errors now display a dialog requiring acknowledgment before onboarding continues, rather than a toast that could be missed.
  • Fixed WiFi networks configured via PPKG not auto-connecting after provisioning by using the correct configure XML format.
  • Fixed users with the Manage Maintenance Tasks permission being unable to duplicate global tasks — duplicating creates a local copy and now correctly requires only maintenance_tasks:manage rather than global:manage.
  • Fixed an unhandled exception when creating a task without specifying a manager tenant.
  • Fixed provider client sync jobs to no longer use Hangfire, improving scheduling reliability for provider client synchronization.
  • Fixed agent startup on non-Windows platforms (macOS/Linux) crashing due to EventLog provider registration being called unconditionally — registration is now guarded by an OperatingSystem.IsWindows() check.
  • Fixed ad-hoc script SSE streaming to conform to the SSE specification (missing newline delimiter) and corrected the response MIME type to application/json-lines.
  • Fixed a duplicate key database error when syncing feature usage item counts that could intermittently crash background telemetry tasks.
  • Deleting a person now also deletes the associated linked user account and revokes their access, with an updated confirmation dialog that warns about account removal.

Improvements

  • The ImmyBot Agent now enforces domain and TLS certificate validation for backend connections when built with code-signing enabled, improving connection security.
  • Agent online status refresh logic is now centralized across all providers, fixing an inconsistency where ImmyAgent always fired connect/disconnect events regardless of actual state change while other providers did not.
  • Fixed an issue when you create a script that requires parameters, and fill the parameter field(s) out, typing in the script will erase all parameters.
  • Fixed an issue where onboarding sessions would fail in the onboarding stage if an ephemeral agent couldn’t be established.
  • Fixed an issue where the tenant deletion notification was being sent to users without permissions to see it.
  • Fixed an issue with users unable to see details on the azure page even if they had the correct view permissions

Performance

  • Replaced Z.EntityFramework.Plus and Polly cache with FusionCache for FindSoftware lookups, eliminating a CPU-intensive expression tree JIT compilation hotspot that appeared prominently in profiler traces on large instances.
  • Disabled vite-plugin-checker TypeScript checking during production builds, reducing frontend build memory consumption by approximately 1 GB.
  • Concurrent agent installer requests are now coalesced into batch database queries, reducing database load and improving scalability during high-volume agent registration. A race condition in device count increments has also been fixed with an atomic SQL update.

0.78.0

Released 03/02/2026

RBAC

RBAC is here!

Visit the docs to learn more

Improvements

  • Added new memory/disk panels with disk encryption indicator to the computer details page
  • Removed the unnecessary confirmation checkbox on the sidebar support request form
  • Reduced memory allocations for connected agents
  • The quick deploy form now renders the full parameter form if the selected software or task requires parameters.
  • Clicking the copy to clipboard button when viewing session logs should now also copy the timestamp of the log item.
  • Reduced memory allocations in azure group lookups
  • Scripts with [CmdletBinding()] now work in System/User context. Previously, adding [CmdletBinding()] to a param block would throw ParameterBindingException for context variables that weren’t declared as parameters.
  • Filter scripts using -InventoryKeys Software against large computer populations caused severe GC pressure. This has been improved to reduce resource usage.
  • Made several improvements to agent connection management that reduce overall resource usage

Bug Fixes

  • Fixed issues handling default values for parameters
  • Fixed an issue that prevented some installed Immy Agents from connecting after backend infrastructure changes.
  • Fixed required param validation when keys are present but null. Empty requests still skip required errors.
  • Fixed an issue that could occur on startup where schedules would not get setup if an exception occurred.
  • Fixed an issue where users could not approve change requests.
  • ArgumentList now binds to the correct parameters in positional order. Previously, values were binding to injected context variable params instead of user-declared params.
  • Added UnwrapToNativeType() extension method to properly convert JsonElement to native .NET types for PowerShell parameter binding.
  • Fixed a confusing OAuth consent UX where the “Default/Custom App Registration” badge could show the wrong value until page refresh.
  • Fixed an issue where the Azure user sync was not considering case-invariant email addresses, which led to unhandled exceptions
  • Fixed issues with azure buttons and components rendering even when the user did not have permission
  • Fixed an issue where soft-deleted computers did not appear in the Deleted Computers tab.
  • Fixed an issue where navigating to another computer details page while on the computer details page would not work correctly
  • Fixed an issue where long blocks of error text could show up under inventory identification keys
  • Fixed an issue with some agents not getting synced due to incorrect duplicate key detection
  • Fixed an issue with inventory script identification not always working as expected

0.77.1

Released 02/06/2026

Bug Fixes

  • Fixed an issue where setting a software’s access level to all would not save
  • Fixed an issue where loading CW Automate or Screenconnect groups on the deployment page would throw an error
  • Fixed an issue where the request access button would be disabled even when the Access Requests preference was enabled
  • Fixed an issue where loading azure consent for some customers would throw an error

0.77.0

Released 02/03/2026

Improvements

  • Software installers and media uploads are now proxied through a CDN instead of pulling directly from Azure Blob Storage. Global installers are proxied through global.immy.bot, and local installers and media are proxied through local.cdn.immy.bot.
  • Onboarding deployments no longer show a parameter error modal on save if the only parameters that have errors are ones marked to be provided by the onboarding form.
  • Added a "Copy Link" button to open scripts in the script editor. Navigating to this link will open the script in the script editor.
  • Cleaned up and reformatted some agent PowerShell logging.
  • Improved some styling when viewing from a mobile device.
  • Added an overlay "Clear Output" button in the computer terminal tab.
  • New-DateTimeParameter now always renders as a datetime-local input (date + time).
  • New-DateParameter is added for date-only inputs; it renders as date-only with no time selector. Existing saved date-only values still render as dates and are not re-saved unless the user edits the field, preventing silent time-component changes on open/save.
  • Improved performance and cancellation support for the Wait-ImmyComputer cmdlet.

Bug Fixes

  • Fixed an issue where scheduled computer sessions would not get created if the computer had a session already running.
  • Fixed an issue with dynamic parameters not showing up correctly in the script editor.
  • Fixed an issue where duplicating a deployment would result in the desired software state being unset.
  • Fixed an issue where inventory script keys could be created with special characters, causing them to fail.
  • Fixed an issue where the integration ID parameter was not consistently passed to scripts.
  • Fixed an issue where integration agents were being disassociated from computers and re-identified when they were moved between clients.

0.76.3

Released 01/27/2026

Bug Fixes

  • Fixed an issue where users would not be redirected to the billing page when a trial expired or when the selected billing plan required any changes

0.76.2

Released 01/26/2026

Stability Improvements

  • Improved memory footprint of integration audit logs around refreshing an agent’s online status
  • Improved CPU and memory footprint when writing output to PowerShell streams.
  • Improved CPU and memory footprint in Azure data syncs
  • Improved memory footprint in global software caches and lookups

0.76.1

Released 01/22/2026

Bug Fixes

  • Fixed an issue with some tenant admins unable to load the tag list page
  • Fixed an issue where the preferences page would continually reload when toggling on PII mode

0.76.0

Released 01/19/2026

Bug Fixes

  • Fixed an issue where duplicate media api requests were being made when loading certain pages
  • Fixed an issue with the batch actions button’s disabled state on the computer list page
  • Fixed an issue where clicking agent icons on a deleted computer responded with a 404 instead of a messaging stating you must restore the computer to perform this action
  • Fixed issues wirth certain response types causing issues when loading the Swagger API page
  • Fixed a rare uncaught exception that could cause the server to shutdown
  • Fixed an issue with saving the script timeout value where the value would still be used even when the checkbox to override was unchecked
  • Fixed the display of integration logos in timeline events
  • Fixed a rare issue that could cause the deployments page and search to not load properly
  • Fixed an issue that prevented the application locks page from loading
  • Fixed an issue where New-DropDownParameter returned null when the multiselect switch was used
  • Fixed an issue with calling Get-ProviderAgent in cloud scripts
  • Fixed a typo in the error message displayed when a device has no connected agents
  • Fixes an issue with redacting some in provider logs. Keeps REDACTED visible without errors.
  • Fixed an issue when child tenants were created and linked to the same Azure tenant as the MSP tenant, the Azure user sync process would incorrectly move people objects between tenants based on domain filtering. This caused MSP Users and Admins to lose management access.
  • Fixed an issue where the computer table export button would be shown even if the user didn’t have permission to export computers
  • Fixed an issue where desired version was not showing up in maintenance actions during resolution only sessions or detection sessions triggered from quick deploy
  • Fixed an issue where integrations not using inventory identification were showing up in the computer overview tab. An example is "CW Manage Agent — Not Inventoried Yet"
  • Fixed an issue where disabling integrations from pulling agents in from linked clients would not always work and agents would still sync
  • Fixed an exception that would occur during an integration’s client sync when the client did not have any linked clients
  • Fixed PSStreamObject cast exceptions by wrapping ephemeral agent error stream messages in ErrorRecord
  • Fixed an issue where choco results would not show up in the maintenance selector
  • Fixed an issue where sending test emails from the SMTP page were failing

Improvements

  • Improved performance of the maintenance sessions list page
  • Upgraded the server to use .NET 10
  • Updated styling of right-side sidebar to have more contrast in dark-mode
  • Added the ability to load drafts for modified scripts that were closed before they could be saved or discarded.
  • Updated ScreenConnect extension to be compatible with newer versions and made some performance improvements.
  • Set-Session now persists the reboot preference to the session which allows the new preference to be picked up on future actions.
  • Local software can now select a global integration type as the agent integration
  • We now hide the "Getting Started" dropdown menu item when the checklist has been completed
  • Improved the styling of the maintenance task parameter form
  • Resizing the script editor panes now persists when closing the script editor or browser
  • Added PKCE support to New-OAuthConsentParameter cmdlet

Was this article helpful?