Bug Report

Report bugs for Devolutions PowerShell Universal

avatar

Matthew Morrow

Add Intelligent Session Timeout

My users work a support que, they need their dashboard up for like 8 hours or as long as they are working the dashboard. have it reset every so often is not good, if they are connected they shouldn't time out. if they disconnect from the session then the session cleaner should go through and kill sessions but if the users need the app up, they do not want to reset the screen and choose all their filters every 2 hours. i guess i could increase the SessionTimeout to 480 but i am not sure that is good idea.

46

2

avatar

Matthew Morrow

avatar

Dynamic66

Blank pages after coming back to a session

This is from a Blank PSU app that I had open while shutting down my PC for the day. After coming back this morning, my browser automatically opens my last pages, and all PSU apps recently have returned completely blank. The setup includes 2 PSU servers with a Postgres database on version 2026.2.3. A load balancer/reverse proxy is in place with sticky sessions enabled. (ip hashing) There seems to be an error indicating that sticky sessions are not enabled. I request this scenario to be handled properly or that the page would auto-reload when an old WebSocket connection can't be established. [2026-08-22T09:15:04.232Z] Information: Normalizing '/dashboardhub?dashboardid=6&pageid=1...' to 'https://domain.com/dashboardhub?dashboardid=... 3f0d01ed210f9fa93137.bundle.js:60 WebSocket connection to 'wss://domain.com/dashboardhub?dashboardid=...' failed: (anonymous) @ 3f0d01ed210f9fa93137.bundle.js:60 3f0d01ed210f9fa93137.bundle.js:60 [2026-08-22T09:15:04.355Z] Information: (WebSockets transport) There was an error with the transport. 3f0d01ed210f9fa93137.bundle.js:60 [2026-08-22T09:15:04.355Z] Error: Failed to start the transport 'WebSockets': Error: WebSocket failed to connect. The connection could not be found on the server, either the endpoint may not be a SignalR endpoint, the connection ID is not present on the server, or there is a proxy blocking WebSockets. If you have multiple servers check that sticky sessions are enabled. log @ 3f0d01ed210f9fa93137.bundle.js:60 APPNAME:1 EventSource's response has a MIME type ("text/html") that is not "text/event-stream". Aborting the connection. 3f0d01ed210f9fa93137.bundle.js:60 [2026-08-22T09:15:04.450Z] Error: Failed to start the transport 'ServerSentEvents': Error: EventSource failed to connect. The connection could not be found on the server, either the connection ID is not present on the server, or a proxy is refusing/buffering the connection. If you have multiple servers check that sticky sessions are enabled. log @ 3f0d01ed210f9fa93137.bundle.js:60 3f0d01ed210f9fa93137.bundle.js:60 [2026-08-22T09:15:04.606Z] Error: Error parsing handshake response: Error: Message is incomplete. log @ 3f0d01ed210f9fa93137.bundle.js:60 3f0d01ed210f9fa93137.bundle.js:60 [2026-08-22T09:15:04.606Z] Error: Connection disconnected with error 'Error: Error parsing handshake response: Error: Message is incomplete.'. log @ 3f0d01ed210f9fa93137.bundle.js:60 3f0d01ed210f9fa93137.bundle.js:60 Uncaught (in promise) Error: Error parsing handshake response: Error: Message is incomplete. at X._processHandshakeResponse (3f0d01ed210f9fa93137.bundle.js:60:97903) at X._processIncomingData (3f0d01ed210f9fa93137.bundle.js:60:96893) at N.onreceive (3f0d01ed210f9fa93137.bundle.js:60:91400) at N._poll (3f0d01ed210f9fa93137.bundle.js:60:70873) 3f0d01ed210f9fa93137.bundle.js:60 [2026-08-22T09:15:04.643Z] Information: Using HubProtocol 'json'. 3f0d01ed210f9fa93137.bundle.js:60 Uncaught (in promise) Error: Error parsing handshake response: Error: Message is incomplete. at X._processHandshakeResponse (3f0d01ed210f9fa93137.bundle.js:60:97903) at X._processIncomingData (3f0d01ed210f9fa93137.bundle.js:60:96893) at N.onreceive (3f0d01ed210f9fa93137.bundle.js:60:91400) at N._poll (3f0d01ed210f9fa93137.bundle.js:60:70873)

142

6

avatar

Adam Driscoll

avatar

johnmarkwilliams

2026.3.4 - Error Saving User Preferences

So, I had this issue happen back in 2026.3.0, and ultimately working in my lab environment, I reinstalled PSU and the problem disappeared. Now on 2026.3.4, I just upgraded my Prod environment which is a mix of Windows 2025 and RHEL9 servers, and I was using only local accounts waiting on my SSO team to get their portion for OIDC authentication configured. No issues whatsoever with local accounts and saving any user preferences, e.g re-order the menu, change dark/light mode, etc. I hooked SSO into Prod, and the new accounts now have this problem. The really fun part is that my Test environment with an identical config does NOT have this issue. New SSO user accounts in Test can adjust their user settings. I also have Dark Mode set as the default for all new users, and this settings seems to have no effect either. All users get light mode. I know the below error is a not really specific. I'm not totally sure what else to check here. Looking for some guidance on what to try next. Thanks! General Error below: Item with ID 0 not found. at PowerShellUniversal.Extensibility.EFTable`2.UpdateAsync(Int64 id, Action`1 update) in D:\a\powershell-universal\powershell-universal\src\PowerShellUniversal.Extensibility\Persistence\EFTable.cs:line 502 at PowerShellUniversal.Extensibility.EFTable`2.UpdateAsync(Int64 id, Action`1 update) in D:\a\powershell-universal\powershell-universal\src\PowerShellUniversal.Extensibility\Persistence\EFTable.cs:line 514 at PowerShellUniversal.Authentication.IdentityService.UpdateIdentitySettingsAsync(Int64 identityId, Action`1 update) in D:\a\powershell-universal\powershell-universal\src\PowerShellUniversal.Authentication\IdentityService.cs:line 350 at Universal.Server.Pages.User.UserPreferences.Save() in D:\a\powershell-universal\powershell-universal\src\Universal.Server\Pages\User\UserPreferences.razor:line 129 at Microsoft.AspNetCore.Components.ComponentBase.CallStateHasChangedOnAsyncCompletion(Task task) at PowerShellUniversal.SaveButton.Run() in D:\a\powershell-universal\powershell-universal\src\Universal.Server\Shared\Settings\SaveButton.razor:line 36 at Microsoft.AspNetCore.Components.ComponentBase.CallStateHasChangedOnAsyncCompletion(Task task) at AntDesign.Button.HandleOnClick(MouseEventArgs args) at Microsoft.AspNetCore.Components.ComponentBase.CallStateHasChangedOnAsyncCompletion(Task task) at Microsoft.AspNetCore.Components.RenderTree.Renderer.GetErrorHandledTask(Task taskToHandle, ComponentState owningComponentState) [image] [image]

56

6

avatar

Michel Audi

avatar

SunnyJ

2026.3.4 - Endpoints Throwing Unexplained Exceptions

PSU: 2026.3.4 OS: Windows Server 2025 Hosting: IIS I'm not sure what the best way to provide instructions on how to reproduce this; however, I have an API that worked fine in 2026.3.3, but in 2026.3.4, when I run it using the following regex definition, I get the following error: URL = 'my/api/v1/Virtualization/Cluster/(?<VirtualizationClusterId>[0-9]+)/vLAN'; Method = @('POST'); Environment = 'Dedicated - API - v1'; Description = "APIv1 - Create new vLANs for the specified virtualization Cluster."; Regex = $True; Authentication = $True; Role = @('Administrator','PSUService') Exception of type 'PowerShellUniversal.ApiResponseException' was thrown. at ScriptBlock, D:\Powershell Universal\Repository\Scripts\vLANs.ps1: line 24 at ScriptBlock, No file: line 1 If I use the same script, but with the following definition (without regex), it works without error: URL = 'my/api/v1/Virtualization/Cluster/:VirtualizationClusterId/vLAN'; Method = @('POST'); Environment = 'Dedicated - API - v1'; Description = "APIv1 - Create new vLANs for the specified virtualization Cluster."; Authentication = $True; Role = @('Administrator','PSUService') For note, line 24 is the first line of the Param block, with the following: [Parameter(Mandatory=$True,ParameterSetName='Post')] I've also got another endpoint that worked in 2026.3.3, but after upgrading to 2026.3.4, I now get errors on (regex configured or not). I configured transcription for the whole script, which doesn't catch an error (makes it to the end of the script), but PSU returns the following error: "Object reference not set to an instance of an object" [11/3/2026 4:59:52 PM] [Error] [Api-/my/api/v1/Computer/Request:POST|PATCH|DELETE] System.NullReferenceException: Object reference not set to an instance of an object. at UniversalAutomation.Host.PowerShellApiService.ExecuteRequest(ApiRequest request) in D:\a\powershell-universal\powershell-universal\src\Host\ApiService.cs:line 295 at UniversalAutomation.Host.PowerShellApiService.ExecuteRequest(ApiRequest request) in D:\a\powershell-universal\powershell-universal\src\Host\ApiService.cs:line 295 I'm not sure what else I can provide to help further troubleshoot these.

35

1

avatar

Michel Audi

avatar

SunnyJ

Backlog

2026.3.4 - Regex POST and PATCH APIs Not Working When App at Root

