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
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
Get-PSUCache -Key '<AnyCacheKey>' -Integrated for several distinct keys on page load.
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
@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
@Adam Driscoll -Integrated does not help me
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"} }}
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.
ya this is janky, needs to be reopened
-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?
-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 thisPermission 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
This is a priority issue. We are working on a fix right now.
Adam Driscoll
PowerShell Expert and Software Architect at Devolutions
@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.
@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
@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.
@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