Releases: sling86/its-releases
v0.2.55
its v0.2.55
Platforms: Windows (x64)
Quick install
Windows (drops its.exe into %LOCALAPPDATA%\Programs\its and adds it to the user PATH):
irm https://github.com/sling86/its-releases/releases/latest/download/install.ps1 | iexOr download ItsSetup.exe for the Inno Setup installer.
Full asset list below. docs/ · CHANGELOG.md · LICENSE — all auto-synced into this repo on every release.
Changes
Added
its rmm updates approve/defer— per-KB Windows-Update approval, the
missing half of the patch workflow. TRMM installs only updates with
action="approve", so an unapproved box was a silent no-op install. Target a
single--kb KB5034441(matched by digits, so5034441works too) or
--all-pending(needs--confirm; previews otherwise). Verified against live
TRMM.updates installnow pre-checks for approved updates and points you at
approveinstead of no-opping;updates listshows the per-KBaction
column.its rmm updates install/scanfleet fan-out —--all-online/
--client/--site/--policy(online agents, preview-then---confirm,
batched), mirroringscripts run.its rmm updates reportnow splits pending into separatecritical/
importantcolumns and sorts most-critical first.--ai-flat— AI mode without the columnar envelope (plain row objects),
for consumers that don't decode{_fmt:"cols"}. The columnar decoder
(expandColumnar) is now exported, and the envelope carries a_vformat
version. The columnar format is documented indocs/cli.md.its rmm checks editcan now retune script-check--timeout/--args.its dokploy envpush/set/unset/copy gained--dry-run— a value-safe
preview (key names + action, never values) that writes nothing.
Fixed
its dokploy environments push— added the empty-file wipe guard
(--forcerequired to push 0 vars) that the app-levelenv pushalready had.- Removed stale
eventlogcheck-type mentions from help/docs and the bogus
updates install --rebootexample (the flag never existed; reboot-after-install
is a patch-policy setting).
Security
--dry-runno longer leaks secrets — the request-body preview now masks
secret values embedded inKEY=valuestring fields (e.g. a dokploy env body),
which the field-name redactor couldn't see. Honours--unsafe.
v0.2.54
its v0.2.54
Platforms: Windows (x64)
Quick install
Windows (drops its.exe into %LOCALAPPDATA%\Programs\its and adds it to the user PATH):
irm https://github.com/sling86/its-releases/releases/latest/download/install.ps1 | iexOr download ItsSetup.exe for the Inno Setup installer.
Full asset list below. docs/ · CHANGELOG.md · LICENSE — all auto-synced into this repo on every release.
Changes
Added
--ailossless columnar compaction — uniform object arrays (Graph
entity lists, RMM agents, Wrike tickets, etc.) are emitted as
{_fmt:"cols",consts,fields,rows}: field names stated once, columns with a
single value across all rows factored intoconsts. Lossless and still
valid JSON; 16–70% smaller on real payloads.--ai | --stdinpipelines are
unaffected — the envelope is rehydrated transparently.its rmmchecks + fleet — typedpolicies add-check,checks
create/edit/results plus a fleet failing-sweep,fleet patch-report, and
checks run-now. Agents list gainedboot_time+ humaniseduptimeand a
--rebooted-sincefilter.its unifi clients list --jsonnow exposessw_mac/sw_port.
Changed
its dokployenv handling hardened against secret-clobber, with secure
copy/reveal (#20).
Fixed
--aitruncation bug — the old char-basedmaxCharscut JSON mid-token
(producing invalid JSON) and silently dropped rows past the cut. It now
drops whole rows and records the count in_truncated.its rmm checks run— corrected endpoint, dropped the brokeneventlog
type (live-verified).its bw— redact TOTP seed in output, honour--copyin thetotp
table.
v0.2.53
its v0.2.53
Platforms: Windows (x64) · Linux (x64)
Quick install
Linux (drops its into ~/.local/bin):
curl -fsSL https://github.com/sling86/its-releases/releases/latest/download/install.sh | bashWindows (drops its.exe into %LOCALAPPDATA%\Programs\its and adds it to the user PATH):
irm https://github.com/sling86/its-releases/releases/latest/download/install.ps1 | iexOr download ItsSetup.exe for the Inno Setup installer.
Full asset list below. docs/ · CHANGELOG.md · LICENSE — all auto-synced into this repo on every release.
Changes
Added
- New provider
m365health(m365) — Microsoft 365 service health, reusing
the shared Graph app-only creds:m365 health overview(per-service status),
m365 health issues [--service] [--active](incidents/advisories), and
m365 messages list [--days N](message-centre posts). Needs
ServiceHealth.Read.All+ServiceMessage.Read.All. its rmm agentsnow surfacesboot_time+ a humaniseduptimecolumn,
plus a--rebooted-since <ISO|7d|24h|30m>filter.its dokploy apps env-drift [--project] [--drift-only]— fleet sweep
comparing each app's saved env record against its live runtime env (the
generalised Swarm env-freeze detector).its exo rules auditandrules get <name>— dump transport-rule
conditions/actions and flag mail-exfiltration verbs (RedirectMessageTo,
BlindCopyTo, AddToRecipients, CopyTo).its intune compliance why <device>— per-device failing-compliance-setting
drilldown.its unifi portforwards list(aliasport-forwards/ports) — WAN
port-forward rules with thesource("any" = open to the internet) column.its az advisor list [--category]— Azure Advisor cost/security/reliability/
performance recommendations.its bw items create/updatecustom fields —--field name=value(text),
--field-hidden name=value(hidden), and--field-remove name(update only);
comma-separated for multiple.updateupserts by name and preserves everything
omitted.
Fixed
- Help-UI mutation gate.
POST /api/resulthad no read-only enforcement — the
WebSocket-bridge hardening had missed its in-process twin, so a mutation could
run via the REST path. Now fail-closed (403) like the bridge. its dokploy env pushempty-wipe guard. Refuses to push an empty/all-comment
file (which wholesale-replaced an app's env with nothing — unrecoverable) without
--force.- Secret redaction now catches camelCase keys.
accessToken,refreshToken,
sharedSecret,preSharedKey,buildSecretsetc. were slipping through the
redactor (e.g. viagraph getpassthroughs); the key pattern now matches at
word/camelCase boundaries. its exodestructive mutations now enforce--confirm(fail-closed) — six
commands documented it but never checked it.its sp recycle-bin list <site>—listRecycleBinwas paging the wrong Graph
collection (OneDrive bundles); now uses the classic SP REST recycle bin, with
corrected item-type labels.its m365 healthclassifies service status case-insensitively (the Graph wire
format casing is inconsistent).
Changed
- Dokploy
shellQuote(an SSH-injection guard) is now single-sourced fromssh.ts
rather than duplicated across three files.
v0.2.52
its v0.2.52
Platforms: Windows (x64) · Linux (x64)
Quick install
Linux (drops its into ~/.local/bin):
curl -fsSL https://github.com/sling86/its-releases/releases/latest/download/install.sh | bashWindows (drops its.exe into %LOCALAPPDATA%\Programs\its and adds it to the user PATH):
irm https://github.com/sling86/its-releases/releases/latest/download/install.ps1 | iexOr download ItsSetup.exe for the Inno Setup installer.
Full asset list below. docs/ · CHANGELOG.md · LICENSE — all auto-synced into this repo on every release.
Changes
Added
its dokploy apps env-runtime <app> [--show-values] [--diff]— read the env
vars actually present in the running container (viadocker exec printenv),
the ground truth versus the saved record.--diffflags vars saved in the
record but missing from the container (the un-applied / Swarm-freeze case) and
runtime-only vars. Values redacted by default.its dokploy apps apply-env <app>— make a saved env change actually reach
the container. On Docker Swarm a plainredeploydoes not converge
env-only changes; this stops the app (removes the swarm service), redeploys so
Dokploy recreates it from the current env, then verifies every saved var is
live. Brief outage.its dokploy env set <app> … --deployandits dokploy env unset <app> <KEY…> [--deploy]—--deploysaves then recreates the swarm service and
verifies the change landed. A plainset/unsetnow warns that the change is
record-only until applied.
Fixed
its dokploy env setno longer silently fails to reach Swarm containers.
Root cause was a Dokploy 0.29.x Docker Swarm convergence bug:saveEnvironment
persisted correctly but an in-placeservice.updaterolled back to the
creation-time spec, so vars added after creation never reached the container
(Dokploy issues #4232 / #2150). The new--deploy/apply-envrecreate path
is the reliable apply route, andenv-runtime --diffmakes the drift visible.
Security
- Env writes now reject redaction-masked values.
saveEnvironmentand the
shared-env writer refuse any value of***(the display mask), preventing the
footgun where pasting redactedenv/environments envoutput back into a
push/setoverwrites real secrets.
v0.2.51
its v0.2.51
Platforms: Windows (x64) · Linux (x64)
Quick install
Linux (drops its into ~/.local/bin):
curl -fsSL https://github.com/sling86/its-releases/releases/latest/download/install.sh | bashWindows (drops its.exe into %LOCALAPPDATA%\Programs\its and adds it to the user PATH):
irm https://github.com/sling86/its-releases/releases/latest/download/install.ps1 | iexOr download ItsSetup.exe for the Inno Setup installer.
Full asset list below. docs/ · CHANGELOG.md · LICENSE — all auto-synced into this repo on every release.
Changes
Added
its rmm clients create --name <n> [--site <s>]— create a client (TRMM
creates its first site in the same call;--sitenames it, default
Default). Idempotent.its rmm clients delete <id|name> --confirm [--move-to-site <id>]— delete
a client; if it still has agents,--move-to-sitereassigns them first (TRMM
refuses otherwise, now surfaced with a clear message).its rmm sites listnow shows a per-siteagents(agent_count) column,
sourced from/clients/(the flat sites route omits it).
Fixed
its rmm agentslist now populates the client and site columns
(and makes--client/--sitefilters work) — the list endpoint returns these
assite_name/client_name, which were not mapped, so the columns were blank.its rmm sites deletenow returns a clear message for the two expected
400s — "a client must keep ≥1 site" and "site still has agents" — instead of
the raw API error.
v0.2.50
its v0.2.50
Platforms: Windows (x64) · Linux (x64)
Quick install
Linux (drops its into ~/.local/bin):
curl -fsSL https://github.com/sling86/its-releases/releases/latest/download/install.sh | bashWindows (drops its.exe into %LOCALAPPDATA%\Programs\its and adds it to the user PATH):
irm https://github.com/sling86/its-releases/releases/latest/download/install.ps1 | iexOr download ItsSetup.exe for the Inno Setup installer.
Full asset list below. docs/ · CHANGELOG.md · LICENSE — all auto-synced into this repo on every release.
Changes
Added
its entra groups audit-rules [group_id]— scan dynamic groups'
membershipRules for dead user exceptions: hardcoded
userPrincipalName/objectId/mail -eqclauses whose account no longer
exists (missing) or is disabled (disabled— a leaver still pinned). No
arg scans every dynamic group (one paged Graph query); pass a group ID to
scan one.--allalso lists refs that resolve OK. Output is sorted dead-first
and suggests theedit-rule --remove-upnfix. Read-only.
v0.2.49
its v0.2.49
Platforms: Windows (x64) · Linux (x64)
Quick install
Linux (drops its into ~/.local/bin):
curl -fsSL https://github.com/sling86/its-releases/releases/latest/download/install.sh | bashWindows (drops its.exe into %LOCALAPPDATA%\Programs\its and adds it to the user PATH):
irm https://github.com/sling86/its-releases/releases/latest/download/install.ps1 | iexOr download ItsSetup.exe for the Inno Setup installer.
Full asset list below. docs/ · CHANGELOG.md · LICENSE — all auto-synced into this repo on every release.
Changes
Added
its entra groups edit-rule <id>— edit a dynamic group's
membershipRule(closes the ctxc 1052 gap; previously needed a raw
graph patch).--add-upnappends anor (user.userPrincipalName -eq …)
exception (grants a user who doesn't match the rule — OR clauses only ADD, so
existing members are never dropped);--remove-upnstrips one;--set-rule
replaces the whole rule.--confirmrequired; without it, prints a
current→new diff. Guards: refuses non-dynamic groups, no-ops when the UPN is
already present, and (on--add-upn) refuses a UPN that doesn't resolve
unless--force. Note: Graph membershipRule writes are eventually consistent
— an immediate re-read may show the old rule for a few seconds.
v0.2.48
its v0.2.48
Platforms: Windows (x64) · Linux (x64)
Quick install
Linux (drops its into ~/.local/bin):
curl -fsSL https://github.com/sling86/its-releases/releases/latest/download/install.sh | bashWindows (drops its.exe into %LOCALAPPDATA%\Programs\its and adds it to the user PATH):
irm https://github.com/sling86/its-releases/releases/latest/download/install.ps1 | iexOr download ItsSetup.exe for the Inno Setup installer.
Full asset list below. docs/ · CHANGELOG.md · LICENSE — all auto-synced into this repo on every release.
Changes
Added
its rmm policies patch-policy <id>— edit a policy's Windows Update
schedule + per-severity approvals (the WinUpdatePolicy). Flags:
--run-time-hour 0-23,--frequency daily|monthly|inherit,--days mon,wed,fri(weekly),--day-of-month 1-31(monthly),--reboot never|required|always|inherit, and per-severity
--critical|--important|--moderate|--low|--other approve|manual|ignore|inherit.
Partial update — only the flags you pass change.--confirmrequired (affects
every agent under the policy); without it, prints a current→new diff.- Correct route is
PUT /automation/patchpolicy/<winupdatepolicy_pk>/
(the WinUpdatePolicy id, inlined on the policy LIST). The previously assumed
PUT /winupdate/<pk>/is a different route (per-KB update records) and 404s.
Falls back toPOST /automation/patchpolicy/when the policy has no
WinUpdatePolicy yet.
- Correct route is
v0.2.47
its v0.2.47
Platforms: Windows (x64) · Linux (x64)
Quick install
Linux (drops its into ~/.local/bin):
curl -fsSL https://github.com/sling86/its-releases/releases/latest/download/install.sh | bashWindows (drops its.exe into %LOCALAPPDATA%\Programs\its and adds it to the user PATH):
irm https://github.com/sling86/its-releases/releases/latest/download/install.ps1 | iexOr download ItsSetup.exe for the Inno Setup installer.
Full asset list below. docs/ · CHANGELOG.md · LICENSE — all auto-synced into this repo on every release.
Changes
Added
its sp files share— create a sharing link (GraphcreateLink) for a
file/folder and return its URL.--type view|edit,--scope organisation|anonymous(anonymous may be tenant-blocked).its rmm scripts run --raw— emit the script's real stdout verbatim
(status line on stderr) so output can be piped/parsed without unescaping a
JSON-wrapped string; exits with the script's return code.
Fixed
its rmm tasks create— was broken (missing the requiredname) and
incomplete. Now builds the full task in a single TRMM POST with anactions[]
payload and supports manual /--daily-time HH:MM/--weekdays mon,wed,fri
(bitmask) schedules, plus--script,--name,--args,--timeout,
--run-asap. Resolves agents by id / hostname / username, incl. offline.its rmm checks list <agent>— now reads the per-agent
/agents/<id>/checks/route which carries each check's live result
(status / last-run / more-info); the previous/checks/?agent_id=route only
returned policy-inherited definitions with empty results (ctxc 1048).
v0.2.46
its v0.2.46
Platforms: Windows (x64) · Linux (x64)
Quick install
Linux (drops its into ~/.local/bin):
curl -fsSL https://github.com/sling86/its-releases/releases/latest/download/install.sh | bashWindows (drops its.exe into %LOCALAPPDATA%\Programs\its and adds it to the user PATH):
irm https://github.com/sling86/its-releases/releases/latest/download/install.ps1 | iexOr download ItsSetup.exe for the Inno Setup installer.
Full asset list below. docs/ · CHANGELOG.md · LICENSE — all auto-synced into this repo on every release.
Changes
Added
its dokploy environments— manage a project's environment-level shared
env vars (the${{project.VAR}}model), alongside the existing app-level
its dokploy env:its dokploy environments <projectId>— list environments (id, name,
default, shared-var count).its dokploy environments env <environmentId>— show shared vars; keys
visible, values redacted unless--show-values.its dokploy environments push|pull <environmentId> -f <file>— upload /
download the shared env file.its dokploy environments set <environmentId> KEY=value …— set single vars.