PSU: 2026.3.4 OS: Windows Server 2025 Hosting: IIS I saw in the patch notes for 2026.3.4 that regex APIs were fixed in instances when you have an app set up at "/", and they partially are (as GETs work); however, it seems POST and PATCH methods do not work. To reproduce, setup an app at "/" and then setup a RegEX API endpoint that supports POST and PATCH and returns some data. When attempting a POST or PATCH via Invoke-RestMethod externally (from a client system), you will receive a blank response. Logs indicate no endpoint is found/method not supported. Moving the app from "/" to some new home (ie "/Hosting"), the API will start accepting a POST or PATCH and return data. If you use Invoke-PSUEndpoint, it will work in both situations. Example configuration: New-PSUApp -Name "Server Management" -FilePath "Dashboards\Server Management\Dashboard.ps1" -BaseUrl "/" -Environment "Dedicated - App - Server Management" -Authenticated -SessionTimeout 120 -IdleTimeout 60 -AutoDeploy -Description "Server Management Dashboard" $Var = @{ URL = 'my/api/v1/Computer/Request'; Method = @('POST','PATCH','DELETE'); Environment = 'Dedicated - API - v1'; Description = "Request API" ; Regex = $True ; Authentication = $True; Role = @('Administrator', 'Requestors'); Path = "D:\Powershell Universal\Endpoints\myendpoint.ps1" } New-PSUEndpoint @Var The above endpoint will not be triggered when called with Invoke-RestMethod. However, if you move the App to "/Hosting", the endpoint will work. Logs attached. I also noticed in the systemLog that despite specifically using a POST, the initial logs show the request as a GET which is strange.

53

2

avatar

SunnyJ

avatar

realslacker

2026.3.3 Running script causes issue with [string[]] type input when switching from Parameters to Action Preferences

