Releases: plugsightlabs/plugsight-public
Release list
Plugsight 1.1.1
A small correctness and polish release. Plugsight stays a local-only detector: it
observes and explains, and it does not block or claim to stop hardware attacks.
Fixed
- The
clamdSocketPathpolicy setting is now honored. It was accepted and stored
but the scan engine discovery ignored it, so pointing Plugsight at a non-default
clamd socket had no effect. Discovery now reads the configured socket at daemon
startup; leaving it unset keeps the Homebrew default.
Changed
- Swept stray dashes out of the daemon's runtime and log strings for punctuation
consistency with the rest of the product.
Plugsight 1.1.0
An app-wide UX overhaul. The app now answers "is this device safe" directly
instead of showing raw telemetry. Plugsight stays a local-only detector: it
observes and explains, and it does not block or claim to stop hardware attacks.
Added
- Devices home. The main window opens on your devices, each with a safety
verdict (safe, needs attention, unsafe, or not checked), the reasons behind
it, and one recommended action that actually performs what it names. - Real macOS notifications. A single notifications switch plus a separate
new-device checkbox in Settings; unsafe verdicts and (optionally) new devices
produce a system banner. If notification permission is denied, Settings says
so and shows the steps to fix it. - Activity view. Replaces the Timeline tab: history on request, reachable
from the Devices home, with working filters and humanized day headers. - Groundwork for holding new drives until they are scanned. It ships inactive in
this release: Apple has granted the Endpoint Security entitlement, and the hold
path will be switched on in a later release once it is verified on real
hardware. Nothing in the app claims the capability before then.
Changed
- Settings rebuilt: each permission row explains its state in plain words with
step-by-step guidance that opens the exact System Settings pane, and the
extension row reports its honest status instead of offering approvals that
cannot succeed. - The menu-bar popover sizes itself to its content, never clips, and its
Details action lands on the right device.
Fixed
- Scan history is now filtered per device, with dates and failure reasons; one
device's scans no longer appear under every device. - Times render in your own locale and time zone everywhere; no more UTC strings
shown as if they were local. - Scans interrupted by a daemon restart are reconciled instead of showing as
running forever, and internal-volume scan rows no longer clutter history. - The daemon reports its real installed version.
Plugsight 1.0.1
A fixes release for the menu-bar popover, the Settings extension row, and
scan-on-mount. Plugsight stays a local-only detector: it observes and explains,
and it does not block or claim to stop hardware attacks.
Fixed
- Scan-on-mount no longer runs on the Mac's own internal storage. Disk
Arbitration reports every mounted volume, so the boot volume and Apple's APFS
system volumes (Preboot, VM, xarts, iSCPreboot, Hardware, Update, Data) were
each scanned and, being unreadable, reported "Scan of ... failed (engine
error)". Only drives you plug in are watched now; internal and network volumes
are skipped, so that wall of errors is gone. - The menu-bar popover no longer clips its top. With a busy list the content
could be sized taller than the popover and get centre-clipped, hiding the
"Plugsight" title and the Open Plugsight button off the top of the box.
Changed
- The Settings "Deeper device monitoring" row now reflects its real state.
Instead of one generic "needs attention" look for every not-on case, it reads
as On, Waiting for your approval, or Not set up, each with its own icon and a
one-line next step. Its button opens the system approval prompt directly, so
the extension is no longer a dead end that drops you on a pane with nothing
highlighted.
Plugsight 0.1.0
First tagged build of Plugsight: a local-only macOS menu-bar app plus MCP server
that watches what plugs into your Mac and tells you, honestly, what it can and
cannot see. It observes and explains; it does not block, prevent, or claim to
stop hardware attacks.
Added
- Menu-bar app (
Plugsight.app). Nine surfaces (seven SwiftUI: menu-bar
glyph, popover, event timeline, live device list, device inspector, onboarding,
and settings; plus a macOS notification and the MCP face). View models are
CI-testable independently of a live socket. - Daemon (
plugsightd): local JSON-RPC-over-UDS API (apiVersion1) behind
a per-boot auth token, event fan-out, and a closedEventKindCatalogof 23
event kinds surfaced via--print-catalog. - Device collection: IOKit / HID-timing / DiskArbitration sources composed
behind the frozenCollectorEventseam;PlugsightCorestays platform-neutral
(guarded byops/check-seam.sh). - Detection: mismatch rules, a behavioral HID-timing score with an explicit
score-payload caveat, a shipped legit-composite allowlist, and trust tiers. - ClamAV integration. Optional on-device scanning: engine discovery, scan
orchestration, quarantine + restore, and definitions-age reporting. ClamAV is
installed by the user (Homebrew), guided from Settings. - Endpoint Security extension: a ruthlessly thin ES/XPC layer over a pure,
CI-testable decision core (mount-hold, fail-open, XPC peer validation). Bundled
only when the ES entitlement grant is present; the capability table says so
when it is not. - MCP server (
@plugsight/mcp): 19 tools as a thin stdio-MCP adapter over
the daemon API, with a generated contract (mcp/contract/tools.json) and a
round-trip test against a live seeded daemon. - Honesty drift gate:
ops/check-drift.mjsfails CI if the README / docs
claim more or fewer tools or event kinds than the software registers, or if a
banned marketing claim appears outside a quoted negation. - Ship pipeline.
ops/release.mjs: one command, seven fatal-on-failure
steps (preflight, gates, build, sign+notarize+staple, npm publish, GitHub
release, post-flight), with a--dry-runmode that runs preflight, gates, and
the build for real and prints the release-time steps it would run.
Manual checks (hardware/human, outside CI)
These require real hardware or a human and are validated out of band, not in CI:
- Real-hardware USB attach/detach probe.
- EICAR vs. real ClamAV end-to-end.
- SIP-relaxed ES activation + live
AUTH_MOUNThold/release. - Accessibility Inspector audit + final canon review of the app snapshots.
- One real signed + notarized dmg opened on a second machine.