- Bear Version: 2.8.1
I do software development. It’s trivial occurence for us, devs, to use non-sandboxed apps and scripts.
Very important security feature of macOS is sandboxing aka System Integrity Protection. There is absolutely no way for a script or a third party app to read specific directories and containers:
ls ~/Library/Group\ Containers/group.com.apple.notes
Operation not permitted
ls -la ~/Library/Containers/net.shinyfrog.bear/Data
Operation not permitted
sudo ls -la ~/Library/Containers/net.shinyfrog.bear/Data
Operation not permitted
cat ~/Library/Group\ Containers/9K33E3U3T4.net.shinyfrog.bear/Application\ Data/database.sqlite
Operation not permitted
CLI privacy failure
With recent Bear update, a CLI helper got added. There is no way to disable it.
Previously, all bear notes were protected from a 3rd party script (see last ls above). Now they’re not. It’s trivial to fetch all notes using a simple script:
import { execSync } from 'node:child_process';
const ecmd = (cmd) => execSync(`/Applications/Bear.app/Contents/MacOS/bearcli ${cmd}`).toString('utf-8').trim();
const ids = ecmd('list').split('\n').map(line => line.split('\t')[0]);
const notes = ids.map(id => {
try { return ecmd(`cat ${id}`); } catch (error) { return null; }
});
console.log(notes);
I’ve used nodejs for the example above, to showcase that any app (not just bash commands) can easily access it.
We need a way to disable it
I applaud LLM integrations, but if Bear markets itself as security-concious note tool, we can’t be expected to have privacy degradations like this, without a way to disable the new feature. A simple checkbox would be more than enough.
We need more docs about privacy trade-offs
If the checkbox gets added in the future, I think it’s important to document the behavior for users, in very explicit terms (can be accessed via terminal by random scripts vs can’t be accessed).