Prusa Research has shipped PrusaSlicer 2.9.7, and the release notes say plainly what it is: a small maintenance release that fixes several security vulnerabilities. The changelog lists only security fixes. The changes, listed relative to 2.9.6, fall into four areas: how the slicer reads 3MF project files, two placeholder functions used in custom G-code, the built-in Printables downloader, and libbgcode, the library that handles Prusa's binary G-code format. The release page is dated November 2, 2026. The fixes are credited to a researcher who goes by @5un9hun, thanked for taking part in Prusa's responsible disclosure program.
The 2.9.7 update landed the same day as PrusaSlicer 3.0.0-alpha13, the latest build of the next major version, which was published a few hours later. So the stable branch got security work and the development branch got new features at the same moment. This piece covers both, starting with the patch most people should install.
The Four Fixes, One by One
3MF files with a negative bed index. The first fix covers an out-of-bounds write that could happen when PrusaSlicer loaded a 3MF file containing a negative bed index. An out-of-bounds write means the program puts data outside the memory it set aside for it. In a C++ application that is the kind of bug that can do more than crash the program, which is why it is handled as a security problem and not a cosmetic one. 3MF is the container format that slicers use to bundle models, settings and plate layouts, and makers pass these files around all the time. The specific trigger was a malformed value, a negative bed number, that a correctly made file should never contain.
The digits() and zdigits() placeholder functions. The second fix addresses a stack buffer overflow in two functions of PrusaSlicer's placeholder language, the macro system that lets custom start, end and layer-change G-code insert values computed at slice time. Many advanced users never look at it. But printer and filament profiles can carry custom G-code, and profiles get shared and imported much like 3MF files. A function that formats numbers is not an obvious place for a memory-safety bug, which is a good reason to have it fixed.
The Printables downloader. The release notes say only that "several issues" in the downloader from Printables were fixed and give no details. The downloader is the part of PrusaSlicer that takes a model from Prusa's Printables repository and opens it in the slicer. It handles content that comes from outside your machine, so it is an obvious place for a security review to look.
libbgcode and malformed binary G-code. The last item is described as "couple of potencionally exploitable vulnerabilities" in the libbgcode library, triggered by loading malformed binary G-code files. Binary G-code is Prusa's compact alternative to plain-text G-code, and libbgcode is the library that reads and writes it. The notes do not explain how the bugs could be exploited, and this article will not guess. Even so, the words "exploitable vulnerabilities" are a clear signal to update.
A Pattern Worth Noticing
Look at the four fixes together and they share a theme. Every one of them is about handling input the slicer did not create: a project file, a G-code macro, a download from a web repository, a binary G-code file. For a long time slicers were treated as offline tools that converted meshes you trusted into toolpaths you trusted. That is no longer how most people use them. Modern slicers download models, import community profiles and open files from strangers. Each of those inputs is a parsing path, and each parsing path can be attacked.
Prusa's notes treat this as routine. The release credits the researcher who took part in the responsible disclosure program, and the patch ships as a point release on the stable branch. That is how mature software projects handle security reports, and makers should be pleased to see a slicer vendor do it in public.
Meanwhile, on the 3.0 Branch
The 3.0.0-alpha13 build is a very different kind of release. The release notes call it the third public alpha of 3.0.0, and the release page is dated November 2, 2026. To keep testers out of trouble, the alpha builds save their profiles in a separate PrusaSlicer3-dev directory, so you can run the alpha side by side with the current release without ruining your production configuration. The notes add that PrusaSlicer 2.x and 3.x can run alongside each other without conflicts.
The biggest change in this alpha is a restructured Add printer workflow. Prusa says the "favorites" system from the first two 3.x alphas was a temporary solution from the beginning. Now the user has to add every printer they want to use, and there is a dedicated Add printer button in the printer selection dialog (tracked as #15676). It opens a wizard-like dialog where you select a printer and create a named local profile (#15603). The same dialog can also configure the printer as a "physical" one, with an IP address and similar details. A locally added printer therefore has a name, a configuration covering nozzles and sheet, and optionally the physical data. Selecting the printer preset is now separate from selecting the hardware configuration, which gets a dedicated drop-down in the right panel.
There is also a new tab in the printer configuration dialog that shows the current state of a printer connected to Prusa Connect. Selecting a printer from this list uses the printer's live configuration and picks an appropriate configuration and compatible printer preset. Prusa notes that changing the nozzle to one that is not currently installed is not possible at this point, and that this is not the final state of how synchronization with the printer will look.
The Filament selector dialog also has a new tab for material database support, which lets you pick a filament from the material database instead of selecting a logical profile. When PrusaSlicer is connected to a Prusa Account, it shows which materials are tagged as favorites in Prusa Connect and lets you filter the view accordingly. The database is bundled with the application and does not auto-update for now. The direction is clear: filament choice is becoming something you look up in a database, not just a list of preset names.
Prusa also lists one known problem. People who used earlier alphas may see a "nameless" printer on the first start, because the changes are not completely compatible with configuration left behind by the previous alpha. The company calls this a known and harmless UI glitch and says you can safely ignore it.
What It Means for Makers
If you use PrusaSlicer 2.9.x for real work, install 2.9.7. The release is described as a maintenance release and its changelog contains security fixes only. What it does is close memory-safety bugs in exactly the code that handles shared files. If you download 3MF projects from Printables, import other people's profiles, or open binary G-code you did not slice yourself, you are the user these fixes were written for. Until you update, be careful with project and G-code files from sources you do not know well.
The 3.0 alpha is for testers and the curious. Because it uses the separate PrusaSlicer3-dev directory, trying it out is fairly low-risk, and the new printer setup and material database are worth a look if you manage several machines or follow where Prusa is going with Prusa Connect. It is still alpha software, though, and it should not replace the release you depend on.
Both pieces of information come from Prusa's own release notes on GitHub, and the vulnerability descriptions above are exactly as detailed as Prusa chose to make them.