A script needs to read one config file. In Python, nothing stops it from also reading your SSH keys and posting them somewhere.
function load_users(path: String) -> Result<List<User>, Error>
needs FileRead
{
let text = read_file(path)?
return parse_json(text)
}
function main(caps: Caps) -> Int {
with caps.file_read {
return load_users("users.json")?
}
}$ vow run load_users.vow --grant file-read:users.json
# SSH keys, the network, and the rest of the disk were never granted.This is capability-based security.
The signature is the permission list. Those permissions are values the program cannot create for itself — you pass them in at run time with --grant.