Repository navigation
Releases: PassTunnel/passtunnel
Releases · PassTunnel/passtunnel
Release list
PassTunnel 1.1.4
Immutable
release. Only release title and notes can be modified.
Fixes
- Reject control characters in VPN hosts and configuration values (#57)
PassTunnel 1.1.3
Immutable
release. Only release title and notes can be modified.
PassTunnel 1.1.2
Immutable
release. Only release title and notes can be modified.
Fixes
- Bundle openvpn 2.7.8 with OpenSSL 4.0.3 (#10)
PassTunnel 1.1.1
Immutable
release. Only release title and notes can be modified.
Added
- MCP bundle for Claude Desktop. Every release now includes
PassTunnel-mcp-<version>.mcpb:
double-click it to add PassTunnel's MCP server to Claude Desktop (and other clients that install
MCP bundles), with a setting to allow connecting and disconnecting (off by default). The bundle
starts the server of the installed app, so PassTunnel must be in /Applications. - PassTunnel's entry in the MCP Registry (
io.github.PassTunnel/passtunnel) now points at that
bundle, so clients that install from the registry can set it up directly.
PassTunnel 1.1.0
Immutable
release. Only release title and notes can be modified.
Added
- Use PassTunnel from AI assistants.
passtunnel mcpis a Model Context Protocol server for
Claude Code, Claude Desktop and other MCP clients: it lists profiles, reports their state and the
helper's, reads VPN logs (with credentials redacted) and diagnoses problems. It is read-only
unless started with--allow-connect, which adds connecting and disconnecting; protected profiles
still ask for Touch ID on your Mac. It never returns passwords, TOTP secrets, codes or
configuration files. Setup in the README, details in SECURITY.md. --jsonon every command with a result (connect,disconnect,toggle,set,add,
import,export,rm,secret,default,pin,unpin,log,helper status,version),
in addition tostatus,code,listandshow. Failures print
{"error":{"code":…,"message":…}}with a stable code. See docs/CLI-JSON.md.connect --wait --timeout SECONDSanddisconnect --wait: bounded waits for scripts.--no-input(orPASSTUNNEL_NO_INPUT=1): never ask on the terminal, fail instead.
--no-auth-prompt: fail instead of showing Touch ID.passtunnel versionandpasstunnel log ID -n N(only the last N lines).list --jsonandstatus --jsonalso reportrequire_auth,protectedandauto_reconnect;
status --jsonaddsduration_seconds.
Changed
- More specific exit codes.
2invalid argument (also invalid values such as a bad TOTP
secret, and no default profile),3profile not found,4confirmation cancelled or not possible
(a cancelled Touch ID prompt exited 1 before), or input needed without a terminal,5helper
missing or outdated (helper statusnow exits 5 also when the helper is enabled but outdated or
not answering),6connection failed,7timeout.0,1,2,3(not connected, for
status ID) and130keep their meaning. passtunnel rmwithout--yesnow fails withinput_required(exit 4) instead of deleting when
standard input is not a terminal (a script, a pipe) or with--no-input; declining the question
now exits 4.- OpenVPN now always runs with
verbat most 4 (3 when the configuration sets none). Higher levels
write data-channel keys and packet contents into the log.
PassTunnel 1.0.1
Security
- Confirmations are bound to the server. With Confirm with Touch ID, the prompt names the server,
and a confirmation only counts for the server settings the profile had at that moment. If they
change, PassTunnel asks again, and an automatic reconnect does not happen: a notification asks you
to connect and confirm yourself. The helper starts only the exact OpenVPN configuration the app
checked. When an OpenVPN configuration lists several servers, the prompt names the first and how
many others there are. - The VPN tools run only after their loaded code is checked. The helper starts
openvpnand
openfortivpnsuspended and lets them run only once the code the system actually loaded carries
PassTunnel's signature and is the exact build this version was released with. - The VPN tools and their libraries run from a root-owned copy. The helper copies
openvpn,
openfortivpnand their libraries (OpenSSL, LZO, LZ4, pkcs11-helper) out of the app, checks that
every copy is the exact build this version was released with, and runs them from there, so
changing or renaming the app bundle afterwards changes nothing that runs as root. - The bundled OpenSSL ignores Homebrew files on your Mac. No configuration, providers or engines
are loaded from Homebrew paths, and certificates are checked against the system's CA bundle
(FortiGate too). - The helper is never replaced silently by another copy. It updates itself only from the copy in
/Applicationsand only to a newer helper. Replacing it on request from the command line asks you
first, and installing an older helper over a newer one shows a warning. - Signed update feed. The update feed itself must be signed, and updates are checked before they
are unpacked. - Keychain items are replaced, never updated in place, so a value is never written into an item
another app created. A new profile no longer picks up items left behind under its ID, and a
replaced Touch ID key record is refused. - Credentials stay out of configuration files. A user name and password embedded in an imported
.ovpnmove to the profile and the Keychain. Shared profiles no longer contain embedded sign-in or
proxy credentials, and importing a shared profile drops someone else's sign-in. - Copied codes are cleared after 30 seconds, stay on this Mac (no Universal Clipboard) and are
hidden from clipboard managers, in the app and withpasstunnel code -c. - The OpenVPN configuration check now rejects backslash escapes that OpenVPN itself refuses, and a
backslash at the end of a line. - A Keychain write that fails keeps the previous value, and an OpenVPN profile whose
configuration cannot be read no longer connects without the configuration check. - The
passtunnel debug droptest command is no longer part of release builds.
Changed
brew uninstall --zap --cask passtunnelalso deletes PassTunnel's Keychain items.openvpn,openfortivpnand their libraries are bundled only in pinned versions.- A copy of PassTunnel outside
/Applications(for example in~/Applications) no longer updates
the helper automatically, andpasstunnel helper install/updateare refused by it. Move the
app to/Applications, or install and update the helper in the app (Settings → Helper). - Legacy PKCS#12 files encrypted with RC2 can no longer be loaded: OpenSSL's legacy module is never
loaded. Re-export them with modern encryption (see the FAQ in the README).
PassTunnel 1.0.0
The first public release.
One-time codes
- One-time codes filled in for you. TOTP secrets are kept in the macOS Keychain; PassTunnel
sends the current code with your password when you connect, and waits for a fresh code when the
current one is about to expire. - Code format templates: append, prepend,
password:code,password,codeor any custom
template, or send the code separately (OpenVPN static challenge, FortiGate OTP field). - Authenticator-style main window with live codes, a countdown ring and copy on click.
- QR import from a screenshot, an image file or the clipboard; Base32 secrets and
otpauth://links work too. - Optional auto-type of the current code with a global shortcut.
VPN client
- OpenVPN and FortiGate SSL VPN, using signed copies of
openvpnandopenfortivpnbundled in
the app. - Privileged helper registered through macOS's own
SMAppServiceand approved once: no admin
password at every connect and no sudoers rule. It only runs the tools inside the app, with
sanitized configurations. - Menu bar badges per pinned or active profile, with five color palettes and alerts for
unexpected drops. - Stays connected: auto-reconnect with backoff, health checks, reconnect after wake and a
reminder before a session limit runs out. - Several VPNs at once, and a check that refuses to start a full tunnel over another VPN.
- Shareable
.passtunnelprofiles without passwords, secrets or user names.
More
- Confirm with Touch ID per profile: off, before connecting, or before connecting and showing
codes. Secrets are then encrypted with a Secure Enclave key that only Touch ID or your Mac
password unlocks. - Command-line tool
passtunnelwith the same features as the app,--jsonoutput and shell
completions. - Automatic updates (signed with EdDSA, checked before installing); the helper updates itself
after an app update as soon as no VPN connection is active. - English and Turkish user interface.