Reshaper fails to load in Burp >= v2025.10.2
The Reshaper extension fails to load in Burp versions 2025.10.3 and 2025.10.2, if any "rules" where defined in the extension. The problem didn't exist in earlier Burp releases. I've reported the issue with Portswigger and they suggested also opening an issue on the extension.
I've attached the error log (reshaper_errors.txt). As you can see the issue is when Reshaper loads the configuration from its prefs.xml file, and tries to deserialize a "When" object.
Here's how you can recreate the bug:
- In Burp >= v2025.10.2, install and load the Reshaper extension
- In the Reshaper tab, give a name to the existing Rule (this is required to be able to save the configuration) and click "Save" in the bottom right corner
- Exit Burp
- Relaunch Burp
Reshaper will fail to load.
The only way fix the problem is to delete the ~/.java/.userPrefs/burp/extensions/_!&8!`g"l!(:!a!"h!(!!~@"y/prefs.xml file, but of course it also removes all the Reshaper rules.
Attachment: reshaper_errors.txt
same issue
}
com.fasterxml.jackson.databind.exc.InvalidTypeIdException: Could not resolve type id 'synfron.reshaper.burp.core.rules.whens.WhenFromTool' as a subtype of synfron.reshaper.burp.core.rules.whens.When<java.lang.Object>: no such class found
at [Source: (StringReader); line: 1, column: 148] (through reference chain: synfron.reshaper.burp.core.settings.WorkspacesExport["workspaces"]->java.util.ArrayList[0]->synfron.reshaper.burp.core.settings.WorkspaceExport["rules"]->java.util.ArrayList[0]->synfron.reshaper.burp.core.rules.Rule["whens"]->java.util.ArrayList[0])
at com.fasterxml.jackson.databind.exc.InvalidTypeIdException.from(InvalidTypeIdException.java:43)
at com.fasterxml.jackson.databind.DeserializationContext.invalidTypeIdException(DeserializationContext.java:2068)
at com.fasterxml.jackson.databind.DeserializationContext.handleUnknownTypeId(DeserializationContext.java:1617)
at com.fasterxml.jackson.databind.jsontype.impl.ClassNameIdResolver._typeFromId(ClassNameIdResolver.java:130)
at com.fasterxml.jackson.databind.jsontype.impl.MinimalClassNameIdResolver._typeFromId(MinimalClassNameIdResolver.java:121)
at com.fasterxml.jackson.databind.jsontype.impl.ClassNameIdResolver.typeFromId(ClassNameIdResolver.java:111)
at com.fasterxml.jackson.databind.jsontype.impl.TypeDeserializerBase._findDeserializer(TypeDeserializerBase.java:158)
at com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer._deserializeTypedForId(AsPropertyTypeDeserializer.java:150)
at com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer.deserializeTypedFromObject(AsPropertyTypeDeserializer.java:135)
at com.fasterxml.jackson.databind.deser.AbstractDeserializer.deserializeWithType(AbstractDeserializer.java:262)
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer._deserializeNoNullChecks(CollectionDeserializer.java:503)
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer._deserializeFromArray(CollectionDeserializer.java:358)
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:245)
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:29)
at com.fasterxml.jackson.databind.deser.impl.FieldProperty.deserializeAndSet(FieldProperty.java:137)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:302)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:169)
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer._deserializeNoNullChecks(CollectionDeserializer.java:501)
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer._deserializeFromArray(CollectionDeserializer.java:358)
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:245)
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:29)
at com.fasterxml.jackson.databind.deser.impl.FieldProperty.deserializeAndSet(FieldProperty.java:137)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:302)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:169)
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer._deserializeNoNullChecks(CollectionDeserializer.java:501)
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer._deserializeFromArray(CollectionDeserializer.java:358)
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:245)
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:29)
at com.fasterxml.jackson.databind.deser.impl.FieldProperty.deserializeAndSet(FieldProperty.java:137)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:302)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:169)
at com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:342)
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4971)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3887)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3870)
at synfron.reshaper.burp.core.utils.Serializer.deserialize(Serializer.java:115)
at synfron.reshaper.burp.core.settings.Storage.get(Storage.java:18)
at synfron.reshaper.burp.core.settings.SettingsManager.loadPersistentWorkspaces(SettingsManager.java:46)
at synfron.reshaper.burp.core.settings.Workspaces.get(Workspaces.java:26)
at burp.BurpExtender.initialize(BurpExtender.java:32)
at burp.Zfgx.Zc(Unknown Source)
at burp.Zjud.ZX(Unknown Source)
at burp.Zju0.lambda$initialiseOnNewThread$0(Unknown Source)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:545)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:328)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1095)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:619)
at java.base/java.lang.Thread.run(Thread.java:1447)
@acut3 @mahmutyazici What OS are you using? How long before the upgrade did you make a change to any rules? If you remove the old rules and create new ones in the new version, close, and restart Burp, does the same issue occur?
@acut3 @mahmutyazici What OS are you using?
I'm on Linux (archlinux). It happens with the JRE that comes with Burp, and also with any other external JRE (I'm normally using openjdk 25.0.1).
How long before the upgrade did you make a change to any rules?
Not sure, probably just before, but it's irrelevant. You can recreate the issue with a fresh install of everything, following the steps I provided. It happens as long as the prefs.xml file contains one "When" rule.
If you remove the old rules and create new ones in the new version, close, and restart Burp, does the same issue occur?
You can't really just remove the rules, since Reshaper doesn't load at all. But yes, as I mentioned, after deleting the ~/.java/.userPrefs/burp/extensions/<reshaper_directory>/prefs.xml file, which effectively deletes all the rules and configuration, then restarting the latest Burp and creating new rules, the issue reoccurs.
@acut3 @mahmutyazici What OS are you using? How long before the upgrade did you make a change to any rules? If you remove the old rules and create new ones in the new version, close, and restart Burp, does the same issue occur?
I’m using macOS Sequoia 15.6.1 and latest version of burp pro. I created a rule about two months ago, and it worked for a couple of weeks. Recently, it started giving aforementioned error.
Cannot delete the old rules because ReShaper is not working.
I couldn’t find the directory to manually delete the old rules. I tried deleting and reinstalling ReShaper, closing and reopening Burp, clearing the cache, etc., but none of these steps worked.
@mahmutyazici This comment contains instructions for clearing Reshaper data for Mac https://github.com/synfron/ReshaperForBurp/issues/43#issuecomment-1734269959 . Note, do not do this without backing up the value or unless you already have a backup of your rules.
I've reached out to PortSwigger Support concerning this issue.
@mahmutyazici @acut3 This preview resolves the issues with loading rules. https://github.com/synfron/ReshaperForBurp/releases/tag/v2.5.4-pre You can use the provided JAR or generate your own from the pre_release branch code. You'll want to disable the extension downloaded from the BApp Store, restart Burp Suite, and load the JAR as an extension.
@ddwightx thanks, I can confirm the provided jar fixes the issue for me.
@mahmutyazici @acut3 This preview resolves the issues with loading rules. https://github.com/synfron/ReshaperForBurp/releases/tag/v2.5.4-pre You can use the provided JAR or generate your own from the pre_release branch code. You'll want to disable the extension downloaded from the BApp Store, restart Burp Suite, and load the JAR as an extension.
Thank you, it worked for me too.