Example Script: param( [string[]] $MultiStringInput ) Reproduce Bug: Run script Enter value in "Parameters" section Switch to "Action Preferences" Switch back to "Parameters" Error Message: An item with the same key has already been added. Key: examplevalue at System.Collections.Generic.Dictionary`2.Add(TKey key, TValue value) at AntDesign.Select`2.CreateDeleteSelectOptions() at AntDesign.Select`2.OnParametersSetAsync() at Microsoft.AspNetCore.Components.ComponentBase.CallStateHasChangedOnAsyncCompletion(Task task)

118

10

avatar

Michel Audi

avatar

Matthew Morrow

git sync restarts apps many times

if you have 150 api's 50 apps | change 5 files in 1 app 45 scripts and git sync does a git pull it restarts your app a bunch of time this happens after a PR from dev->main while prod sits on main --- suggested fix Group app restarts with all the files in that app restart those api's in that group of files find parent child and restart that way instead of restarting on each file changed

57

10

avatar

Michel Audi

avatar

romano

Invoke-PSUEndpoint no longer works without endpoint permissions

Hi, We have an application that makes API calls using Invoke-PSUEndpoint. However, after an update (I believe from 2026.2.5 to 2026.3.0, or at least to 2026.3.3), this functionality no longer works as expected. Our endpoints are protected by authentication. Currently, when a user does not have permission to access a particular endpoint, the application throws the following error: Exception of type 'PowerShellUniversal.ApiResponseException' was thrown. When the user does have the required permissions, everything works as expected. Previously, however, this worked even when the user did not have explicit permissions for the endpoint. Our API security model in appsettings.json is set to Permissive. We have also tested with and without the -Integrated switch, but the issue occurs in both cases. The idea behind this setup is to have an application that uses API calls without requiring every user to have permissions for all kinds of APIs. Is this a bug that can be fixed, or is there another way we should configure this to achieve the desired behaviour? My suspicion is that this is a bug, since it worked as expected before the update. I look forward to hearing from you. Thanks in advance! Best regards, Romano

Recommended Answer

10 days ago

Hello Romano, Thank you for the clear description. What you describe matches an intended change in version 2026.3.0, not a bug. Since that version, Invoke-PSUEndpoint applies the endpoint's roles to the user who makes the call, as a direct HTTP request does. I reproduced it in our lab on 2026.3.3 with the Permissive model. A user with only the Execute role called an endpoint that runs Invoke-PSUEndpoint against an endpoint requiring Administrator. The server refused the inner call with a 403, and the cmdlet threw exactly your error, with and without -Integrated. Our test used one API endpoint calling another, so if your application still fails after a change below, please send me its exact error and the time of the call. These two configurations made the call work in the lab. 1. Have the application call the endpoints with its own app token. In the Admin Console, under Secure > Application Tokens, create a token with the endpoint's role. The call also needs permission to execute APIs, which the built-in Administrator, Operator and Execute roles have by default, so if the endpoint's role lacks that permission, add the Execute role to the token too. In the lab, a token with only a custom role was refused with "Permission denied", and the same role plus Execute worked. Pass the token with your server's base URL, held in $ServerUrl below. Without -ComputerName, the call failed with "Specify a computer name or use the Connect-PSUServer command". Invoke-PSUEndpoint -Url '/your/endpoint' -AppToken $AppToken -ComputerName $ServerUrl Inside the called endpoint, $Identity is then the token's identity and no longer the application's user. Every user of the application can run those endpoints through it, and the calls fail again once the token expires. 2. Add a role that your application's users already have to the endpoint's Roles. In the lab, an endpoint with the roles Administrator and Execute ran for an Execute user, both through Invoke-PSUEndpoint from another endpoint and over HTTP. Those users can then also call the endpoint directly. Both topics are described in the documentation. https://docs.devolutions.net/powershell-universal/api/security/ https://docs.devolutions.net/powershell-universal/security/app-tokens/ Best regards, Michel

54

2

avatar

romano

avatar

don.lent

2026.3.2 - Favicon functionality broken

The Favicon functionality is broken. It only works if specified for an App but not system wide. More specific, these settings currently do not work: [image] [image] Thanks for considering to fix that in an upcoming release! 🤗 Best regards, Don

Recommended Answer

12 days ago

Hello, Thank you for your patience while our team looked into the issue you reported. I'm happy to let you know that the latest version of PowerShell Universal (2026.3.4) includes a fix for this problem. You can download it from our website here: https://devolutions.net/download-center/#psu Once you have installed the update, could you please test it in your environment and confirm that everything now works as expected? If the issue persists or if you notice anything unusual related to the same original problem, just reply to this message with a few details, and we will be glad to look into it further. Thank you for your collaboration. Best regards,

87

3

avatar

don.lent

avatar

Andreas

Implemented Backlog

[2026.3.3] Get-PSUIdentity -Integrated in .universal config scripts fails with "Unauthenticated" under Permissive security model

Version: 2026.3.3 (also 2026.3.2). Last working version: 2026.2.4 Hosting: Docker (Linux container), 2-node cluster, PostgreSQL plugin, Git sync (OneWay, Data__Mode=Manual) Security model: API__SecurityModel=Permissive , API__TrustCertificate=true (set as environment variables; verified inside both containers with docker exec <container> env ) Problem Since upgrading from 2026.2.4 to 2026.3.x, every configuration load fails on both nodes for all universal scripts that call a PSU cmdlet with -Integrated . The admin console shows: Invalid configuration: /root/.PowerShellUniversal/Repository/.universal/eventHubs.ps1 Unauthenticated. Specify an app token, use default credentials or enable permissive security model. (Computer: node-01) The same error appears for roles.ps1 and publishedFolders.ps1 , on both nodes. These are exactly the three config scripts that call Get-PSUIdentity -Integrated . All other config scripts load fine. Minimal repro .universal/roles.ps1 : $identities = Get-PSUIdentity -Integrated New-PSURole -Name "Test" -Description "Test" Start the server with API__SecurityModel=Permissive -> the configuration load of roles.ps1 fails with "Unauthenticated". Expected According to the docs, with the Permissive model cmdlets run as the System user, and -Integrated uses the backchannel; authorization is only performed in the Strict model. The configuration should load, as it did in 2026.2.4. Actual The configuration load is rejected as unauthenticated, although the error message itself suggests enabling the permissive model, which is already enabled. Impact Event hubs, roles and published folders defined in these scripts are not registered, so agents can't connect to their event hubs. We can't upgrade our test/production instances. Notes Not intermittent: it happens on every container start/configuration reload. The 2026.3.2 fix ("Integrated API Security Model not being honored by PSU cmdlets") and the 2026.3.3 fix ("Integrated API Security Model and -Integrated enforcing permissions incorrectly") did not resolve it. Possibly related: 56550 (Invoke-PSUScript -Integrated authorizing the caller, fix announced for 2026.3.3) and 56545 (same "Unauthenticated" message, but reported only for non-Permissive models). In our case Permissive is set and the error still occurs on every configuration load. Before 2026.2 we had to add -Integrated to these calls because the external API (gRPC via Api.Url) failed during configuration load, so dropping -Integrated is not an option. Is there a supported workaround (other than switching to API__SecurityModel=Integrated , which affects Send-PSUEvent -ComputerName routing in our multi-node setup)? Best Regards Andreas

62

2

avatar

Maxim Robert

avatar

akapsch

2026.3.2 - Unable to delete a file in files tab

If I select a file in the files tab, click the delete icon, then click the delete button, nothing happens. I can then no longer select other files or close the delete confirm flyout.

107

5

avatar

Adam Driscoll

avatar

Matthew Morrow

[26.3.3] Nested IIS boot theme is not being applied

[image]

64

4

avatar

Matthew Morrow

avatar

Dynamic66

Resolved

Git discard all changes 2026.3.4

Hello, I wanted to discard all changes after testing some pwsh modules. Clicking the discard all & stop editing button does not seem to work, except showing the confirm prompt and redirecting to admin/git after a few seconds. No errors in the console, but the logs show this every time I press discard all & stop editing : 2026-10-30 10:49:05.169 +00:00 [ERR][PowerShellUniversal.Configuration.RoleService] Attempted to delete built-in role: API Editor 2026-10-30 10:49:05.172 +00:00 [ERR][PowerShellUniversal.Configuration.RoleService] Attempted to delete built-in role: API Reader 2026-10-30 10:49:05.172 +00:00 [ERR][PowerShellUniversal.Configuration.RoleService] Attempted to delete built-in role: App Editor 2026-10-30 10:49:05.172 +00:00 [ERR][PowerShellUniversal.Configuration.RoleService] Attempted to delete built-in role: App Reader 2026-10-30 10:49:05.172 +00:00 [ERR][PowerShellUniversal.Configuration.RoleService] Attempted to delete built-in role: Script Editor 2026-10-30 10:49:05.173 +00:00 [ERR][PowerShellUniversal.Configuration.RoleService] Attempted to delete built-in role: Script Reader 2026-10-30 10:49:05.173 +00:00 [ERR][PowerShellUniversal.Configuration.RoleService] Attempted to delete built-in role: Portal Editor 2026-10-30 10:49:05.173 +00:00 [ERR][PowerShellUniversal.Configuration.RoleService] Attempted to delete built-in role: Portal Reader 2026-10-30 10:49:05.173 +00:00 [ERR][PowerShellUniversal.Configuration.RoleService] Attempted to delete built-in role: Agent I do not have any pending changes regarding these roles. [image] [image] Discarding individual items works as expected. It's not an immediate issue for me since I can mainly discard, just thought I’d let you know. Best regards Dy

38

2

avatar

Dynamic66

avatar

Dynamic66

" changes to ' in config files

This has been a thing for a while: Sometimes, after making changes on the admin UI, the " change to '' (and also back after some times) in the configuration files without me touching the actual files. This does not cause problems but bloats my git commits with fake changes. I'm not sure how this occurs apart from me changing stuff in the UI and I did not put much effort into finding out when this happens, but I want to point it out because it's annoying 😂 Best regards, Dy [image] (the screenshot is cut off for privacy reasons, there is an accrual change below)

45

3

avatar

Dynamic66

avatar

Dynamic66

creating Rate Limits bug 26.3.3

I set up a new API Rate Limit like allways but the saving took for ever [image] After Reloading the page all rate limit entries are gone / not loading anymore. The page is still responsive. [image] I can see the newly created rate limit in the ratelimits.ps1 file.

104

8

avatar

Patrick Ouimet

avatar

dylegrand

Permission denied when using PSU Test Tool, but API endpoint works correctly

Hi, I'm experiencing an authorization issue in PowerShell Universal in version 2026.3.2 that only occurs when using the built-in Test tool. I have an API endpoint that starts an automation script using: Invoke-PSUScript -Name "script.ps1" -Parameters @{Variable = $Variable} -Wait The script is configured to run with the Administrator role. When the endpoint is called externally using Invoke-RestMethod , everything works correctly and the script executes as expected. However, when I use the Test feature from the PSU web interface, I receive the following error: Permission denied. The role specified does not have access to this resource. Has anyone encountered this behavior before? Thanks!

79

3

avatar

dylegrand

avatar

Dynamic66

Read-host in the Portal resets to the form

First, I like how the portal visually handles the Read-Host prompt now. However, after entering the data, it rests to the form and hides the ongoing job output. Removing the Read-Host from the same script fixed the issue. The job and its output are still visible in the history. If the Script contains a Second Read-Host the feedback can not be supplied over the Portal, also not over the history tab. Version: 2026.3.3

41

2

avatar

Dynamic66

avatar

abang

PowerShell Universal failed to start (Timed out waiting for security proxy to start) - Version 2026.3.0

OS: Linux Docker Image: devolutions/powershell-universal:2026.3.0-ubuntu-24.04 Note: This container has updated through almost every 2026.* release without any problems causing failed starting OBS: Image is baked into another image but other versions haven't been a problem PowerShell Universal fails to start because the security proxy does not become available within the configured startup timeout. After starting with new imagine Startup sequence: - PowerShell Universal begins starting. - Startup reaches "Starting security service..." - The security service does not successfully start within 30 seconds. - PowerShell Universal then aborts startup. - Reverting to 2026.2.5 successfully starts it again Displayed error: PowerShell Universal failed to start. Check the logs for more information. Failed to load PowerShell Universal. Timed out waiting for security proxy to start. Waited 30 seconds. Consider increasing the SecurityProxyTimeout setting in appsettings. Expected behavior: PowerShell Universal should successfully start the security service and complete application startup.

193

8

avatar

krle

avatar

romano

Resolved

Reload all configurations failure with endpointdocumentation

We are using PSU modules and when i reload all configurations then i get standard this error: [11:33:08 ERR] UniversalAutomation.Services.ConfigurationScript Failed to read configuration file. endpointDocumentation.ps1 Microsoft.EntityFrameworkCore.DbUpdateException: An error occurred while saving the entity changes. See the inner exception for details. ---> Microsoft.Data.Sqlite.SqliteException (0x80004005): SQLite Error 19: 'FOREIGN KEY constraint failed'. at Microsoft.Data.Sqlite.SqliteException.ThrowExceptionForRC(Int32 rc, sqlite3 db) at Microsoft.Data.Sqlite.SqliteDataReader.NextResult() at Microsoft.Data.Sqlite.SqliteCommand.ExecuteReader(CommandBehavior behavior) at Microsoft.Data.Sqlite.SqliteCommand.ExecuteReaderAsync(CommandBehavior behavior, CancellationToken cancellationToken) at Microsoft.Data.Sqlite.SqliteCommand.ExecuteDbDataReaderAsync(CommandBehavior behavior, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Update.ReaderModificationCommandBatch.ExecuteAsync(IRelationalConnection connection, CancellationToken cancellationToken) --- End of inner exception stack trace --- at Microsoft.EntityFrameworkCore.Update.ReaderModificationCommandBatch.ExecuteAsync(IRelationalConnection connection, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Update.Internal.BatchExecutor.ExecuteAsync(IEnumerable`1 commandBatches, IRelationalConnection connection, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Update.Internal.BatchExecutor.ExecuteAsync(IEnumerable`1 commandBatches, IRelationalConnection connection, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Update.Internal.BatchExecutor.ExecuteAsync(IEnumerable`1 commandBatches, IRelationalConnection connection, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Storage.RelationalDatabase.SaveChangesAsync(IList`1 entries, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.StateManager.SaveChangesAsync(IList`1 entriesToSave, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.StateManager.SaveChangesAsync(StateManager stateManager, Boolean acceptAllChangesOnSuccess, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.DbContext.SaveChangesAsync(Boolean acceptAllChangesOnSuccess, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.DbContext.SaveChangesAsync(Boolean acceptAllChangesOnSuccess, CancellationToken cancellationToken) at PowerShellUniversal.Extensibility.EFTable`2.SaveWithRetryAsync(DbContext context) in D:\a\powershell-universal\powershell-universal\src\PowerShellUniversal.Extensibility\Persistence\EFTable.cs:line 1032 at PowerShellUniversal.Extensibility.EFTable`2.SaveWithRetryAsync(DbContext context) in D:\a\powershell-universal\powershell-universal\src\PowerShellUniversal.Extensibility\Persistence\EFTable.cs:line 1038 at PowerShellUniversal.Extensibility.EFTable`2.DeleteAsync(T item) in D:\a\powershell-universal\powershell-universal\src\PowerShellUniversal.Extensibility\Persistence\EFTable.cs:line 228 at PowerShellUniversal.Extensibility.EFTable`2.DeleteAsync(T item) in D:\a\powershell-universal\powershell-universal\src\PowerShellUniversal.Extensibility\Persistence\EFTable.cs:line 228 at PowerShellUniversal.Configuration.EndpointDocumentationService.DeleteAsync(ModelOperationContext`1 context) in D:\a\powershell-universal\powershell-universal\src\PowerShellUniversal.Configuration\EndpointDocumentation.cs:line 75 at UniversalAutomation.Services.ConfigurationScript`1.ReadAsync(SyncContext syncContext, CancellationToken cancellationToken) in D:\a\powershell-universal\powershell-universal\src\PowerShellUniversal\ConfigurationScript.cs:line 391 In this modules we are creating endpoints with their endpointdocumentations. Running on IIS but also from my dev seat running throug a running universal.server.exe command from my powershell 7 shell.

Recommended Answer

12 days ago

Hello Romano, Thank you for the detailed follow-up and the sample files, which made this much easier to trace. The SQLite error does not come from your SQL Server database or from your SQLite database file. PowerShell Universal keeps the resources it reads from the .universal files in a separate in-memory SQLite store. That is why you see a SQLite error on both machines, and why your own database shows no endpoint or documentation rows. Here is what happens during Reload All Configurations on 2026.3.3. PowerShell Universal first reloads the repository's own endpointDocumentation.ps1 file. Your documentation entries come from your modules, not from that file, so the reload treats them as removed and tries to delete them. Your module endpoints still point to those entries through their Documentation parameter, so the store blocks the delete. That blocked delete is the foreign key error in your log. Because the delete is blocked, your documentation entries stay in place, which matches what you saw. PowerShell Universal 2026.3.4, now available, changes this behavior. A repository reload now leaves resources that belong to a module alone, and each module reload manages its own resources. In the release notes, this fix is listed as "Fixed external modules disappearing after Git synchronization changes": https://devolutions.net/powershell-universal/release-notes/ The same change also covers manual reloads such as Reload All Configurations. Could you upgrade your dev machine to 2026.3.4 and run Reload All Configurations again? Please let me know whether the error is gone. If it still appears, send me the new log entry and I will reproduce it on our side with your sample module. Until then, the error does not remove anything, so you can leave it as is. A restart remains the cleanest way to pick up module changes on 2026.3.3. Endpoint documentation is described here: https://docs.devolutions.net/powershell-universal/api/openapi Best regards,

58

4

avatar

romano

avatar

dylegrand

Complete PSU crash following modification of an application's runtime environment

------------------------------------------------------------ Product: PowerShell Universal Version: 2026.3.3 Hosting: IIS OS: Windows Server 2025 Database: SQL Server ------------------------------------------------------------ In PSU, it is possible to create an application that runs on PowerShell 7. It will start up and display the application as follows: New-UDApp -Content { 'Hello, everyone!' } However, if the environment is changed to "Integrated" and then switched back to PowerShell 7, the application remains stuck in a "Deployed" state, and subsequently, no one can log in to PSU using a domain account. The following error message appears: Status(StatusCode="Unavailable", Detail="failed to connect to all addresses", DebugException="Grpc.Core.Internal.CoreErrorDetailException: {"created":"@1793109706.532000000","description":"Failed to pick subchannel","file":"..\..\..\src\core\ext\filters\client_channel\client_channel.cc","file_line":3218,"referenced_errors":[{"created":"@1793109706.532000000","description":"failed to connect to all addresses","file":"..\..\..\src\core\lib\transport\error_utils.cc","file_line":165,"grpc_status":14}]}") The issue persists even after restarting the IIS service; only the local PSU admin user is able to log in. To restore the service, one must disable the application's automatic startup, switch it back to "Integrated," and then restart the IIS service once more. Furthermore, it is not possible to run an application on PowerShell 7 while also executing it as a GMSA (Group Managed Service Account). Thank you in advance for your expertise.

49

1

avatar

Michel Audi

avatar

Matthew Morrow

saving stuff to the HD does not auto load api code

put psu in edit mode make a change to an api test api = old code still responding go to files and click restart endpoings test api = old code still responding go to api's click reload apis test api = new code active

51

3

avatar

Michel Audi

avatar

Matthew Morrow

mcp direct connect fails

Error: MCP: Failed to reconnect to psu-dev: fetch failed "psu-dev": { "url": "https://dev.psu.domain.com/appname/api/v1/mcp", "headers": { "Authorization": "Bearer ${PSU_MCP_TOKEN}" } }

Recommended Answer

17 days ago

ope, for pi.dev you have to set [Environment]::SetEnvironmentVariable('NODE_USE_SYSTEM_CA', '1', 'User')

41

4

avatar

Michel Audi

avatar

Dynamic66

Implemented

Commit changes page lag 2026.3.3

Had about 44 changed files pending in my dev instance. Clicked "Commit Changes" at the top (to get to the Git tab), and the page froze for about a minute. Did not have this issue on previous versions. [image] [image] (browser task manager, it got even higher then in the screenshot for both size and CPU) I think this is due to all checked files being loaded at once when the page opens. I suggest the content of the changed files to be loaded upon expanding the change editor and having all changes closed by default.

72

3

avatar

Maxim Robert

avatar

Matthew Morrow

Implemented

PowerShell Universal Extension: Nested IIS Sites Not Supported

I get an error when i try to configure a connection in the vscode ext: I am using the new ext [image] [image] I have tried https://dev.psu.domain.com/Beta https://dev.psu.domain.com/Beta/ https://dev.psu.domain.com/Beta/api https://dev.psu.domain.com/Beta/api/v1/mcp Failed to connect to https://dev.psu.domain.com/Beta/api. PSU request failed (404 Not Found): <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>IIS 10.0 Detailed Error - 404.0 - Not Found</title> <style type="text/css"> <!-- body{margin:0;font-size:.7em;font-family:Verdana,Arial,Helvetica,sans-serif;} code{margin:0;color:#006600;font-size:1.1em;font-weight:bold;} .config_source code{font-size:.8em;color:#000000;} pre{margin:0;font-size:1.4em;word-wrap:break-word;} ul,ol{margin:10px 0 10px 5px;} ul.first,ol.first{margin-top:5px;} fieldset{padding:0 15px 10px 15px;word-break:break-all;} .summary-container fieldset{padding-bottom:5px;margin-top:4px;} legend.no-expand-all{padding:2px 15px 4px 10px;margin:0 0 0 -12px;} legend{color:#333333;;margin:4px 0 8px -12px;_margin-top:0px; font-weight:bold;font-size:1em;} a:link,a:visited{color:#007EFF;font-weight:bold;} a:hover{text-decoration:none;} h1{font-size:2.4em;margin:0;color:#FFF;} h2{font-size:1.7em;margin:0;color:#CC0000;} h3{font-size:1.4em;margin:10px 0 0 0;color:#CC0000;} h4{font-size:1.2em;margin:10px 0 5px 0; }#header{width:96%;margin:0 0 0 0;padding:6px 2% 6px 2%;font-family:"trebuchet MS",Verdana,sans-serif; color:#FFF;background-color:#5C87B2; }#content{margin:0 0 0 2%;position:relative;} .summary-container,.content-container{background:#FFF;width:96%;margin-top:8px;padding:10px;position:relative;} .content-container p{margin:0 0 10px 0; }#details-left{width:35%;float:left;margin-right:2%; }#details-right{width:63%;float:left;overflow:hidden; }#server_version{width:96%;_height:1px;min-height:1px;margin:0 0 5px 0;padding:11px 2% 8px 2%;color:#FFFFFF; background-color:#5A7FA5;border-bottom:1px solid #C1CFDD;border-top:1px solid #4A6C8E;font-weight:normal; font-size:1em;color:#FFF;text-align:right; }#server_version p{margin:5px 0;} table{margin:4px 0 4px 0;width:100%;border:none;} td,th{vertical-align:top;padding:3px 0;text-align:left;font-weight:normal;border:none;} th{width:30%;text-align:right;padding-right:2%;font-weight:bold;} thead th{background-color:#ebebeb;width:25%; }#details-right th{width:20%;} table tr.alt td,table tr.alt th{} .highlight-code{color:#CC0000;font-weight:bold;font-style:italic;} .clear{clear:both;} .preferred{padding:0 5px 2px 5px;font-weight:normal;background:#006633;color:#FFF;font-size:.8em;} --> </style> </head> <body> <div id="content"> <div class="content-container"> <h3>HTTP Error 404.0 - Not Found</h3> <h4>The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.</h4> </div> <div class="content-container"> <fieldset><h4>Most likely causes:</h4> <ul> <li>The directory or file specified does not exist on the Web server.</li> <li>The URL contains a typographical error.</li> <li>A custom filter or module, such as URLScan, restricts access to the file.</li> </ul> </fieldset> </div> <div class="content-container"> <fieldset><h4>Things you can try:</h4> <ul> <li>Create the content on the Web server.</li> <li>Review the browser URL.</li> <li>Create a tracing rule to track failed requests for this HTTP status code and see which module is calling SetStatus. For more information about creating a tracing rule for failed requests, click <a href="http://go.microsoft.com/fwlink/?LinkID=66439">here</a>. </li> </ul> </fieldset> </div> <div class="content-container"> <fieldset><h4>Detailed Error Information:</h4> <div id="details-left"> <table border="0" cellpadding="0" cellspacing="0"> <tr class="alt"><th>Module</th><td>&nbsp;&nbsp;&nbsp;IIS Web Core</td></tr> <tr><th>Notification</th><td>&nbsp;&nbsp;&nbsp;MapRequestHandler</td></tr> <tr class="alt"><th>Handler</th><td>&nbsp;&nbsp;&nbsp;StaticFile</td></tr> <tr><th>Error Code</th><td>&nbsp;&nbsp;&nbsp;0x80070002</td></tr> </table> </div> <div id="details-right"> <table border="0" cellpadding="0" cellspacing="0"> <tr class="alt"><th>Requested URL</th><td>&nbsp;&nbsp;&nbsp;https://dev.psu.jhacorp.com:443/api/v1/configuration</td></tr> <tr><th>Physical Path</th><td>&nbsp;&nbsp;&nbsp;E:\src\psu\api\v1\configuration</td></tr> <tr class="alt"><th>Logon Method</th><td>&nbsp;&nbsp;&nbsp;Anonymous</td></tr> <tr><th>Logon User</th><td>&nbsp;&nbsp;&nbsp;Anonymous</td></tr> </table> <div class="clear"></div> </div> </fieldset> </div> <div class="content-container"> <fieldset><h4>More Information:</h4> This error means that the file or directory does not exist on the server. Create the file or directory and try the request again. <p><a href="https://go.microsoft.com/fwlink/?LinkID=62293&amp;IIS70Error=404,0,0x80070002,17763">View more information &raquo;</a></p> </fieldset> </div> </div> </body> </html>

111

4

avatar

Maxim Robert

avatar

mshepard70

Implemented

Nested IIS problems in 2026.3.3.0

I've been using 2026.3.3.0 for a few minutes and have already found a few places where nested IIS sites don't work. <complaint> Nested IIS PSU sites break in different features in nearly every PSU release. Please add nested IIS to your testing suite. </complaint> Broken things I've noticed so far: Return to site from job diagnostics [image] View App on "more actions" menu [image]

90

2

avatar

Maxim Robert

1 - 25 of 189 items