Caution
This version of Snipe-IT REQUIRES PHP 8.2.0 or greater, 8.4+ recommended. PHP 8.2 is still in security release support until 31 Dec 2026, but let's not play that game
We're SO stoked to release v8.5 of Snipe-IT for so many reasons!
Tons of bug fixes, and also - we now support PHP 8.5! We're also now on Laravel 12, which won't matter to most folks, but means we can start to move forward on some really cool stuff that the framework limitation kept us from doing.
As always, the nitty gritty is in the What's Changed below - but very importantly, this release addresses several security issues, so we strongly encourage everyone to update as soon as is feasible.
BUT FIRST - The Snipe-IT Mobile App
Everyone wants to know about the mobile app. We're freakishly close to a beta release. So much progress has been made already, the suspense is killing us. We were hoping to time this release with more specific news about the mobile app, but this release means that when the mobile app does launch, it will be a much better experience. Watch this space - it's happening soon.
Complex Advanced Search Queries
We've heard from so many people about how the "advanced" search wasn't so... advanced.
Previously, the advanced search (the icon with the + sign in it) was... okay. We've supercharged it in this release to allow and vs or, and also some pretty cool add-ons to be able to filter in a much more nuanced way.
Advanced searches return a partial match by default. For more specific results, you can use not:value to fuzzy-exclude, is:value for an exact match, is_not:value for an exact exclusion, is:null for empty values, and is:not_null for non-empty. (In these examples, value is the text you are searching for - or seeking to exclude.)
This is all API-powered, so if you're using the API in a more complicated way, you automatically have all of this new operator and filter functionality. (We're a little behind on the docs, but we'll have that updated soon, I swear.)
Small usability issue - hitting enter (or return) on that advanced search modal will now submit the form.
Let's Talk About SCIM, Baby
SCIM now officially supports groups, location, company, and manager syncing. Because of how SCIM works, this won't happen automagically, you'll need to map those fields in your directory service provider, and we'll have updated docs for that shortly.
This is a shockingly short blurb about stuff that took a really long time, but for the folks who cared about this in the first place, it's a big deal.
Caution
If you have internal groups that are named the same as Snipe-IT permission groups, you could accidentally overwrite permission groups in Snipe-IT. Use this carefully, and definitely make a backup first.
Bulk Delete Licenses
While this shouldn't come up too often, imports do go bad and providers change sometimes. If you have a bunch of licenses that have no seats assigned, you can now delete them in bulk.
Screen.Recording.2026-05-12.at.1.10.36.PM.mov
Re-Send Asset Acceptance from the user view
You can now re-send the unaccepted item notice from a user's page (if they have outstanding items that have not been signed for or the EULAs were not yet accepted.)
Sign in Place
SO many people have asked for this, and we're so jazzed to be able to release it. If your workflow requires a user to sign in place - as in they are literally standing there - you can do that now. It will still direct you to your intended destination after the user accepts what's been assigned, but you can now do that in-place, in-person.
That checkbox will remember your previous choice, so for folks who really wanted this to streamline their workflow, this should help a lot. (Admittedly not our best work in terms of test data screenshots.)
Report Dashboard
Reports have always been a weird outlier in terms of information architecture here. We've made some big improvements in that department, so anyone with reports permission will now see this:
Screen.Recording.2026-05-11.at.2.24.58.PM.mov
Custom Asset Report
You can now use "only assigned" or "only unassigned" in the custom asset report.
AI Stuff
While it's not in this release, we are working on a built-in MCP server, so if AI is your thing, stay tuned.
What's Changed
- Upgraded to Laravel 12 by @marcusmoore in #18730
- Added new indexes to improve some Location queries by @uberbrady in #18833
- Fixed #18786 - add port number option to the restore command by @uberbrady in #18835
- Strikethrough if component is deleted by @snipe in #18846
- Fixed potential exception in bulk asset checkout by @marcusmoore in #18852
- Api token rework by @snipe in #18858
- Log authed user ID header by @snipe in #18861
- Move migration to fire after deleted_at column added to companies by @uberbrady in #18860
- Add artisan command to clear compiled views (for docker startup.sh) by @Joly0 in #18865
- Added validation check console command - helps with #18851 by @snipe in #18866
- Fixed #18856 - clicking and canceling would result in multiple icons in modal by @snipe in #18867
- #18736 add cumulative cost of an asset with maintenances by @snipe in #18870
- Fixed #18869 - skip mail test if no
MAIL_REPLYTO_ADDRis given by @snipe in #18871 - Fixes #9037 - Added breadcrumbs to top breadcrumb trail by @snipe in #18872
- Fixes n+1 on history by @snipe in #18878
- Fix soft deleted companies in migrations by @snipe in #18885
- Added #8414 - acceptance sign in place by @snipe in #18884
- Resend acceptance on user page by @snipe in #18895
- Fixed #7418 - Ability to toggle requestable on checkin/checkout by @snipe in #18900
- adds #18868 options to Eula Purge Command by @Godmartinz in #18882
- Fix backup disk driver configuration for S3 support by @ArturoSirvent in #18710
- Added #14662 - Allow (soft) deletion via ldap sync by @fvollmer in #18889
- Display effective permissions on user view by @snipe in #18901
- Small info panel tweaks by @snipe in #18912
- Fixed RB-20958 - company display name in custom reports by @Godmartinz in #18914
- Fixed #18367 - Added option to audit by serial in quickscan audit by @snipe in #18924
- Fixed display of email setting on category show page by @marcusmoore in #18916
- Added translation and better error messaging for API labels by @Godmartinz in #18915
- Update
snipeit.shscript to add support for CentOS/Alma/Redhat 10.x by @Husky-Devel in #18908 - Fixed #18172 - Encrypted custom fields not correctly decrypted in custom asset report by @snipe in #18926
- Enforce basenames on filenames by @snipe in #18927
- Added #18920 - sort by EULA in categories by @snipe in #18930
- 🎥 Small tweak to info element status by @snipe in #18932
- [FD-54740] Fixed managing user avatar via API by @marcusmoore in #18874
- Refactor show/hide info button into blade component by @snipe in #18936
- Fixed #18939 - blank audit field in scanner audit screen by @snipe in #18942
- Bumped phpspec/prophecy to allow installing on PHP 8.5 by @marcusmoore in #18945
- Fix redirecting users to their intended URL's when logging in via SAML by @uberbrady in #18937
- Mobile OAuth Client Endpoint by @spencerrlongg in #18947
- Fixed test name by @marcusmoore in #18948
- 🎥 Added password toggle JS/HTML by @snipe in #18950
- Added PHP 8.5 to Action tests by @marcusmoore in #18946
- 🖼️ Added visibility icons in custom fields forms by @snipe in #18961
- Fixed #18896 - Audit visibility fix by @snipe in #18910
- Add custom fields to EULA pdf by @snipe in #18963
- Use new laravel SCIM server by @uberbrady in #18184
- Fixed #18951 - maintenance permissions by @snipe in #18964
- 🎥 Fixed #18952 - allow non-image files to be uploaded on create/edit maintenances by @snipe in #18965
- Switch to PHPv8.2-compatible way of invoking a constructor and a method by @uberbrady in #18966
- Change capitalization on SCIMUser; Linux filenames are case-sensitive by @uberbrady in #18970
- 🎥 Advanced search improvements by @snipe in #18969
- Add new unique constraint and improved nonce-checking logic for SAML by @uberbrady in #18979
- Throw 4xx SCIMExceptions when SCIM clients send bad data by @uberbrady in #18980
- Improved test macros for streamed content by @marcusmoore in #18982
- Allow custom report to filter on assigned/unassigned by @snipe in #18983
- Fixed namespace for test class by @marcusmoore in #18967
- Fixed #18959 - refresh data on checkout notification by @snipe in #18985
- Fixed #18905 - update location of child assets if parent asset is checked in by @snipe in #18986
- Fixed #18987 - SCIM error on mis-mapped fields by @uberbrady in #18991
- 🎥 Added reports index by @snipe in #19000
- SCIM - Don't 500 on malformed email addresses input by @uberbrady in #18998
- Fixed crash on checkout outside of company via API by @snipe in #19002
- Update print inventory view with indirect assignments table by @Godmartinz in #18629
- SCIM - Widen exception scope in emails; similar treatment for phones by @uberbrady in #19008
- 🎥 Added bulk deletion of licenses by @snipe in #19009
- Change branch of home-forked SCIM server to re-introduce logging by @uberbrady in #19007
New Contributors
- @ArturoSirvent made their first contribution in #18710
- @Husky-Devel made their first contribution in #18908
Full Changelog: v8.4.1...v8.5.0