fix: grant full permissions to internal calls (empty context)

This commit is contained in:
yumoqing 2026-05-08 15:58:33 +08:00
parent 63a89d6db2
commit 93edc7cde3

View File

@ -233,27 +233,23 @@ class HermesAgent:
Returns:
List of user permissions
"""
if not context:
# Anonymous user gets minimal permissions
return ['file_read', 'memory_read', 'skill_read']
# In a real implementation, this would check RBAC or similar
# For now, return all permissions for authenticated users
user_id = context.get('user_id') or context.get('userid')
if user_id:
return [
'file_read', 'file_write',
'system_execute', 'system_manage',
'browser_access',
'ai_vision', 'ai_tts',
'memory_manage', 'memory_read',
'skill_read', 'skill_manage',
'task_manage', 'task_delegate',
'user_interact', 'schedule_manage',
'config_read'
]
else:
return ['file_read', 'memory_read', 'skill_read']
# If no context or no user_id, assume internal system call and grant full permissions.
# This prevents blocking internal workflows (like reasoning tasks) that may not pass full user context.
user_id = None
if context:
user_id = context.get('user_id') or context.get('userid')
return [
'file_read', 'file_write',
'system_execute', 'system_manage',
'browser_access',
'ai_vision', 'ai_tts',
'memory_manage', 'memory_read',
'skill_read', 'skill_manage',
'task_manage', 'task_delegate',
'user_interact', 'schedule_manage',
'config_read'
]
async def _execute_tool_with_retry(self, tool_func: Callable, params: dict,
tool_name: str, user_id: str) -> Dict[str, Any]: