Recording contractor and vendor sessions on Linux servers

When an outside contractor works on your servers, a shared login and bash history can't tell you who changed what. Install shellz on those servers and every contractor login becomes a replay with the commands, their output and any files uploaded. The record also helps the agency doing the work, because it settles "what did you change?" with evidence neither side can edit.

Get started freeHow shellz workslast verified

Choose shellz if

  • Contractors or an agency have SSH access to your Linux boxes, and you need to see exactly what they ran and what came back.
  • You run an agency or managed service and want a record of your work on client servers to hand over when questions come up.
  • Contractors have sudo, and any attempt to turn recording off should reach you as an alert.
  • You want it in place before the next maintenance window. Up to 10 active servers cost nothing.

Add an access gateway or PAM tool if

  • Contractors should request access and get approval before each login, with access that expires on its own.
  • Contractors must never hold a password or private key, so a vault has to hand credentials over for them.
  • You need to cut off a contractor mid-session or block commands. shellz watches and records, and nothing more.
  • The work happens on Windows servers, Kubernetes or databases accessed directly, which shellz doesn't record.

At a glance

shellz recordings vs bash history as evidence of contractor work
Capabilityshellzbash history
Ties each command to a personYes, by Linux account and source IPNo, when several people share one login
Shows command outputYes: a playable recording plus searchable textNo, commands only
Includes `ssh host cmd` and SFTP uploadsYesNo
Safe from the person being auditedYes: once uploaded, a recording is locked against edits and deletionNo: the user can edit or clear the file
Survives a user switching it offYes: root changes are reverted and reportedNo: unset HISTFILE stops it
Watchable while the work happensYesNo

Shared logins and bash history can't settle a dispute

Say a contractor gets an SSH key to a shared account like deploy or ubuntu. When something breaks a week later, you have a bash history file at best. It lists commands without their output, it mixes everyone who used that account, and the contractor could have edited it.

Waiting on the vendor's own evidence is slow. In January 2022, Okta alerted its support contractor Sitel to a compromise of a Sitel engineer's account. Okta received the complete investigation report on March 22, two months later, and its security chief wrote of being "greatly disappointed" by the wait.

Security frameworks treat this as your job. The NIST Cybersecurity Framework 2.0 lists it as outcome DE.CM-06: activities of external service providers are monitored to find potentially adverse events.

Set up contractor access as the server owner

Put shellz on each machine the contractor will work on. Every account on the box then logs in through the recorder, so their interactive logins, one-shot remote commands, file transfers and container shells get captured. The contractor installs nothing and changes nothing.

Create one Linux account per contractor, such as contractor-rk, instead of handing out a shared login. Their sessions then sit under one name you can filter by, and the source IP shows where each one came from.

Contractors don't need a shellz account to be recorded. Only the people who view recordings join your shellz team.

A Monday-morning question, answered from the recording

The following case is hypothetical. An agency upgrades PostgreSQL on db-02 on Saturday night. On Monday a reporting job fails, and the client asks whether anyone touched the cron jobs.

The client's admin filters sessions by contractor-rk over the weekend and finds three. A search for crontab hits one session. The replay shows the contractor listed the crontab and closed it without saving. The integrity badge says verified, so no part of the recording is missing or altered.

If the contractor had edited the file, the same replay would show the exact line, and the agency would know what to undo. For deeper post-incident work, see incident investigation.

A contractor with sudo can't quietly turn recording off

If the job needs root, the contractor also has the power to tamper with whatever is watching them.

If anyone edits shellz's configuration, it puts the setting back within seconds and alerts you by email, Slack or webhook. Uninstalling requires your approval in the dashboard. A machine that goes silent triggers an alert inside a minute. A contractor with full root could still meddle with the recorder, and that meddling gets caught and reported.

For agencies, the record protects your team too

When a client asks what changed on their server, an agency without records relies on memory and a ticket thread. A recording lets you show the exact commands and output instead.

If the agency runs shellz on client servers, export the sessions that matter as a replay file (.cast) or a text transcript (.txt) and send them with your report.

Inviting a client's staff into your shellz team is possible, but members can see every server the team records. Keep that in mind before you invite one client into a team that also covers another client's machines.

When the engagement ends

Remove the contractor's Linux accounts and keys on the servers. That part happens outside shellz. Their past sessions stay in your account, and uploaded recordings can't be deleted.

If agency staff were members of your shellz team, remove them from the team page. With Perfect Secrecy turned on, removing a member rotates the team's decryption key, so they can't read anything recorded after they leave. See the security model.

Gaps to plan around

shellz is a recorder. Approving access ahead of time, keeping credentials out of the contractor's hands, stopping a command and cutting off a session in progress all need an access gateway; the PAM vs session recording guide covers when that's worth paying for.

When a contractor types a password into sudo or passwd, it stays out of the recording. Whatever appears on screen goes in, so ask them not to paste tokens into commands. Windows servers, RDP, Kubernetes and direct database connections are outside what shellz records.

Contractors need Linux accounts on your servers, not seats in shellz, so they don't add to the bill. You pay for your own staff: nothing across 10 active devices, or $10 monthly per shellz team member on Commercial, with $1 per stored GB and unlimited devices (plans).

Questions

How do I see what a contractor did on my Linux server?

Record on the machine itself. Once shellz is installed, create a separate Linux login per contractor, then filter by that login to replay their commands, the output and any files they uploaded.

Can a contractor with root access disable shellz?

Not quietly. Configuration changes are reverted and reported, uninstalling needs dashboard approval, and a server that goes silent raises an alert. Full root can interfere with any software on a machine, so shellz guarantees you'll find out.

Do contractors need a shellz account?

No. They're recorded whenever they log into a server running shellz. Only the people who view recordings need to be on your shellz team, and Commercial billing counts those people.

Can I share a recording with a client who doesn't use shellz?

Export it. Each session downloads as a .cast replay file or a .txt transcript you can attach to a report.

Will a contractor's passwords end up in the recording?

Hidden password prompts aren't captured. A secret that shows up in the terminal, including one typed as a command argument, will be in the recording.

Related comparisons

Sources

Competitor details come from public documentation and pricing pages, last checked on November 4, 2026. Products change; if something here is out of date, tell us at hello@shellz.dev and we will correct it.

  1. Okta: Okta's investigation of the January 2022 compromise (Sitel timeline)
  2. NIST CSWP 29: The NIST Cybersecurity Framework 2.0 (February 26, 2024), DE.CM-06
~ $ shellz --helpOne command. Two minutes. Every session recorded.