Skip to content

Security and limits

What ShellEasy protects, from whom, and where the protection ends. This page summarizes the project’s threat model in plain words; where something is not verified, we say so.

Status: pre-alpha, version 0.1.0. Cryptography uses standard primitives and documented choices, not verified by third parties.

What it protects

Credentials
Private keys, passphrases and server passwords are encrypted twice: inside an encrypted database and, one by one, with a dedicated encryption tied to each individual record.
Host list
Hosts, usernames, folders, tags, snippets and tunnel rules are stored in the encrypted database, not just the passwords.
Server keys
On the first connection you compare the server’s fingerprint. If the key changes later, the connection is blocked and cannot be accepted on the fly.
Interface
The app’s interface never receives secrets: only the code that opens the connection sees them.
No service of ours
No account, no telemetry, no automatic updates. The only outgoing connections go to the servers you open and, only if you turn it on, to the AI assistant’s server.

Who it protects you from

The main scenario is someone who gets the app’s files without the Master Password. For example:

Stolen or lost computer
Even a copied backup (Time Machine, cloud, external drive), another user on the same computer or a program that reads the files but does not know the password.
A hostile server
Malicious file names, output with special sequences, changing keys: dangerous names are discarded before anything is written to your disk.
A crafted file
A .shelleasy file or a ~/.ssh/config built to do harm: the import shows a preview, makes a safety copy and never runs anything (ProxyCommand is not supported).
Another machine on the network
Tunnels listen only on 127.0.0.1 by default; if you choose an address reachable from the network, the app warns you.
A computer left unlocked
Mitigated by auto-lock after 15 minutes of inactivity.

What it does not protect

An unlocked, compromised computer
If someone controls the computer while the vault is unlocked, they can read memory, log the keyboard or ask the app to export. No local vault resists this.
A compromised system
A compromised operating system or firmware is outside the perimeter.
A weak password
Whoever has the files can try passwords offline: each attempt is costly, but a weak password stays weak. The Master Password cannot be recovered: if you lose it, the data is lost. That is why an export is a good idea.
Sessions and tunnels already open
They stay active after the vault locks: to close them you have to close the sessions or the app.
Memory
Copies of secrets may remain in memory, in swap or in a hibernation file even after locking.
What passes through sessions
Terminal output, transferred files and the clipboard are not encrypted at rest and depend on your computer and the server.
The .shelleasy exports
They are protected by their own password for their whole lifetime: store them the way you would store keys.
Restoring old copies
Whoever replaces the database with an earlier copy gets old data, and the app does not notice. If you suspect the password has been compromised, changing it is not enough: create a new vault with a new password and import an export.

What stays visible to anyone with the files

Whoever has the files but not the password cannot read the data, but can see:

The data folder
That a ShellEasy folder exists, the names of its files, their sizes and modification dates.
The vault parameters
Salt and key-derivation costs: they are not secret, but they show how much an attempt costs.
Differences between two copies
With two copies of the database you can see which blocks changed, not what they contain.
Outside the vault
Depending on the system: recent folders, local shell history and temporary files from remote editing while they are open.

AI assistant, optional

It is off by default and includes no model: you connect Ollama, LM Studio or llama.cpp. By default the text goes only to your computer; a non-local server requires explicit confirmation.

Every request goes through a preview: the text shown is the text that is sent, to the destination shown. A filter masks private keys, tokens and known passwords, but it cannot recognize everything: it does not see a password written in plain text with no name that gives it away, nor sensitive information that is not a secret, such as host names and paths.

The suggested command is never run: it is inserted into the prompt and you launch it yourself. The explanation can be misleading and the command harmful, so read before pressing Enter.

What is not yet verified

Signed builds
The macOS and Windows packages are not signed yet.
Other platforms
Fingerprint unlock is designed for macOS; Windows Hello and Linux are not implemented yet. Behavior on real Windows and Linux machines still needs to be tested.
AI assistant
It has been tested with a simulated server, not yet with real Ollama, LM Studio and llama.cpp.
App window
There is no Content-Security-Policy: it would be an extra layer of defense, not the fix for a known problem.
External review
Recommended before version 1.0 and before recommending the app for production credentials. It has not been done yet.

Coordinated vulnerability disclosure

Write to security@shelleasy.app with the version, operating system, reproduction steps and impact. Do not send unnecessary secrets or third-party data. Test only on authorised systems and data; stop if you risk causing harm or involving third parties. Denial of service, social engineering and access beyond what is necessary are excluded.

For good-faith research complying with these conditions, APDSoftware commits not to bring legal action based solely on the research and reporting so conducted. This does not bind third parties or authorities or authorise access to their systems. We aim to respond within 5 working days and provide an initial update within 15; these are not guaranteed remediation times. We coordinate disclosure according to risk and legal obligations. No payment is offered; public acknowledgement requires your agreement. Report data is covered by the privacy notice.

Read the full threat model →