A clean, fast, cross-platform Microsoft Graph desktop client for IT admins.
yay -S swissknife-graph-bin
Updates arrive automatically through your AUR helper.
The release where the app stops being a Graph browser and starts being a tool
for the tickets you actually get.
Every page opens as a grid of the jobs it can do, each with a one-line
explanation. No more toolbar buttons that hide four unrelated operations behind
a word like "Membership": Users went from 5 drawers to 15 tiles, Intune's single
"Actions" drawer became three (lock / retire / wipe) so the difference between
them is stated instead of implied by three red buttons side by side.
English and Russian by your own words ("ΠΊΠ°Π½Π°Π»", "same access", "ΠΏΠ°ΡΠΎΠ»Ρ"), each
landing on the exact form that performs it.
will bite you: a private channel only accepts existing team members, dynamic
and Exchange-managed groups cannot be changed through Graph, removing the last
license deletes the mailbox after ~30 days.
or the raw result pane leads. The table, JSON and tree views are unchanged;
they are just no longer the whole screen. The choice is remembered per page.
disappears in five seconds. Clear result returns to the tiles.
Onboarding and offboarding are two tiles instead of two tabs, so the report of a
run no longer disappears when you look at the other flow. Fields are labelled
instead of relying on placeholders, the sign-in name autocompletes the tenant
domains, and the warnings that matter (license removal kills the mailbox,
wiping is irreversible, deleting takes the mailbox and OneDrive with it) appear
next to the form the moment you tick the option that causes them.
under a name ("Support L1") and apply them to the next hire in one click.
Offboarding keeps its two built-in phase presets.
teams instead of resetting each time you pick a different one.
Two steps that used to be left to whoever noticed:
and drop the leaver β in that order, so nothing is ever left ownerless. Owned
applications and service principals are deliberately untouched.
cancelled with a notice ("the organizer has left the organization"); solo
appointments are simply deleted. Meetings they only attend belong to somebody
else and are left alone.
Both are options on the offboarding form, each reported as its own step.
The local action log moved into Run history as a second tab, next to the
multi-step runs. Two journals in two different menu entries was one too many.
"Give Bell the same access Whitfield has" is one screen now. It reads both
people's groups, admin roles, teams, private and shared channels and licenses,
shows the difference, and copies only what the target is missing.
reason, never silently skipped.
journalled and lands in the local audit log.
someone is carrying access nobody else has.
"Why can this person not sign in?" is a tile: one user's sign-ins, failures
first, over a chosen window, with the Entra error behind each row. Directory
changes can be filtered by the person who made them. Previously both were a
fixed dump of the last 50 events.
Every long operation now says so: a spinner and a live line in the page header
(visible in all view modes), the current stage for multi-step scans ("Source Β·
channels of Intermark Team (3/12)"), a cancel button, and buttons that refuse a
second click instead of failing with "an operation is already running".
Offboarding, Cleanup, Bulk / CSV and Usage reports are tiles too, with their live
console and report in the data pane:
OneDrive to another account" are separate tiles; the backup pool has its own.
Source and target are picked by name instead of typed.
instead of a tab strip, each stating what it will do to your data.
chosen tile decides which columns the CSV is validated against.
the OneDrive storage") rather than the Graph report id.
does: who it applies to, who is excluded, which apps and client apps, what it
demands (MFA, a compliant device, or a block), and its risk levels. The raw
JSON is still there, folded away. Enterprise app consents keep their split
between delegated and application permissions, with the warning that the
latter act without any signed-in user.
SKU GUID; licenses are now picked by product name with seats used/left.
license and group columns replace skuId and groupId, resolved once before the run so a typo
fails immediately instead of after twenty half-applied rows.
names and periods are translated.
a Go service returning a nil slice marshals to null, and the first .map()
over it threw. Every list response is normalised to an array now.
400 Request_BadRequest on a UPN containing an apostrophe, a leading $ or the guest #EXT# marker β deep drive paths are
built from the object id.
Audit, Licensing and the shared pickers now go through i18n.
already require (GroupMember.ReadWrite.All, TeamMember.ReadWrite.All,
ChannelMember.ReadWrite.All, RoleManagement.ReadWrite.Directory,
User.ReadWrite.All).
Group.ReadWrite.All; cancelling meetings needs Calendars.ReadWrite. Both steps are opt-in on the offboarding form.
history.
AuditLog.Read.All, as before.The biggest release yet: operations became observable, cancellable, bilingual
and restart-proof β and the app learned to talk to your team.
processed, backup destination, groups removed, failed steps in red.
setup. Guide β
Run history page still shows every step and log line.
finished in the cloud are re-attached, the queue continues, nothing repeats.
every enrolled device of the departing user β one report step per device.
method-by-method.
the mailbox type and warns loudly if the mail would die in ~30 days.
next to the OneDrive backup. Requires Microsoft-approved Chat.Read.All
(protected API) β the step explains exactly what to request until then.
including sizes, reasons and summaries.
(everything-except-licenses β convert to shared mailbox β licenses only)
Exchange-managed groups get a plain-language explanation
profiles and settings are preserved.
by an idle watchdog instead of a blanket timeout that killed big files
their progress events
Full Changelog: https://github.com/Nemu-x/SwissKnife-for-MS-Graph/compare/v0.8.0...v0.9.0
entirely inside Microsoft's cloud β bytes no longer transit your machine,
folders are copied recursively in a single async operation.
Real-world measure: a 4.7 GB / 936-file OneDrive went from hours to minutes.
cannot start; re-runs skip items that already exist in the target.
while running and a β/β with details when done.
and live overall progress ("1.9 GB / 4.7 GB β 41%").
run and come back β steps, progress and the final report survive; the
completion toast arrives even from another page.
permanently deleted after ~30 days β convert the user to a shared mailbox
first to keep mail.
secrets) are kept until you explicitly close them.
permissions) are cached and restored when you return to the page.
Program Files\Nemu-x\SwissKnife for MS Graph.
stopped automatically before upgrade.
log and UI settings is an explicit opt-in.
SwissKnifeGraph.exe. waiting status no longer treated as failure, 2-hour per-item cap).
> Upgrade note: v0.7.0 installed to a different folder with its own
> uninstaller entry, so installing v0.8.0 does not remove it. Please
> uninstall the old version manually (Apps β "swissknife-app") β your
> profiles, secrets and settings are stored per-user and are not affected.
> The next release will handle this migration automatically.
Full Changelog: https://github.com/Nemu-x/SwissKnife-for-MS-Graph/compare/v0.7.0...v0.8.0
The Offboard playbook now covers the full checklist, not just the basics. New optional steps, each reported individually:
Full sequence: block sign-in β revoke sessions β OOF β forwarding β GAL β calendar β OneDrive backup β groups β licenses β (optional) delete.
A new page for mass operations driven by a CSV file: create users, assign licenses, add to groups. Column-validated preview, downloadable templates, sequential execution with live progress, cancel between rows, and a per-row success/failure report.
/invitations, with optional invitation emailA new page for tenant audits:
One click to issue a new client secret on an app registration (complements the existing expiry monitor). The secret is shown once β copy it or lose it, exactly like the portal.
SHA256SUMS.txt signed with minisign, as beforex.y.z-dev locally); the update checker no longer claims a dev build is "the latest version"The new features need additional Application permissions (+ admin consent): MailboxSettings.ReadWrite, Mail.ReadWrite, Calendars.ReadWrite, GroupMember.ReadWrite.All, UserAuthenticationMethod.ReadWrite.All, User.Invite.All, Application.ReadWrite.All, Policy.Read.All. See the Permissions wiki page for the per-feature matrix.
Full Changelog: https://github.com/Nemu-x/SwissKnife-for-MS-Graph/compare/v0.6.0...v0.7.0
Microsoft Graph desktop client for IT admins. Windows Β· macOS Β· Linux.
Secrets in the OS keychain, token stays in the Go backend, every destructive action needs typed confirmation + local audit log.
Dashboard, Playbooks, user lifecycle, MFA reset & roles, licensing, Teams/Groups/Chats, mail send-as, Files, Devices + BitLocker, Intune, app-secret expiry, usage reports, service health, raw Graph playground. Bilingual EN/RU, dark/light, read-only mode, in-app update check.
Full Changelog: https://github.com/Nemu-x/SwissKnife-for-MS-Graph/compare/0.5...v0.6.0