Security is our top priority and we want to be clear and upfront about how data is stored, used and accessed by Ghost Inspector.If you have questions about our security practices or policies, please contact us from our Support page. If you think you've found a vulnerability in any Ghost Inspector service, please contact us below.

Table of Contents

SOC 2 Compliance


SOC 2, more formally known as Service Organization Control 2, is a voluntary compliance standard for service organizations, developed by the American Institute of CPAs (AICPA). It specifies how organizations should manage customer data. SOC 2 is both a technical audit and a requirement that comprehensive information security policies and procedures be written and followed.

Ghost Inspector achieved SOC 2 compliance in 2021 with the completion of our SOC 2 Type I report. The trust services criteria of our audit include security, availability and confidentiality. Our Type II audit period is currently underway and will be completed in early 2022. Contact support to request a copy of our SOC 2 report.

Accessing Data in Ghost Inspector

Ghost Inspector uses best practices for internet security. This helps ensure that your data is safe, secure, and available only to authorized users. Your data will be completely inaccessible to anyone else unless you explicitly choose to share that data with the public.

Ghost Inspector enforces secure HTTPS for our entire website, including the public (unauthenticated) parts of the site. All communications with Ghost Inspector’s API are also protected with SSL. We also use HTTP Strict Transport Security to ensure your web browser never interacts with Ghost Inspector over insecure HTTP.

Ghost Inspector provides each user in your organization with a unique username (e-mail address) and password. These credentials must be entered to access your organization’s data. A private API key is also available within each account which must be used when accessing our API. 2 factor authentication is available for all user accounts.

The Ghost Inspector recording extension allows you to record your actions and make them into a test. It only does this when you manually start recording a test; it’s not tracking your actions otherwise. Active recording is indicated by a green toolbar icon. The recording stops the second you finish (or cancel). Furthermore, the extension only sends the recorded data to our servers when you save the test. It does not send this data to our servers during the recording process — only when you explicitly save it.

The extension is only capable of making a small number of API calls to our servers. It can authenticate your account. We do this with your e-mail address and password, but we do not store a copy of these locally. Instead, we store your API key for future authentication. Other API calls are used to get a list of your current suites and tests. The last type of API call that the extension performs is sending your recording to our servers when you save it. All of these are done over HTTPS.

Storing Data in Ghost Inspector

Ghost Inspector is hosted on Amazon Web Services which provides comprehensive security practices for our underlying infrastructure. We follow AWS recommended best practices for architecting in the cloud. See AWS Cloud Security Documentation for more information. Ghost Inspector runs services and stores data in the us-east-1 region located in Northern Virginia, USA. We do offer various global geolocations for test running. These geolocations are not used by default, only when explicitly enabled for your tests. Each geolocation corresponds with a specific AWS region and operates as a network proxy only; it does not run tests or host databases directly.

Ghost Inspector allows you to store browser actions in a test and execute them from our servers. This can include logging into websites with a set of credentials. We provide an option for making values private. This prevents the value from being displayed in your test results but does not encrypt the actual value in our database. All test information is stored as plain text in our database. While we take the utmost precautions to secure our servers and database (including the use of “data at rest” encryption on database disk volumes), if a database breach were to occur, test data would be accessible. For this reason, we insist that you never use live credentials or any type of sensitive data within a test — whether specified manually or recorded with our extension.

If your test requires an account login, dummy data and/or staging servers should be used. If you're logging into a production application with Ghost Inspector, you should use an account designated for Ghost Inspector that does not contain any sensitive data and can easily be disabled. You should never use your own private credentials.

Why do we take this stance? The nature of browser testing makes encryption of values very challenging to uphold in all situations. We need access to plain text values to assign them into inputs, like a password field in a login form. This means we can't simply hash passwords to some irreversible value the way you typically do when storing passwords. Even when encrypting values in our database, we still need to send them in plaintext to the browser via automation APIs. There's a chance the value could be stored in a log file by the test runner or another service. If assigned improperly, the value could show up in a video or appear in a screenshot. There are many opportunities for a value to be exposed, some of which are out of our control and are instead based on the design of the test itself. For that reason — and because Ghost Inspector is designed as a testing product — our stance is simply that sensitive credentials should not be stored with us.

We understand that this may disqualify some companies from leveraging our service, but we feel that it's the right approach for us considering the risks involved in allowing sensitive information to be stored and used in the way that browser testing requires.

Note: We do hash the password for your actual Ghost Inspector account the same way any secure service would. The discussion above applies specifically to the data in your tests.

Ghost Inspector Employee Access

Ghost Inspector employees will only access your account data when one of the following scenario occurs:

  • You request help from the Ghost Inspector support team and provide explicit permission to access a given resource. Permission will be attained through the support conversation. Permission is assumed when you send a specific resource identification or link URL to a resource in our system.
  • The Ghost Inspector engineering team determines that there is a security issue or system-level interruption being caused by a specific resource and is required to investigate.
  • Ghost Inspector suspects that a particular resource or account is behaving abusively and is required to investigate.

Do you have concerns about security? Get in touch with us.

We’re always happy to answer any questions or concerns about security you might have. If you are a Ghost Inspector customer (or potential customer) and have further questions about security, just visit our Support page.

Contacting Ghost Inspector Securely

If you’ve found a security vulnerability in a Ghost Inspector website or service, please send an email to our security team at Your email will be promptly reviewed and we will respond. We request that you not publicly disclose the issue until it has been addressed by us. We do attempt to reward responsible security reports that are sent to us. You can find more details about this on our Bug Bounty Program page.

If you choose to contact our security team, you can encrypt with PGP or the free alternative GnuPG. Our PGP key is listed below. This key is also registered with the MIT Public Key Server. You may use this key to encrypt your communications with Ghost Inspector.

Once you’ve imported our key, you can verify the signature of emails we send you by running gpg --verify.

User name: Ghost Inspector Security <> Key ID: 72552D9F Key
fingerprint: B310 EE5E CD96 6EF9 8743  776C 92F0 9C99 7255 2D9F Expiration date: April 28, 2028