Integrated mode intermittently fails with "You must be running this command in PowerShell Universal to use the integrated mode" after upgrading to 2026.3.0

A fix for this issue has been implemented in version 2026.3.1

Integrated mode intermittently fails with "You must be running this command in PowerShell Universal to use the integrated mode" after upgrading to 2026.3.0

avatar

Description of Issue
After upgrading our PSU Dev instance from 2026.2.0 to 2026.3.0, dashboard apps that call Get-PSUCache -Integrated intermittently fail with:

You must be running this command in PowerShell Universal to use the integrated mode.

This confirms -Integrated is required for these calls to function (they were designed to bypass the Management API's role/token auth entirely), and that the integrated back-channel itself is broken/flaky, not the calling code.
Steps to Reproduce

  1. On a 2026.3.0 instance, create/use an app (New-PSUApp) without -GrantAppToken.
  2. In the app content, call Get-PSUCache -Key '<AnyCacheKey>' -Integrated for several distinct keys on page load.
  3. Reload the app/page repeatedly.
  4. Observe intermittent failures on arbitrary -Integrated calls with the error above — not on every load, and not consistently on the same call.


Expected Behavior
-Integrated calls made from inside a running PSU app should reliably execute against the same server process without needing Management API auth, regardless of load timing.
Actual Behavior
The integrated back-channel intermittently fails to establish/verify, causing the cmdlet to conclude (incorrectly) that it isn't running inside PSU.

Let me know if you need anything else from me.

Cheers

All Comments (12)

avatar

@lauriestreet Thanks for reporting this. I've seen this reported on Discord as well, so you aren't the only customer affected. We are actively looking into it and I will let you know if we need any more information.

Adam Driscoll
PowerShell Expert and Software Architect at Devolutions

avatar

@Adam Driscoll -Integrated does not help me

avatar

Got the same issue with a dashboard that calls Get-PSUDashboard -Integrated to enumerate all dashboards, fails with error: "You must be running this command in PowerShell Universal to use the integrated mode." - worked before upgrading to 2026.3 from 2026.1.3 - fails consistently.

New-UDDashboard -Title "Test" -Content {
New-UDLayout -Columns 4 -Content {
Get-PSUDashboard -Integrated | Sort-Object Name | ForEach-Object { Write-Host "test $_.Name"}
}
}

avatar

Is there any update regarding this bug? I had to downgrade back to 2026.2.4 because my REST APIs weren't working. I have script calls that rely on the -Integrated parameter, even though the permissive mode is enabled in the appsettings.json, the script calls are running as unauthenticated and throwing an error message.

avatar

ya this is janky, needs to be reopened

avatar

-Integrated cache reads now "Permission denied" for non-admin roles after 2026.3.1.0 - intended or bug?

Upgraded 2026.3.0 → 2026.3.1.0. The known Get-PSUCache -Integrated gRPC error ("You must be running this command in PowerShell Universal...") is gone, but now non-admin users get:

Permission denied. The role specified does not have access to this resource.


- Works fine as Administrator.
- Fails for a custom role that already has app access via New-PSUApp -Role.

Cache was written without -Role:

Set-PSUCache -Key "SomeCacheKey" -Value $Data -Integrated


App reads it with:

Get-PSUCache -Key "SomeCacheKey" -Integrated


Theory: -Integrated used to bypass per-user authorization entirely; now (post CVE-2026-4064 fix) it authorizes as the real calling user, so a cache entry with no -Role is effectively Administrator-only.

Is explicitly setting -Role on Set-PSUCache now required for non-admin roles to read via -Integrated, or is this a new bug in 2026.3.1.0?

avatar
-Integrated cache reads now "Permission denied" for non-admin roles after 2026.3.1.0 - intended or bug?

Upgraded 2026.3.0 → 2026.3.1.0. The known Get-PSUCache -Integrated gRPC error ("You must be running this command in PowerShell Universal...") is gone, but now non-admin users get:
Permission denied. The role specified does not have access to this resource.
- Works fine as Administrator.
- Fails for a custom role that already has app access via New-PSUApp -Role.

Cache was written without -Role:
Set-PSUCache -Key "SomeCacheKey" -Value $Data -Integrated
App reads it with:
Get-PSUCache -Key "SomeCacheKey" -Integrated
Theory: -Integrated used to bypass per-user authorization entirely; now (post CVE-2026-4064 fix) it authorizes as the real calling user, so a cache entry with no -Role is effectively Administrator-only.

Is explicitly setting -Role on Set-PSUCache now required for non-admin roles to read via -Integrated, or is this a new bug in 2026.3.1.0?


I have the same problem with 3.2

@Adam Driscoll This doesn't work either:
$Job = Get-PSUJob -RunId $ServerInfo.DeletionJobRunId
or this
$Job = Get-PSUJob -RunId $ServerInfo.DeletionJobRunId -Integrated
or this
$Job = Get-PSUJob -RunId $ServerInfo.DeletionJobRunId -UseDefaultCredentials
will result in this
Permission denied. The role specified does not have access to this resource.
This happens even with the Administrator role. And the Get functions (Cache, Job, etc.) don't even have Role parameters.
This also happens in the Admin Terminal.

This whole problem needs to be fixed with priority. This breaks all of our dashboards

avatar

This is a priority issue. We are working on a fix right now.

Adam Driscoll
PowerShell Expert and Software Architect at Devolutions

avatar

@Adam Driscoll should this be working in 2026.3.3 ? Based on this fix from the changelog:

Fixed an issue with Integrated API Security Model and -Integrated enforcing permissions incorrectly

Because of some other bug early this year my PSU still runs on permissive mode as opposed to Strict mode:
$Env:Api__SecurityModel = 'Permissive'
But this should not affect how the code runs post 2026.3.x. The same code works in 2026.1.x
Not using -Integrated should use the user rights per my understanding as opposed to system rights.
But I still get the same error.

It still doesn't work from a dashboard.
This time an example from an API:

This:
$Job = Get-PSUJob -RunId $jobId
results in this:
[10/6/2026 10:47:14 AM] [Information] [Api-/job/:jobId:GET] Permission denied. The role specified does not have access to this resource.

I called the API as an Admin, so I definitely have access.

Curiously, this seems to work without problems though:
$JobOutput = Get-PSUJobPipelineOutput -RunId $jobId

The cache seems to work now, I think.

The solution can't be adding -Integrated to every function, this would defeat the purpose of Security Models.

avatar

@schubfre It looks like we still have a problem with Get-PSUJob. Can you please try this?

Get-PSUJob -RunId $jobId -HideChildren $true

Adam Driscoll
PowerShell Expert and Software Architect at Devolutions

avatar
@schubfre It looks like we still have a problem with Get-PSUJob. Can you please try this?
Get-PSUJob -RunId $jobId -HideChildren $true


@Adam Driscoll
Yes, that works.

avatar

@schubfre Thanks. We've got a fix in for this cmdlet that will be included in 2026.3.4.

Adam Driscoll
PowerShell Expert and Software Architect at Devolutions

A fix for this issue has been implemented in version 2026.3.1