45 const std::string& tool_name,
46 const std::string&
pattern)
const {
47 for (
const auto& deny : deny_list_) {
48 if (pattern_matches(tool_name,
pattern, deny)) {
49 logger->info(
"Permission DENIED: {} (matched '{}')",
68 const std::string& tool_name,
69 const std::string&
pattern)
const {
70 for (
const auto&
allow : allow_list_) {
72 logger->info(
"Permission ALLOWED: {} (matched '{}')",
96 auto& list =
allow ? allow_list_ : deny_list_;
103 logger->info(
"Added {} permission: {}",
124bool PermissionManager::pattern_matches(
125 const std::string& tool_name,
141 if (
colon == std::string::npos) {
bool is_denied(const std::string &tool_name, const std::string &pattern) const
Check if a tool call is explicitly denied.
PermissionManager(std::vector< std::string > allow_patterns={}, std::vector< std::string > deny_patterns={})
Construct with initial allow/deny lists.
void add_permission(const std::string &pattern, bool allow)
Add a permission pattern at runtime.
bool is_allowed(const std::string &tool_name, const std::string &pattern) const
Check if a tool call is explicitly allowed (skip prompting).
spdlog initialization and logger access.
ENTROPIC_EXPORT std::shared_ptr< spdlog::logger > get(const std::string &name)
Get or create a named logger.
Activate model on GPU (WARM → ACTIVE).
@ allow
true: every escape served, no prompt
@ optional
optional: every escape asks the host's path approver
Permission manager for MCP tool access control.