What does this option in Terminal do?

enter image description here

It seems to have no effect on anything.


Essentially, this option prevents other applications (including things like TextExpander) from "listening in" on what you are typing. By preventing other background processes from recording or accessing your keystrokes, you are ensuring they cannot be logged or monitored, eg. by a simple keylogger, or another program running with normal permissions for potentially malicious purposes.

  • 12
    I wouldn't bet on the keylogger part. After all there is still data flowing from the keyboard to the computer which can be intercepted on a lower level (or even the wire). – nohillside Nov 5 '12 at 5:31
  • 3
    While that may be true, it prevents many of the popular software-based keyloggers for OS X, such as logKext, by ensuring only the foreground process receives input at the OS level. – Yasyf Nov 6 '12 at 1:18
  • Is the threat from logKext still relevant in 2019, or is this mostly a legacy feature? I have no specific mitigation in mind, I'm curious if anyway if the OS had been hardened against this kind of attack over the past 7 years. – Graham P Heath Jul 29 '19 at 19:32
  • Since this is a terminal program I think it's important to clarify that this doesn't disable your shell's history recording. For bash set HISTCONTROL to either ignorespace or ignoreboth. For zsh run setopt HIST_IGNORE_SPACE. Then, once that's done, prefix the command you don't want in history with a space. E.g., ⎵blah --password secret_password. Then open an issue with the program for not having a way to interactively enter your password in a hidden prompt. – Captain Man Jan 22 '20 at 18:23

Here is a screenshot from the help menu.


There's a great answer about it on the Security Stackexchange

"Secure Keyboard Entry" maps to the EnableSecureEventInput function whose concept is described here. Basically, applications don't access the hardware themselves; they obtain events (e.g. about key strokes) from the operating system. Some elements in the OS decides what application gets what events, depending on its access rights and GUI state (there are details depending on which application is "in the foreground").


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .