@agenticmail/enterprise 0.5.319 → 0.5.321

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (330) hide show
  1. package/CHANGELOG.md +68 -0
  2. package/CODE_OF_CONDUCT.md +31 -0
  3. package/README.md +118 -38
  4. package/SECURITY.md +42 -0
  5. package/dist/agent-heartbeat-3FWNHZFX.js +510 -0
  6. package/dist/agent-heartbeat-4RWHZR7H.js +510 -0
  7. package/dist/agent-heartbeat-6ZGB5ILY.js +510 -0
  8. package/dist/agent-heartbeat-BIVHLKFM.js +510 -0
  9. package/dist/agent-heartbeat-HRKVFK2T.js +510 -0
  10. package/dist/agent-heartbeat-JC5GWVXD.js +510 -0
  11. package/dist/agent-heartbeat-K6A4HMHB.js +510 -0
  12. package/dist/agent-heartbeat-LCDXWFVB.js +510 -0
  13. package/dist/agent-heartbeat-P7HZCZAQ.js +510 -0
  14. package/dist/agent-heartbeat-PUIRSNIO.js +510 -0
  15. package/dist/agent-heartbeat-SN5ILQ6Y.js +510 -0
  16. package/dist/agent-heartbeat-TW5YTDYC.js +510 -0
  17. package/dist/agent-heartbeat-Z2QQXROL.js +510 -0
  18. package/dist/agent-notify-OEQBCZLN.js +43 -0
  19. package/dist/{agent-tools-263HM5QU.js → agent-tools-3W7XLUYA.js} +1 -1
  20. package/dist/agent-tools-4QK7LLNP.js +9 -0
  21. package/dist/agent-tools-54VZGT6L.js +9 -0
  22. package/dist/{agent-tools-AT4D276V.js → agent-tools-AYYDPO27.js} +7 -7
  23. package/dist/{agent-tools-MSTAPX2I.js → agent-tools-F2X47FKF.js} +7 -7
  24. package/dist/{agent-tools-FA26SY5O.js → agent-tools-O6W3QAZL.js} +11 -6
  25. package/dist/agent-tools-OAWVZBMW.js +9 -0
  26. package/dist/agent-tools-QCCU74PN.js +13949 -0
  27. package/dist/chunk-2LHUARN6.js +4929 -0
  28. package/dist/chunk-2WVCNCYC.js +5087 -0
  29. package/dist/{chunk-6PWDS7KY.js → chunk-3FM6YQUK.js} +20 -20
  30. package/dist/chunk-3UAFHUEC.js +212 -0
  31. package/dist/{chunk-WJO57PMO.js → chunk-46GOWZT4.js} +20 -20
  32. package/dist/{chunk-BNRE7TSX.js → chunk-5KYJAUZV.js} +3 -3
  33. package/dist/chunk-6C5PKREN.js +467 -0
  34. package/dist/{chunk-447MTPZF.js → chunk-6ZMLNEHB.js} +3 -3
  35. package/dist/chunk-BPZQT5N5.js +25652 -0
  36. package/dist/chunk-BQM7MBPS.js +1380 -0
  37. package/dist/{chunk-ZRFKGPIU.js → chunk-C52OQNNY.js} +20 -20
  38. package/dist/chunk-C7HGQF4Y.js +25652 -0
  39. package/dist/chunk-CAHNZGGK.js +25656 -0
  40. package/dist/{chunk-FL3CH3ET.js → chunk-CK7R6UHE.js} +51 -27
  41. package/dist/chunk-D36RPWB7.js +25652 -0
  42. package/dist/{chunk-36NM2B4C.js → chunk-DJK2UPFH.js} +63 -93
  43. package/dist/chunk-DM7FTF7W.js +4929 -0
  44. package/dist/chunk-DMD24UFZ.js +5101 -0
  45. package/dist/{chunk-36XNMIHA.js → chunk-DXZGPUAF.js} +20 -20
  46. package/dist/chunk-F46WB5IL.js +5087 -0
  47. package/dist/chunk-F5QG5SQH.js +5087 -0
  48. package/dist/{chunk-JGEVQZDR.js → chunk-FLQ5FLHW.js} +13 -16
  49. package/dist/chunk-H7GP733U.js +5087 -0
  50. package/dist/{chunk-OZSQLOV6.js → chunk-HHBXWB5U.js} +415 -19
  51. package/dist/{chunk-D24JY75H.js → chunk-IMXS4N6W.js} +3 -3
  52. package/dist/{chunk-6PVBV6ZP.js → chunk-JNMDD7JY.js} +3 -3
  53. package/dist/chunk-JTV5LA47.js +1519 -0
  54. package/dist/chunk-KV6G7NZX.js +1519 -0
  55. package/dist/chunk-MU5MEBIK.js +1519 -0
  56. package/dist/chunk-NLT5MC7X.js +465 -0
  57. package/dist/{chunk-GTFZZUXX.js → chunk-NVLYIM4J.js} +51 -27
  58. package/dist/{chunk-6G5SXLXC.js → chunk-NZY2BIZH.js} +63 -93
  59. package/dist/chunk-O42L6G67.js +1519 -0
  60. package/dist/chunk-OCNERGGM.js +4891 -0
  61. package/dist/chunk-OJSNHONE.js +1519 -0
  62. package/dist/{chunk-2TAZJWJN.js → chunk-OWL3QVH7.js} +18 -0
  63. package/dist/{chunk-P3HVY2HS.js → chunk-OWTLNV4Q.js} +382 -7
  64. package/dist/chunk-PCNYEP6T.js +4891 -0
  65. package/dist/{chunk-YL3Z5KPR.js → chunk-PI4AQ4Z6.js} +438 -15
  66. package/dist/chunk-PN3EGTCA.js +194 -0
  67. package/dist/chunk-Q37UKNRC.js +1519 -0
  68. package/dist/chunk-QXTC6J7H.js +5087 -0
  69. package/dist/{chunk-SPBQVNDI.js → chunk-RKERL5LZ.js} +25 -21
  70. package/dist/chunk-RVBK2IOX.js +25652 -0
  71. package/dist/chunk-SAKODCZ5.js +4891 -0
  72. package/dist/{chunk-XV4TU65E.js → chunk-SALGFC5L.js} +51 -27
  73. package/dist/chunk-STGWZ2MS.js +1519 -0
  74. package/dist/chunk-UY3ZVQDP.js +25652 -0
  75. package/dist/chunk-V6OSD62M.js +5087 -0
  76. package/dist/chunk-VP6YAHX4.js +1519 -0
  77. package/dist/chunk-WDYJOEAI.js +5087 -0
  78. package/dist/chunk-WEAFQNOS.js +195 -0
  79. package/dist/chunk-XKUSAZGP.js +5087 -0
  80. package/dist/chunk-Z6K5FKAB.js +548 -0
  81. package/dist/chunk-ZGE3XAXY.js +1519 -0
  82. package/dist/chunk-ZGYVXYQQ.js +3296 -0
  83. package/dist/cli-agent-7TB2BWS6.js +2370 -0
  84. package/dist/cli-agent-AKXFFST2.js +2370 -0
  85. package/dist/cli-agent-DZTKLITB.js +2357 -0
  86. package/dist/cli-agent-FOF7PFEP.js +2357 -0
  87. package/dist/cli-agent-H74M2ZYN.js +2357 -0
  88. package/dist/cli-agent-HORWVPHB.js +2370 -0
  89. package/dist/cli-agent-HSZT6SKF.js +2423 -0
  90. package/dist/cli-agent-JLUQ4ZU6.js +2424 -0
  91. package/dist/cli-agent-MVCDH4HV.js +2370 -0
  92. package/dist/cli-agent-NZXOEPJ2.js +2357 -0
  93. package/dist/cli-agent-PADN3QRC.js +2357 -0
  94. package/dist/cli-agent-QAYEX3BE.js +2441 -0
  95. package/dist/cli-agent-QT64DT5J.js +2370 -0
  96. package/dist/cli-agent-TFL2M6UK.js +2424 -0
  97. package/dist/cli-agent-UIKXATTD.js +2357 -0
  98. package/dist/cli-agent-UJN6FYTO.js +2370 -0
  99. package/dist/cli-agent-VIQAYVY4.js +2357 -0
  100. package/dist/cli-agent-WNWFVOFM.js +2370 -0
  101. package/dist/cli-agent-XBQX67VJ.js +2423 -0
  102. package/dist/cli-agent-ZLSC6FF4.js +2357 -0
  103. package/dist/cli-serve-2IL5DTEY.js +153 -0
  104. package/dist/cli-serve-47N5UKKW.js +153 -0
  105. package/dist/cli-serve-4XGZFUV2.js +140 -0
  106. package/dist/cli-serve-6OT3UEAN.js +140 -0
  107. package/dist/cli-serve-7L6EY5UH.js +153 -0
  108. package/dist/cli-serve-BDGOOOKQ.js +260 -0
  109. package/dist/cli-serve-BFNIW2LF.js +153 -0
  110. package/dist/cli-serve-C7MN6U5Q.js +153 -0
  111. package/dist/cli-serve-CR3OY3IM.js +153 -0
  112. package/dist/cli-serve-DAJFRWQ7.js +153 -0
  113. package/dist/cli-serve-FW6FHFW4.js +153 -0
  114. package/dist/cli-serve-GEEOQS77.js +153 -0
  115. package/dist/cli-serve-H562I3ZK.js +153 -0
  116. package/dist/cli-serve-HDQZF4C4.js +153 -0
  117. package/dist/cli-serve-LICAOMEB.js +140 -0
  118. package/dist/cli-serve-LLGYLWFS.js +153 -0
  119. package/dist/cli-serve-N3OISDNB.js +153 -0
  120. package/dist/cli-serve-TIZ27EVR.js +153 -0
  121. package/dist/cli-serve-TUNI2RCN.js +153 -0
  122. package/dist/cli-serve-WNOZMAWD.js +153 -0
  123. package/dist/cli-validate-Z726VJCN.js +150 -0
  124. package/dist/cli.js +4 -4
  125. package/dist/connection-manager-KAWEUWUR.js +9 -0
  126. package/dist/dashboard/app.js +9 -3
  127. package/dist/dashboard/components/knowledge-link.js +15 -0
  128. package/dist/dashboard/components/settings-help.js +4 -2
  129. package/dist/dashboard/docs/agent-deployment.html +33 -1
  130. package/dist/dashboard/docs/settings-network.html +321 -0
  131. package/dist/dashboard/docs/settings-security.html +347 -0
  132. package/dist/dashboard/docs/settings-tool-security.html +176 -0
  133. package/dist/dashboard/docs/settings.html +36 -16
  134. package/dist/dashboard/pages/agent-detail/deployment.js +39 -6
  135. package/dist/dashboard/pages/agent-detail/tools.js +10 -0
  136. package/dist/dashboard/pages/database-access.js +4 -3
  137. package/dist/dashboard/pages/settings.js +174 -37
  138. package/dist/dashboard/pages/task-pipeline.js +400 -843
  139. package/dist/db-adapter-2T56ORSD.js +7 -0
  140. package/dist/db-adapter-IRHOUMVC.js +7 -0
  141. package/dist/index.js +41 -41
  142. package/dist/microsoft-VREAZ7M2.js +3955 -0
  143. package/dist/routes-3MMLQTB6.js +90 -0
  144. package/dist/routes-4ZUIJ4HE.js +90 -0
  145. package/dist/routes-5MXHKKH4.js +90 -0
  146. package/dist/routes-64NJFK3B.js +90 -0
  147. package/dist/routes-6AKQ2LBV.js +90 -0
  148. package/dist/routes-CRRBUDO4.js +90 -0
  149. package/dist/routes-DIAF3MC3.js +90 -0
  150. package/dist/routes-KMUNU6CY.js +90 -0
  151. package/dist/routes-LRRLXIZR.js +90 -0
  152. package/dist/routes-N647AJYG.js +90 -0
  153. package/dist/routes-SSSELAAR.js +90 -0
  154. package/dist/routes-STERVGKJ.js +90 -0
  155. package/dist/routes-ZEZZACZP.js +90 -0
  156. package/dist/runtime-5EQN4GFM.js +45 -0
  157. package/dist/runtime-5LP7PUD4.js +45 -0
  158. package/dist/runtime-6BULDBR3.js +45 -0
  159. package/dist/runtime-6YEENDN3.js +45 -0
  160. package/dist/runtime-7LQFRG3B.js +45 -0
  161. package/dist/runtime-AMXJU2MB.js +45 -0
  162. package/dist/runtime-D6WSE7FG.js +45 -0
  163. package/dist/runtime-EYVN7NFJ.js +45 -0
  164. package/dist/runtime-F6RPWQVW.js +45 -0
  165. package/dist/runtime-FYMJURFC.js +45 -0
  166. package/dist/runtime-JRNBL4O4.js +45 -0
  167. package/dist/runtime-OM2NIBMI.js +45 -0
  168. package/dist/runtime-QWPVD7CY.js +45 -0
  169. package/dist/runtime-YLIIPTE4.js +45 -0
  170. package/dist/runtime-YU6P22CG.js +45 -0
  171. package/dist/screen-unlock-4RPZBHOI.js +118 -0
  172. package/dist/server-AMCSXINC.js +28 -0
  173. package/dist/server-CU6LVQS4.js +28 -0
  174. package/dist/server-DFYGH2CV.js +28 -0
  175. package/dist/server-EELWOC3X.js +28 -0
  176. package/dist/server-EN5E2OWQ.js +28 -0
  177. package/dist/server-GW2HYJYI.js +28 -0
  178. package/dist/server-J25NCRWJ.js +28 -0
  179. package/dist/server-JDGNOTFV.js +28 -0
  180. package/dist/server-NE5HD5DJ.js +28 -0
  181. package/dist/server-NQOT7W77.js +28 -0
  182. package/dist/server-PWE5PQTR.js +28 -0
  183. package/dist/server-Q2Q32H2B.js +28 -0
  184. package/dist/server-Q77ME7TL.js +28 -0
  185. package/dist/server-WLLH4WST.js +28 -0
  186. package/dist/server-WTUJ2O3F.js +28 -0
  187. package/dist/server-X4CJTHHF.js +28 -0
  188. package/dist/server-XK3ILCJC.js +28 -0
  189. package/dist/server-ZRD3NDJE.js +28 -0
  190. package/dist/setup-44VBAO4J.js +20 -0
  191. package/dist/setup-4ONNQBWB.js +20 -0
  192. package/dist/setup-4OSBXSCL.js +20 -0
  193. package/dist/setup-4QFGRBLZ.js +20 -0
  194. package/dist/setup-6766SGAR.js +20 -0
  195. package/dist/setup-AYY24DKM.js +20 -0
  196. package/dist/setup-B34N4HPU.js +20 -0
  197. package/dist/setup-E2YLC2EY.js +20 -0
  198. package/dist/setup-ER6NXTY5.js +20 -0
  199. package/dist/setup-H2AGCBW5.js +20 -0
  200. package/dist/setup-ICOZRKCX.js +20 -0
  201. package/dist/setup-JFTJH7UF.js +20 -0
  202. package/dist/setup-PRFNI6YW.js +20 -0
  203. package/dist/setup-RAHBMYHE.js +20 -0
  204. package/dist/setup-TXPR5UQX.js +20 -0
  205. package/dist/setup-XCJMELVU.js +20 -0
  206. package/dist/setup-XIYEIFVK.js +20 -0
  207. package/dist/setup-Z4PZSHBI.js +20 -0
  208. package/dist/skills-FR7I5V7H.js +16 -0
  209. package/dist/skills-HCVBA6PK.js +16 -0
  210. package/dist/system-prompts-TM7OA32C.js +913 -0
  211. package/dist/task-queue-O7IVZYUO.js +9 -0
  212. package/dist/transport-encryption-2T7PIXKG.js +25 -0
  213. package/logs/cloudflared-error.log +61 -0
  214. package/logs/cloudflared-out.log +0 -0
  215. package/logs/enterprise-error.log +0 -0
  216. package/logs/enterprise-out.log +3 -0
  217. package/logs/fola-error.log +0 -0
  218. package/logs/fola-out.log +0 -0
  219. package/logs/john-error.log +8 -0
  220. package/logs/john-out.log +0 -0
  221. package/package.json +31 -3
  222. package/src/agent-tools/tool-resolver.ts +50 -61
  223. package/src/agent-tools/tools/enterprise-database.ts +5 -5
  224. package/src/agent-tools/tools/local/dependency-manager.ts +2 -2
  225. package/src/agent-tools/tools/microsoft/graph-api.ts +137 -26
  226. package/src/agent-tools/tools/microsoft/outlook-mail.ts +392 -100
  227. package/src/agent-tools/tools/microsoft/teams.ts +267 -48
  228. package/src/auth/routes.ts +4 -4
  229. package/src/cli-agent.ts +108 -8
  230. package/src/cli-serve.ts +140 -0
  231. package/src/dashboard/app.js +9 -3
  232. package/src/dashboard/components/knowledge-link.js +15 -0
  233. package/src/dashboard/components/settings-help.js +4 -2
  234. package/src/dashboard/docs/agent-deployment.html +33 -1
  235. package/src/dashboard/docs/settings-network.html +321 -0
  236. package/src/dashboard/docs/settings-security.html +347 -0
  237. package/src/dashboard/docs/settings-tool-security.html +176 -0
  238. package/src/dashboard/docs/settings.html +36 -16
  239. package/src/dashboard/pages/agent-detail/deployment.js +39 -6
  240. package/src/dashboard/pages/agent-detail/tools.js +10 -0
  241. package/src/dashboard/pages/database-access.js +4 -3
  242. package/src/dashboard/pages/settings.js +174 -37
  243. package/src/dashboard/pages/task-pipeline.js +400 -843
  244. package/src/database-access/agent-tools.ts +78 -63
  245. package/src/database-access/connection-manager.ts +13 -2
  246. package/src/database-access/routes.ts +13 -1
  247. package/src/db/adapter.ts +1 -0
  248. package/src/engine/agent-memory.ts +2 -1
  249. package/src/engine/agent-notify.ts +50 -0
  250. package/src/engine/agent-routes.ts +257 -4
  251. package/src/engine/db-adapter.ts +16 -0
  252. package/src/engine/lifecycle.ts +4 -0
  253. package/src/engine/routes.ts +4 -3
  254. package/src/engine/screen-unlock.ts +136 -0
  255. package/src/engine/skills/database-access.ts +78 -0
  256. package/src/engine/skills/index.ts +3 -2
  257. package/src/engine/skills.ts +2 -0
  258. package/src/engine/task-queue-routes.ts +18 -0
  259. package/src/engine/task-queue.ts +15 -2
  260. package/src/middleware/transport-encryption.ts +1 -4
  261. package/src/runtime/agent-loop.ts +4 -0
  262. package/src/runtime/index.ts +15 -6
  263. package/src/server.ts +14 -1
  264. package/src/system-prompts/google/index.ts +1 -2
  265. package/src/system-prompts/index.ts +1 -1
  266. package/src/system-prompts/microsoft/contacts.ts +34 -0
  267. package/src/system-prompts/microsoft/excel.ts +52 -0
  268. package/src/system-prompts/microsoft/index.ts +31 -0
  269. package/src/system-prompts/microsoft/onedrive.ts +41 -0
  270. package/src/system-prompts/microsoft/onenote.ts +36 -0
  271. package/src/system-prompts/microsoft/outlook-calendar.ts +37 -0
  272. package/src/system-prompts/microsoft/outlook-mail.ts +46 -0
  273. package/src/system-prompts/microsoft/planner.ts +37 -0
  274. package/src/system-prompts/microsoft/powerbi.ts +38 -0
  275. package/src/system-prompts/microsoft/powerpoint.ts +35 -0
  276. package/src/system-prompts/microsoft/sharepoint.ts +44 -0
  277. package/src/system-prompts/microsoft/teams.ts +49 -0
  278. package/src/system-prompts/microsoft/todo.ts +37 -0
  279. package/src/types/hono-env.ts +4 -0
  280. package/.github/CODEOWNERS +0 -23
  281. package/.github/workflows/publish-community-skills.yml +0 -121
  282. package/.github/workflows/validate-community-skills.yml +0 -172
  283. package/agriculture_southwest_nigeria_research.txt +0 -10
  284. package/boa_credit_cards_research.txt +0 -10
  285. package/customer_support_research_feb2026.txt +0 -10
  286. package/dist/agent-tools-LRA7PPXG.js +0 -13922
  287. package/dist/agent-tools-VAU5DOQB.js +0 -13910
  288. package/dist/agent-tools-VWV7OWXU.js +0 -13922
  289. package/dist/chunk-2Z7MWTCX.js +0 -4977
  290. package/dist/chunk-3T4XU3VV.js +0 -5010
  291. package/dist/chunk-445QM4NX.js +0 -5061
  292. package/dist/chunk-5TW3Y7DJ.js +0 -1519
  293. package/dist/chunk-6I7VY3LT.js +0 -5060
  294. package/dist/chunk-6W5EK3UP.js +0 -4977
  295. package/dist/chunk-AQMSHJQT.js +0 -5069
  296. package/dist/chunk-ASSQW7HX.js +0 -5051
  297. package/dist/chunk-CIN27FGC.js +0 -5037
  298. package/dist/chunk-CMXY3NUB.js +0 -4977
  299. package/dist/chunk-DRLMRUDP.js +0 -5052
  300. package/dist/chunk-EHI7Z446.js +0 -1519
  301. package/dist/chunk-FEAILFAQ.js +0 -1519
  302. package/dist/chunk-GA3PYBZL.js +0 -1519
  303. package/dist/chunk-GWX63G5J.js +0 -1519
  304. package/dist/chunk-HHMZ4UY6.js +0 -1519
  305. package/dist/chunk-HVQMNF7E.js +0 -4921
  306. package/dist/chunk-HXM7F3YN.js +0 -1519
  307. package/dist/chunk-K6NGOUXG.js +0 -5060
  308. package/dist/chunk-KPG5WINJ.js +0 -4977
  309. package/dist/chunk-LBCUBYDL.js +0 -1519
  310. package/dist/chunk-LIRQSWLR.js +0 -5014
  311. package/dist/chunk-LRCKO5KE.js +0 -1519
  312. package/dist/chunk-M7XL3DJD.js +0 -5069
  313. package/dist/chunk-MHJULEIQ.js +0 -1519
  314. package/dist/chunk-MJGGW6MC.js +0 -106
  315. package/dist/chunk-MMYBDHDB.js +0 -4921
  316. package/dist/chunk-MQT5FXKD.js +0 -1519
  317. package/dist/chunk-OIMPEQF5.js +0 -4977
  318. package/dist/chunk-OOU7JUYE.js +0 -542
  319. package/dist/chunk-OW4GLBHP.js +0 -1519
  320. package/dist/chunk-Q4K4MMLU.js +0 -4977
  321. package/dist/chunk-RUK4CRPF.js +0 -1519
  322. package/dist/chunk-T7H65XQY.js +0 -1519
  323. package/dist/chunk-TQVFWG57.js +0 -5064
  324. package/dist/chunk-UEPK3IMC.js +0 -1519
  325. package/dist/chunk-VUWTXJH6.js +0 -1519
  326. package/dist/chunk-WCPGGSAD.js +0 -1519
  327. package/dist/chunk-WO63NZOJ.js +0 -1519
  328. package/dist/chunk-YPJDRVUM.js +0 -5064
  329. package/dist/chunk-ZROMH5DL.js +0 -4921
  330. package/src/dashboard/docs/_template.txt +0 -92
@@ -0,0 +1,347 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Security System — AgenticMail Enterprise</title>
7
+ <style>
8
+ :root {
9
+ --bg-primary: #0f1117; --bg-secondary: #161822; --bg-tertiary: #1c1f2e; --bg-card: #181b28;
10
+ --text-primary: #e8eaf0; --text-secondary: #9ca3b8; --text-muted: #6b7394;
11
+ --accent: #6366f1; --accent-soft: rgba(99,102,241,0.12);
12
+ --border: #2a2f45; --border-light: #353a52; --radius: 10px;
13
+ --success: #15803d; --warning: #eab308; --danger: #ef4444;
14
+ --info-soft: rgba(99,102,241,0.06);
15
+ }
16
+ [data-theme="light"] {
17
+ --bg-primary: #d0c5a0; --bg-secondary: #ddd3b2; --bg-tertiary: #c8bc94; --bg-card: #e5dcc0;
18
+ --text-primary: #2c2410; --text-secondary: #3d3520; --text-muted: #6b5e42;
19
+ --accent: #2563eb; --accent-soft: rgba(37,99,235,0.1);
20
+ --border: #b8ad8a; --border-light: #a89e7a; --info-soft: rgba(37,99,235,0.06);
21
+ }
22
+ * { box-sizing: border-box; margin: 0; padding: 0; }
23
+ body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; background: var(--bg-primary); color: var(--text-primary); line-height: 1.7; padding: 32px; max-width: 900px; margin: 0 auto; }
24
+ h1 { font-size: 28px; margin-bottom: 8px; }
25
+ h2 { font-size: 20px; margin: 32px 0 12px; padding-bottom: 8px; border-bottom: 1px solid var(--border); }
26
+ h3 { font-size: 16px; margin: 20px 0 8px; color: var(--accent); }
27
+ p { margin-bottom: 12px; color: var(--text-secondary); }
28
+ code { background: var(--bg-primary); border: 1px solid var(--border); padding: 2px 6px; border-radius: 4px; font-size: 13px; color: var(--accent); }
29
+ pre { background: var(--bg-primary); border: 1px solid var(--border); padding: 16px; border-radius: var(--radius); overflow-x: auto; margin: 12px 0; font-size: 13px; line-height: 1.5; color: var(--text-secondary); }
30
+ pre code { background: none; border: none; padding: 0; }
31
+ .card { background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius); padding: 20px; margin: 16px 0; }
32
+ .tip { background: var(--info-soft); border: 1px solid rgba(59,130,246,0.3); padding: 12px 16px; border-radius: var(--radius); margin: 12px 0; font-size: 13px; color: var(--text-secondary); }
33
+ .warning { background: rgba(245,158,11,0.08); border: 1px solid rgba(245,158,11,0.3); padding: 12px 16px; border-radius: var(--radius); margin: 12px 0; font-size: 13px; color: var(--text-secondary); }
34
+ .danger { background: rgba(239,68,68,0.08); border: 1px solid rgba(239,68,68,0.3); padding: 12px 16px; border-radius: var(--radius); margin: 12px 0; font-size: 13px; color: var(--text-secondary); }
35
+ table { width: 100%; border-collapse: collapse; margin: 12px 0; font-size: 13px; }
36
+ th, td { text-align: left; padding: 8px 12px; border: 1px solid var(--border); color: var(--text-secondary); }
37
+ th { background: var(--bg-secondary); font-weight: 600; color: var(--text-primary); }
38
+ ul, ol { padding-left: 24px; margin-bottom: 12px; color: var(--text-secondary); }
39
+ li { margin-bottom: 6px; }
40
+ a { color: var(--accent); }
41
+ .back { display: inline-block; margin-bottom: 20px; font-size: 13px; color: var(--text-muted); text-decoration: none; }
42
+ .back:hover { color: var(--text-primary); }
43
+ strong { color: var(--text-primary); }
44
+ .toc { background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius); padding: 16px 20px; margin: 16px 0; }
45
+ .toc h3 { margin: 0 0 8px; font-size: 14px; }
46
+ .toc ul { list-style: none; padding: 0; }
47
+ .toc li { margin: 4px 0; }
48
+ .toc a { font-size: 13px; text-decoration: none; }
49
+ </style>
50
+ <script>
51
+ var t = localStorage.getItem('em_theme') || 'dark';
52
+ document.documentElement.setAttribute('data-theme', t);
53
+ </script>
54
+ </head>
55
+ <body>
56
+
57
+ <a class="back" href="/dashboard/settings">&#8592; Back to Settings</a>
58
+
59
+ <h1>Security System</h1>
60
+ <p style="color: var(--text-muted); margin-bottom: 24px;">Comprehensive security configuration for your AgenticMail Enterprise deployment. Each section can be edited independently using its own Edit button.</p>
61
+
62
+ <div class="toc">
63
+ <h3>On This Page</h3>
64
+ <ul>
65
+ <li><a href="#overview">Overview</a></li>
66
+ <li><a href="#prompt-injection">Prompt Injection Defense</a></li>
67
+ <li><a href="#sql-injection">SQL Injection Prevention</a></li>
68
+ <li><a href="#input-validation">Input Validation</a></li>
69
+ <li><a href="#output-filtering">Output Filtering</a></li>
70
+ <li><a href="#transport-encryption">Transport Encryption</a></li>
71
+ <li><a href="#dependency-management">Dependency &amp; Package Management</a></li>
72
+ <li><a href="#screen-unlock">Screen Unlock &amp; Machine Access</a></li>
73
+ <li><a href="#audit-logging">Security Audit Log</a></li>
74
+ <li><a href="#best-practices">Best Practices</a></li>
75
+ </ul>
76
+ </div>
77
+
78
+ <h2 id="overview">Overview</h2>
79
+ <p>The Security System tab provides defense-in-depth controls protecting your instance from prompt injection, data exfiltration, SQL injection, and other attack vectors. Each section has its own Edit/Save/Cancel buttons — click Edit to modify a section, then Save to persist changes or Cancel to discard.</p>
80
+
81
+ <div class="tip"><strong>Per-section editing:</strong> Only one section can be edited at a time. Other sections dim while you're editing, preventing accidental changes. Your changes are saved to the server when you click Save.</div>
82
+
83
+ <h2 id="prompt-injection">Prompt Injection Defense</h2>
84
+ <p>Multi-layer detection and prevention of prompt injection attacks — attempts by users or external content to override an agent's instructions.</p>
85
+
86
+ <div class="card">
87
+ <h3 style="margin-top: 0;">Settings</h3>
88
+ <table>
89
+ <tr><th>Setting</th><th>Description</th></tr>
90
+ <tr><td><strong>Enable Protection</strong></td><td>Master toggle for prompt injection defense</td></tr>
91
+ <tr><td><strong>Detection Mode</strong></td><td>
92
+ <ul style="margin: 0;">
93
+ <li><strong>Monitor Only</strong> — Logs detections but allows them through. Good for testing.</li>
94
+ <li><strong>Sanitize Content</strong> — Strips suspected injection patterns from input. Recommended for most deployments.</li>
95
+ <li><strong>Block Request</strong> — Rejects the entire request. Strictest mode.</li>
96
+ </ul>
97
+ </td></tr>
98
+ <tr><td><strong>Sensitivity Level</strong></td><td>Low / Medium / High / Maximum. Higher sensitivity catches more but increases false positives.</td></tr>
99
+ <tr><td><strong>Log Detections</strong></td><td>Write detection events to the security audit log</td></tr>
100
+ <tr><td><strong>Block Response</strong></td><td>Custom message returned when a request is blocked (only in Block mode)</td></tr>
101
+ </table>
102
+ </div>
103
+
104
+ <div class="tip"><strong>Recommended:</strong> Start with <code>Sanitize</code> mode at <code>Medium</code> sensitivity. Monitor the audit log for false positives before increasing to High.</div>
105
+
106
+ <h3>How It Works</h3>
107
+ <p>The system scans all incoming messages and tool inputs for known prompt injection patterns:</p>
108
+ <ul>
109
+ <li>System prompt override attempts ("Ignore previous instructions...")</li>
110
+ <li>Role confusion attacks ("You are now a different assistant...")</li>
111
+ <li>Delimiter injection (using special characters to break out of context)</li>
112
+ <li>Indirect injection via tool outputs (e.g., a fetched webpage containing injection)</li>
113
+ </ul>
114
+
115
+ <h2 id="sql-injection">SQL Injection Prevention</h2>
116
+ <p>Detects and blocks SQL injection attempts in tool inputs and API request bodies.</p>
117
+
118
+ <div class="card">
119
+ <table>
120
+ <tr><th>Setting</th><th>Description</th></tr>
121
+ <tr><td><strong>Enable Protection</strong></td><td>Master toggle</td></tr>
122
+ <tr><td><strong>Detection Mode</strong></td><td><code>Monitor Only</code> (log but allow) or <code>Block Request</code> (reject)</td></tr>
123
+ <tr><td><strong>Scan Tool Arguments</strong></td><td>Check arguments passed to agent tools (database queries, file operations, etc.)</td></tr>
124
+ <tr><td><strong>Scan API Request Bodies</strong></td><td>Check incoming API request payloads for SQL patterns</td></tr>
125
+ <tr><td><strong>Log Detections</strong></td><td>Write events to the audit log</td></tr>
126
+ </table>
127
+ </div>
128
+
129
+ <h3>Detection Patterns</h3>
130
+ <p>Scans for common SQL injection vectors including:</p>
131
+ <ul>
132
+ <li>Union-based injection (<code>UNION SELECT</code>)</li>
133
+ <li>Boolean-based blind injection (<code>OR 1=1</code>)</li>
134
+ <li>Time-based injection (<code>SLEEP()</code>, <code>WAITFOR DELAY</code>)</li>
135
+ <li>Stacked queries (semicolon-separated statements)</li>
136
+ <li>Comment-based evasion (<code>--</code>, <code>/* */</code>)</li>
137
+ </ul>
138
+
139
+ <h2 id="input-validation">Input Validation</h2>
140
+ <p>Sanitizes and validates all incoming data to prevent malformed or malicious payloads.</p>
141
+
142
+ <div class="card">
143
+ <table>
144
+ <tr><th>Setting</th><th>Default</th><th>Description</th></tr>
145
+ <tr><td><strong>Max Input Length</strong></td><td>100,000 chars</td><td>Reject inputs exceeding this length. Prevents memory exhaustion attacks.</td></tr>
146
+ <tr><td><strong>Max JSON Depth</strong></td><td>20 levels</td><td>Reject deeply nested JSON objects. Prevents stack overflow in parsers.</td></tr>
147
+ <tr><td><strong>Strip HTML</strong></td><td>Off</td><td>Remove all HTML tags from text inputs. Use when agents don't need HTML.</td></tr>
148
+ <tr><td><strong>Block Scripts</strong></td><td>On</td><td>Reject inputs containing <code>&lt;script&gt;</code> tags. Prevents XSS via agent outputs.</td></tr>
149
+ <tr><td><strong>Sanitize Unicode</strong></td><td>On</td><td>Normalize Unicode and remove invisible/homoglyph characters used for evasion.</td></tr>
150
+ </table>
151
+ </div>
152
+
153
+ <h2 id="output-filtering">Output Filtering</h2>
154
+ <p>Scans agent outputs for secrets and personal information before they reach users or external systems.</p>
155
+
156
+ <div class="card">
157
+ <table>
158
+ <tr><th>Setting</th><th>Description</th></tr>
159
+ <tr><td><strong>Filter Mode</strong></td><td>
160
+ <ul style="margin: 0;">
161
+ <li><strong>Monitor Only</strong> — Log but don't modify outputs</li>
162
+ <li><strong>Redact Secrets</strong> — Replace detected secrets with <code>[REDACTED]</code></li>
163
+ <li><strong>Block Output</strong> — Reject the entire response</li>
164
+ </ul>
165
+ </td></tr>
166
+ <tr><td><strong>Scan for Secrets</strong></td><td>Detect API keys, passwords, tokens, connection strings</td></tr>
167
+ <tr><td><strong>Scan for PII</strong></td><td>Detect emails, phone numbers, SSNs, credit card numbers</td></tr>
168
+ <tr><td><strong>Log Detections</strong></td><td>Write events to the audit log</td></tr>
169
+ </table>
170
+ </div>
171
+
172
+ <div class="warning"><strong>Important:</strong> Output filtering works alongside <a href="/docs/dlp">DLP rules</a>. DLP provides more granular, rule-based detection. Output filtering here is a safety net that catches common patterns without custom rules.</div>
173
+
174
+ <h2 id="transport-encryption">Transport Encryption</h2>
175
+ <p>Encrypts API data in transit between the dashboard and server using AES-256-CBC with HMAC verification. Provides application-layer encryption on top of HTTPS for defense-in-depth.</p>
176
+
177
+ <div class="card">
178
+ <h3 style="margin-top: 0;">Why Use This?</h3>
179
+ <p>HTTPS already encrypts traffic at the transport layer. Transport encryption adds a second layer that protects against:</p>
180
+ <ul>
181
+ <li><strong>Compromised TLS proxies</strong> — Corporate SSL inspection that decrypts and re-encrypts traffic</li>
182
+ <li><strong>MITM attacks</strong> — Even if TLS is broken, data remains encrypted</li>
183
+ <li><strong>Network sniffing</strong> — Encrypted payloads are opaque even if captured</li>
184
+ </ul>
185
+ </div>
186
+
187
+ <h3>Encryption Modes</h3>
188
+ <table>
189
+ <tr><th>Mode</th><th>Description</th></tr>
190
+ <tr><td><strong>Encrypt All</strong></td><td>Every dashboard API call is encrypted. SSE streams are automatically excluded (they don't support custom headers).</td></tr>
191
+ <tr><td><strong>Sensitive Only</strong></td><td>Pre-selected endpoint groups handling credentials and secrets (API keys, OAuth tokens, database URLs, vault).</td></tr>
192
+ <tr><td><strong>Custom</strong></td><td>Toggle individual endpoint groups and add custom path patterns.</td></tr>
193
+ </table>
194
+
195
+ <h3>Endpoint Groups</h3>
196
+ <p>There are 22 endpoint groups covering every API area. Groups marked <span style="color: var(--danger);">SENSITIVE</span> handle credentials or secrets:</p>
197
+ <ul>
198
+ <li><strong>Models & API Keys</strong> <span style="color: var(--danger);">SENSITIVE</span> — LLM provider API keys</li>
199
+ <li><strong>Authentication</strong> <span style="color: var(--danger);">SENSITIVE</span> — Login, sessions, tokens</li>
200
+ <li><strong>Email & SMTP</strong> <span style="color: var(--danger);">SENSITIVE</span> — SMTP credentials, email configs</li>
201
+ <li><strong>Database Connections</strong> <span style="color: var(--danger);">SENSITIVE</span> — Database URLs and credentials</li>
202
+ <li><strong>Vault & Secrets</strong> <span style="color: var(--danger);">SENSITIVE</span> — Encrypted secret storage</li>
203
+ <li><strong>Integrations</strong> <span style="color: var(--danger);">SENSITIVE</span> — OAuth tokens, org integrations</li>
204
+ <li><strong>Memory</strong> <span style="color: var(--danger);">SENSITIVE</span> — Agent memories and transfer data</li>
205
+ <li>Settings, Agents, Skills, Organizations, Knowledge, Tasks, Workforce, Messages, Guardrails, Journal, Approvals, Compliance, Domain, Roles, Dashboard</li>
206
+ </ul>
207
+
208
+ <h3>Advanced Settings</h3>
209
+ <table>
210
+ <tr><th>Setting</th><th>Default</th><th>Description</th></tr>
211
+ <tr><td><strong>Payload Max Age</strong></td><td>300 seconds</td><td>Reject encrypted payloads older than this (replay attack protection)</td></tr>
212
+ <tr><td><strong>Debug Logging</strong></td><td>Off</td><td>Log encryption/decryption operations to browser console. Never enable in production.</td></tr>
213
+ </table>
214
+
215
+ <p>For full technical details, see the <a href="/docs/transport-encryption">Transport Encryption documentation</a>.</p>
216
+
217
+ <h2 id="dependency-management">Dependency &amp; Package Management</h2>
218
+ <p>Organization-wide defaults for how agents install software packages. Individual agents can override these in their Permissions tab.</p>
219
+
220
+ <div class="card">
221
+ <h3 style="margin-top: 0;">Install Policy</h3>
222
+ <table>
223
+ <tr><th>Policy</th><th>Description</th></tr>
224
+ <tr><td><strong>Auto</strong></td><td>Agents install what they need without asking. Best for trusted environments.</td></tr>
225
+ <tr><td><strong>Ask Manager</strong></td><td>Agents must get human approval before installing any package.</td></tr>
226
+ <tr><td><strong>Deny</strong></td><td>No package installation allowed. Agents must use pre-installed tools.</td></tr>
227
+ </table>
228
+ </div>
229
+
230
+ <h3>Cross-Platform Support</h3>
231
+ <p>The dependency manager automatically detects the platform and uses the appropriate package manager:</p>
232
+ <table>
233
+ <tr><th>Platform</th><th>Package Managers</th></tr>
234
+ <tr><td>macOS</td><td>Homebrew (brew)</td></tr>
235
+ <tr><td>Ubuntu/Debian</td><td>apt</td></tr>
236
+ <tr><td>Fedora/RHEL</td><td>dnf</td></tr>
237
+ <tr><td>Arch Linux</td><td>pacman</td></tr>
238
+ <tr><td>Snap-enabled Linux</td><td>snap</td></tr>
239
+ <tr><td>Windows</td><td>Chocolatey, winget, Scoop</td></tr>
240
+ <tr><td>npm packages</td><td>npm (local install to temp dir, never global)</td></tr>
241
+ <tr><td>Python packages</td><td>pip</td></tr>
242
+ </table>
243
+
244
+ <h3>Safety Guarantees</h3>
245
+ <ul>
246
+ <li><strong>Never touches existing installations</strong> — If a tool is already installed, agents use it as-is without upgrading or reinstalling.</li>
247
+ <li><strong>npm packages install locally</strong> — Installed to a session temp directory (<code>/tmp/agenticmail-deps-{pid}/</code>), never globally. Cleaned up on session end.</li>
248
+ <li><strong>Blocked packages</strong> — Packages listed here can never be installed by any agent, regardless of policy.</li>
249
+ <li><strong>Auto-cleanup</strong> — Agent-installed packages are removed when the session ends (only agent-installed, never pre-existing).</li>
250
+ </ul>
251
+
252
+ <h3>Elevated Access</h3>
253
+ <table>
254
+ <tr><th>Setting</th><th>Description</th></tr>
255
+ <tr><td><strong>Allow Global Installs</strong></td><td>Permit system-level package installation (brew, apt, etc.). When off, only local npm/pip installs are allowed.</td></tr>
256
+ <tr><td><strong>Allow Elevated (sudo)</strong></td><td>Permit agents to use sudo for packages that require root (e.g., <code>apt install</code>). Requires a system password to be configured.</td></tr>
257
+ <tr><td><strong>Allowed Managers</strong></td><td>Whitelist which package managers agents can use.</td></tr>
258
+ </table>
259
+
260
+ <div class="danger"><strong>Security note:</strong> Enabling elevated access gives agents the ability to install system-level software. Only enable this in trusted, isolated environments. The system password is stored encrypted in the server's security config.</div>
261
+
262
+ <h2 id="screen-unlock">Screen Unlock &amp; Machine Access</h2>
263
+ <p>Allows the system to automatically unlock the screen when agents need to interact with the desktop (browser automation, GUI tools, scheduled tasks).</p>
264
+
265
+ <div class="card">
266
+ <h3 style="margin-top: 0;">How It Works</h3>
267
+ <ol>
268
+ <li>Agent detects the screen is locked (via system APIs)</li>
269
+ <li>System wakes the display if asleep (using <code>caffeinate</code> on macOS)</li>
270
+ <li>Types your password to unlock the screen (via AppleScript keystroke on macOS)</li>
271
+ <li>Agent performs the required action (browser, desktop automation, etc.)</li>
272
+ </ol>
273
+ </div>
274
+
275
+ <h3>Settings</h3>
276
+ <table>
277
+ <tr><th>Setting</th><th>Description</th></tr>
278
+ <tr><td><strong>Enable Screen Auto-Unlock</strong></td><td>Master toggle for all screen unlock features</td></tr>
279
+ <tr><td><strong>System / Computer Password</strong></td><td>Your macOS or Linux login password. Stored encrypted in the server's security config. Agents never see the raw password.</td></tr>
280
+ <tr><td><strong>Check Screen Status</strong></td><td>Shows whether the screen is currently locked or unlocked, and the platform</td></tr>
281
+ <tr><td><strong>Unlock Now</strong></td><td>Manually trigger an unlock (useful for testing)</td></tr>
282
+ <tr><td><strong>Auto-Unlock on Agent Activity</strong></td><td>Automatically unlock when an agent needs to use the browser, run desktop automation, or start a scheduled task</td></tr>
283
+ <tr><td><strong>Prevent System Sleep</strong></td><td>Keep the system awake using <code>caffeinate</code> (macOS) or <code>systemd-inhibit</code> (Linux). Prevents sleep while agents are active.</td></tr>
284
+ </table>
285
+
286
+ <h3>Platform Support</h3>
287
+ <table>
288
+ <tr><th>Platform</th><th>Lock Detection</th><th>Unlock Method</th><th>Sleep Prevention</th></tr>
289
+ <tr><td>macOS</td><td>Quartz session check</td><td>AppleScript keystroke</td><td><code>caffeinate -u -t 2</code></td></tr>
290
+ <tr><td>Linux</td><td><code>loginctl</code> / <code>xdotool</code></td><td><code>loginctl unlock-session</code></td><td><code>systemd-inhibit</code></td></tr>
291
+ <tr><td>Windows</td><td>Not supported</td><td>Not supported</td><td>Not supported</td></tr>
292
+ </table>
293
+
294
+ <div class="warning"><strong>Security consideration:</strong> The password is stored in the server's encrypted security config. Only the server process has access — agents invoke the unlock via an API call and never handle the password directly. Still, ensure your server is properly secured.</div>
295
+
296
+ <h2 id="audit-logging">Security Audit Log</h2>
297
+ <p>Log and monitor security events across your instance.</p>
298
+
299
+ <div class="card">
300
+ <table>
301
+ <tr><th>Setting</th><th>Default</th><th>Description</th></tr>
302
+ <tr><td><strong>Enable Audit Logging</strong></td><td>On</td><td>Master toggle for security event logging</td></tr>
303
+ <tr><td><strong>Retention (days)</strong></td><td>90</td><td>How long to keep audit log entries before auto-deletion</td></tr>
304
+ <tr><td><strong>Log Prompt Injection Attempts</strong></td><td>On</td><td>Record detected prompt injection attempts</td></tr>
305
+ <tr><td><strong>Log All Tool Calls</strong></td><td>Off</td><td>Record every tool invocation by every agent. High volume — enable only for investigation.</td></tr>
306
+ <tr><td><strong>Log API Access</strong></td><td>Off</td><td>Record all API endpoint access. Very high volume.</td></tr>
307
+ </table>
308
+ </div>
309
+
310
+ <h3>Recent Security Events</h3>
311
+ <p>The audit log section also displays the 10 most recent security events with severity levels (critical, high, medium, low). Click "Refresh" to fetch the latest events.</p>
312
+
313
+ <h2 id="best-practices">Best Practices</h2>
314
+
315
+ <div class="card">
316
+ <h3 style="margin-top: 0;">Recommended Configuration</h3>
317
+ <table>
318
+ <tr><th>Setting</th><th>Recommendation</th></tr>
319
+ <tr><td>Prompt Injection</td><td>Sanitize mode, Medium sensitivity</td></tr>
320
+ <tr><td>SQL Injection</td><td>Block mode, scan both tool inputs and API bodies</td></tr>
321
+ <tr><td>Input Validation</td><td>Enabled with defaults (100K max length, 20 JSON depth)</td></tr>
322
+ <tr><td>Output Filtering</td><td>Redact mode with both secret and PII scanning</td></tr>
323
+ <tr><td>Transport Encryption</td><td>Sensitive Only (or Encrypt All for high-security environments)</td></tr>
324
+ <tr><td>Dependency Management</td><td>Auto mode with blocked packages for security tools (nmap, metasploit)</td></tr>
325
+ <tr><td>Screen Unlock</td><td>Enabled only on dedicated agent machines, not shared workstations</td></tr>
326
+ <tr><td>Audit Logging</td><td>Enabled with 90-day retention, prompt injection logging on</td></tr>
327
+ </table>
328
+ </div>
329
+
330
+ <h2>Related Pages</h2>
331
+ <div class="card">
332
+ <ul>
333
+ <li><a href="/docs/settings-network">Network &amp; Firewall</a> — IP filtering, egress rules, proxy, geo-blocking</li>
334
+ <li><a href="/docs/settings-tool-security">Tool Security</a> — Path sandbox, SSRF, command sanitizer</li>
335
+ <li><a href="/docs/transport-encryption">Transport Encryption</a> — Detailed technical documentation</li>
336
+ <li><a href="/docs/dlp">Data Loss Prevention</a> — Rule-based content scanning</li>
337
+ <li><a href="/docs/audit">Audit Log</a> — View and search all audit events</li>
338
+ <li><a href="/docs/agent-permissions">Agent Permissions</a> — Per-agent dependency and security settings</li>
339
+ </ul>
340
+ </div>
341
+
342
+ <div style="margin-top:40px;padding-top:16px;border-top:1px solid var(--border);display:flex;justify-content:space-between;align-items:center;font-size:12px;color:var(--text-muted)">
343
+ <span>AgenticMail Enterprise Documentation</span>
344
+ <a href="https://github.com/agenticmail/enterprise/issues" target="_blank" style="display:inline-flex;align-items:center;gap:4px;color:var(--text-muted);text-decoration:none"><svg width="14" height="14" viewBox="0 0 24 24" fill="currentColor"><path d="M12 0C5.37 0 0 5.37 0 12c0 5.31 3.435 9.795 8.205 11.385.6.105.825-.255.825-.57 0-.285-.015-1.23-.015-2.235-3.015.555-3.795-.735-4.035-1.41-.135-.345-.72-1.41-1.23-1.695-.42-.225-1.02-.78-.015-.795.945-.015 1.62.87 1.845 1.23 1.08 1.815 2.805 1.305 3.495.99.105-.78.42-1.305.765-1.605-2.67-.3-5.46-1.335-5.46-5.925 0-1.305.465-2.385 1.23-3.225-.12-.3-.54-1.53.12-3.18 0 0 1.005-.315 3.3 1.23.96-.27 1.98-.405 3-.405s2.04.135 3 .405c2.295-1.56 3.3-1.23 3.3-1.23.66 1.65.24 2.88.12 3.18.765.84 1.23 1.905 1.23 3.225 0 4.605-2.805 5.625-5.475 5.925.435.375.81 1.095.81 2.22 0 1.605-.015 2.895-.015 3.3 0 .315.225.69.825.57A12.02 12.02 0 0024 12c0-6.63-5.37-12-12-12z"/></svg> Report an issue</a>
345
+ </div>
346
+ </body>
347
+ </html>
@@ -0,0 +1,176 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Tool Security — AgenticMail Enterprise</title>
7
+ <style>
8
+ :root {
9
+ --bg-primary: #0f1117; --bg-secondary: #161822; --bg-tertiary: #1c1f2e; --bg-card: #181b28;
10
+ --text-primary: #e8eaf0; --text-secondary: #9ca3b8; --text-muted: #6b7394;
11
+ --accent: #6366f1; --accent-soft: rgba(99,102,241,0.12);
12
+ --border: #2a2f45; --border-light: #353a52; --radius: 10px;
13
+ --success: #15803d; --warning: #eab308; --danger: #ef4444;
14
+ --info-soft: rgba(99,102,241,0.06);
15
+ }
16
+ [data-theme="light"] {
17
+ --bg-primary: #d0c5a0; --bg-secondary: #ddd3b2; --bg-tertiary: #c8bc94; --bg-card: #e5dcc0;
18
+ --text-primary: #2c2410; --text-secondary: #3d3520; --text-muted: #6b5e42;
19
+ --accent: #2563eb; --accent-soft: rgba(37,99,235,0.1);
20
+ --border: #b8ad8a; --border-light: #a89e7a; --info-soft: rgba(37,99,235,0.06);
21
+ }
22
+ * { box-sizing: border-box; margin: 0; padding: 0; }
23
+ body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; background: var(--bg-primary); color: var(--text-primary); line-height: 1.7; padding: 32px; max-width: 900px; margin: 0 auto; }
24
+ h1 { font-size: 28px; margin-bottom: 8px; }
25
+ h2 { font-size: 20px; margin: 32px 0 12px; padding-bottom: 8px; border-bottom: 1px solid var(--border); }
26
+ h3 { font-size: 16px; margin: 20px 0 8px; color: var(--accent); }
27
+ p { margin-bottom: 12px; color: var(--text-secondary); }
28
+ code { background: var(--bg-primary); border: 1px solid var(--border); padding: 2px 6px; border-radius: 4px; font-size: 13px; color: var(--accent); }
29
+ .card { background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius); padding: 20px; margin: 16px 0; }
30
+ .tip { background: var(--info-soft); border: 1px solid rgba(59,130,246,0.3); padding: 12px 16px; border-radius: var(--radius); margin: 12px 0; font-size: 13px; color: var(--text-secondary); }
31
+ .warning { background: rgba(245,158,11,0.08); border: 1px solid rgba(245,158,11,0.3); padding: 12px 16px; border-radius: var(--radius); margin: 12px 0; font-size: 13px; color: var(--text-secondary); }
32
+ .danger { background: rgba(239,68,68,0.08); border: 1px solid rgba(239,68,68,0.3); padding: 12px 16px; border-radius: var(--radius); margin: 12px 0; font-size: 13px; color: var(--text-secondary); }
33
+ table { width: 100%; border-collapse: collapse; margin: 12px 0; font-size: 13px; }
34
+ th, td { text-align: left; padding: 8px 12px; border: 1px solid var(--border); color: var(--text-secondary); }
35
+ th { background: var(--bg-secondary); font-weight: 600; color: var(--text-primary); }
36
+ ul, ol { padding-left: 24px; margin-bottom: 12px; color: var(--text-secondary); }
37
+ li { margin-bottom: 6px; }
38
+ a { color: var(--accent); }
39
+ .back { display: inline-block; margin-bottom: 20px; font-size: 13px; color: var(--text-muted); text-decoration: none; }
40
+ .back:hover { color: var(--text-primary); }
41
+ strong { color: var(--text-primary); }
42
+ .toc { background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius); padding: 16px 20px; margin: 16px 0; }
43
+ .toc h3 { margin: 0 0 8px; font-size: 14px; }
44
+ .toc ul { list-style: none; padding: 0; }
45
+ .toc li { margin: 4px 0; }
46
+ .toc a { font-size: 13px; text-decoration: none; }
47
+ </style>
48
+ <script>
49
+ var t = localStorage.getItem('em_theme') || 'dark';
50
+ document.documentElement.setAttribute('data-theme', t);
51
+ </script>
52
+ </head>
53
+ <body>
54
+
55
+ <a class="back" href="/dashboard/settings">&#8592; Back to Settings</a>
56
+
57
+ <h1>Tool Security</h1>
58
+ <p style="color: var(--text-muted); margin-bottom: 24px;">Fine-grained controls over what agents' tools can access — file paths, network endpoints, and shell commands.</p>
59
+
60
+ <div class="toc">
61
+ <h3>On This Page</h3>
62
+ <ul>
63
+ <li><a href="#path-sandbox">Path Sandbox</a></li>
64
+ <li><a href="#ssrf">SSRF Protection</a></li>
65
+ <li><a href="#command-sanitizer">Command Sanitizer</a></li>
66
+ <li><a href="#audit-logging">Audit Logging</a></li>
67
+ <li><a href="#rate-limiting">Rate Limiting</a></li>
68
+ <li><a href="#circuit-breaker">Circuit Breaker</a></li>
69
+ <li><a href="#telemetry">Telemetry</a></li>
70
+ </ul>
71
+ </div>
72
+
73
+ <h2 id="path-sandbox">Path Sandbox</h2>
74
+ <p>Restricts which file system paths agents can read from and write to. Prevents agents from accessing sensitive system files or other users' data.</p>
75
+
76
+ <div class="card">
77
+ <table>
78
+ <tr><th>Setting</th><th>Description</th></tr>
79
+ <tr><td><strong>Enable</strong></td><td>Toggle path sandboxing</td></tr>
80
+ <tr><td><strong>Allowed Paths</strong></td><td>Directories agents can access (e.g., <code>/home/agent/workspace</code>, <code>/tmp</code>)</td></tr>
81
+ <tr><td><strong>Blocked Paths</strong></td><td>Directories that are always blocked (e.g., <code>/etc/shadow</code>, <code>~/.ssh</code>)</td></tr>
82
+ </table>
83
+ </div>
84
+
85
+ <div class="tip"><strong>Default behavior:</strong> When disabled, agents can access any file the server process has permissions for. Enable sandboxing in production to enforce least-privilege file access.</div>
86
+
87
+ <h2 id="ssrf">SSRF Protection</h2>
88
+ <p>Prevents Server-Side Request Forgery — agents making network requests to internal services, cloud metadata endpoints, or private IP ranges.</p>
89
+
90
+ <div class="card">
91
+ <table>
92
+ <tr><th>Setting</th><th>Description</th></tr>
93
+ <tr><td><strong>Enable</strong></td><td>Toggle SSRF protection</td></tr>
94
+ <tr><td><strong>Block Private IPs</strong></td><td>Block requests to <code>10.x.x.x</code>, <code>172.16.x.x</code>, <code>192.168.x.x</code>, <code>127.x.x.x</code></td></tr>
95
+ <tr><td><strong>Block Cloud Metadata</strong></td><td>Block requests to <code>169.254.169.254</code> (AWS/GCP metadata endpoint)</td></tr>
96
+ <tr><td><strong>Allowed Internal Hosts</strong></td><td>Internal hosts that agents ARE allowed to reach (exceptions to the block rules)</td></tr>
97
+ </table>
98
+ </div>
99
+
100
+ <div class="danger"><strong>Critical for cloud deployments:</strong> Without SSRF protection, a compromised agent could query the cloud metadata endpoint to steal IAM credentials, access tokens, and instance identity documents.</div>
101
+
102
+ <h2 id="command-sanitizer">Command Sanitizer</h2>
103
+ <p>Controls which shell commands agents can execute via the <code>exec</code> tool.</p>
104
+
105
+ <div class="card">
106
+ <table>
107
+ <tr><th>Setting</th><th>Description</th></tr>
108
+ <tr><td><strong>Enable</strong></td><td>Toggle command sanitization</td></tr>
109
+ <tr><td><strong>Mode</strong></td><td><strong>Blocklist</strong> (block specific commands) or <strong>Allowlist</strong> (only allow specific commands)</td></tr>
110
+ <tr><td><strong>Blocked Commands</strong></td><td>Commands agents cannot run: <code>rm -rf</code>, <code>shutdown</code>, <code>reboot</code>, <code>mkfs</code></td></tr>
111
+ <tr><td><strong>Allowed Commands</strong></td><td>In allowlist mode, only these commands can be executed</td></tr>
112
+ </table>
113
+ </div>
114
+
115
+ <h2 id="audit-logging">Audit Logging</h2>
116
+ <p>Log all tool usage with optional API key redaction. Provides a trail of every tool invocation for forensics and compliance.</p>
117
+
118
+ <div class="card">
119
+ <table>
120
+ <tr><th>Setting</th><th>Description</th></tr>
121
+ <tr><td><strong>Enable</strong></td><td>Toggle tool audit logging</td></tr>
122
+ <tr><td><strong>Redact API Keys</strong></td><td>Automatically redact API keys, tokens, and passwords from log entries</td></tr>
123
+ </table>
124
+ </div>
125
+
126
+ <h2 id="rate-limiting">Rate Limiting</h2>
127
+ <p>Limits how frequently agents can invoke tools. Prevents runaway loops and resource exhaustion.</p>
128
+
129
+ <div class="card">
130
+ <table>
131
+ <tr><th>Setting</th><th>Description</th></tr>
132
+ <tr><td><strong>Enable</strong></td><td>Toggle tool rate limiting</td></tr>
133
+ <tr><td><strong>Calls per Minute</strong></td><td>Max tool calls per agent per minute</td></tr>
134
+ <tr><td><strong>Calls per Hour</strong></td><td>Max tool calls per agent per hour</td></tr>
135
+ </table>
136
+ </div>
137
+
138
+ <h2 id="circuit-breaker">Circuit Breaker</h2>
139
+ <p>Automatically disables tools that are failing repeatedly. Prevents agents from wasting tokens retrying broken operations.</p>
140
+
141
+ <div class="card">
142
+ <table>
143
+ <tr><th>Setting</th><th>Description</th></tr>
144
+ <tr><td><strong>Enable</strong></td><td>Toggle circuit breaker</td></tr>
145
+ <tr><td><strong>Failure Threshold</strong></td><td>Number of consecutive failures before a tool is disabled</td></tr>
146
+ <tr><td><strong>Recovery Time</strong></td><td>How long before the tool is re-enabled for retry</td></tr>
147
+ </table>
148
+ </div>
149
+
150
+ <h2 id="telemetry">Telemetry</h2>
151
+ <p>Collect anonymous usage metrics for tool performance monitoring.</p>
152
+
153
+ <div class="card">
154
+ <table>
155
+ <tr><th>Setting</th><th>Description</th></tr>
156
+ <tr><td><strong>Enable</strong></td><td>Toggle telemetry collection</td></tr>
157
+ <tr><td><strong>Metrics</strong></td><td>Tool call counts, latency percentiles, error rates</td></tr>
158
+ </table>
159
+ </div>
160
+
161
+ <h2>Related Pages</h2>
162
+ <div class="card">
163
+ <ul>
164
+ <li><a href="/docs/settings-security">Security System</a> — Prompt injection, encryption, audit logging</li>
165
+ <li><a href="/docs/settings-network">Network &amp; Firewall</a> — IP filtering, egress, proxy</li>
166
+ <li><a href="/docs/agent-permissions">Agent Permissions</a> — Per-agent tool access controls</li>
167
+ <li><a href="/docs/agent-tools">Agent Tools</a> — Available tools and their capabilities</li>
168
+ </ul>
169
+ </div>
170
+
171
+ <div style="margin-top:40px;padding-top:16px;border-top:1px solid var(--border);display:flex;justify-content:space-between;align-items:center;font-size:12px;color:var(--text-muted)">
172
+ <span>AgenticMail Enterprise Documentation</span>
173
+ <a href="https://github.com/agenticmail/enterprise/issues" target="_blank" style="display:inline-flex;align-items:center;gap:4px;color:var(--text-muted);text-decoration:none"><svg width="14" height="14" viewBox="0 0 24 24" fill="currentColor"><path d="M12 0C5.37 0 0 5.37 0 12c0 5.31 3.435 9.795 8.205 11.385.6.105.825-.255.825-.57 0-.285-.015-1.23-.015-2.235-3.015.555-3.795-.735-4.035-1.41-.135-.345-.72-1.41-1.23-1.695-.42-.225-1.02-.78-.015-.795.945-.015 1.62.87 1.845 1.23 1.08 1.815 2.805 1.305 3.495.99.105-.78.42-1.305.765-1.605-2.67-.3-5.46-1.335-5.46-5.925 0-1.305.465-2.385 1.23-3.225-.12-.3-.54-1.53.12-3.18 0 0 1.005-.315 3.3 1.23.96-.27 1.98-.405 3-.405s2.04.135 3 .405c2.295-1.56 3.3-1.23 3.3-1.23.66 1.65.24 2.88.12 3.18.765.84 1.23 1.905 1.23 3.225 0 4.605-2.805 5.625-5.475 5.925.435.375.81 1.095.81 2.22 0 1.605-.015 2.895-.015 3.3 0 .315.225.69.825.57A12.02 12.02 0 0024 12c0-6.63-5.37-12-12-12z"/></svg> Report an issue</a>
174
+ </div>
175
+ </body>
176
+ </html>
@@ -195,15 +195,23 @@
195
195
  <p>Manage deployment credentials for pushing agents to different environments (Docker, Kubernetes, cloud VMs). Create credentials with target-specific configuration.</p>
196
196
 
197
197
  <h2 id="security">Security</h2>
198
- <p>The Security tab provides system-level security configuration, event monitoring, and port scanning to check your instance's exposure.</p>
198
+ <p>The Security tab provides comprehensive security configuration including prompt injection defense, SQL injection prevention, input/output filtering, transport encryption, dependency management, screen unlock, and audit logging. Each section has its own Edit/Save/Cancel buttons.</p>
199
199
 
200
- <h3>Transport Encryption</h3>
201
- <p>Encrypt API data in transit between the dashboard and server using AES-256-CBC. Choose to encrypt all API calls or select specific endpoint groups (API keys, database credentials, OAuth tokens, etc.). See the <a href="/docs/transport-encryption">Transport Encryption documentation</a> for full details.</p>
202
- <ul>
203
- <li><strong>Encrypt All:</strong> Every dashboard API call is encrypted</li>
204
- <li><strong>Sensitive Only:</strong> Pre-selected groups handling credentials and secrets</li>
205
- <li><strong>Custom:</strong> Toggle individual endpoint groups and add custom patterns</li>
206
- </ul>
200
+ <div class="card">
201
+ <table>
202
+ <tr><th>Section</th><th>What It Controls</th></tr>
203
+ <tr><td><strong>Prompt Injection Defense</strong></td><td>Multi-layer detection: monitor, sanitize, or block injection attempts</td></tr>
204
+ <tr><td><strong>SQL Injection Prevention</strong></td><td>Scan tool inputs and API bodies for SQL injection patterns</td></tr>
205
+ <tr><td><strong>Input Validation</strong></td><td>Max input length, JSON depth, HTML stripping, Unicode sanitization</td></tr>
206
+ <tr><td><strong>Output Filtering</strong></td><td>Scan agent outputs for secrets and PII; redact or block</td></tr>
207
+ <tr><td><strong>Transport Encryption</strong></td><td>AES-256-CBC encryption of API data between dashboard and server</td></tr>
208
+ <tr><td><strong>Dependency Management</strong></td><td>Org-wide package install policy, allowed managers, blocked packages</td></tr>
209
+ <tr><td><strong>Screen Unlock</strong></td><td>Auto-unlock the machine when agents need desktop access</td></tr>
210
+ <tr><td><strong>Security Audit Log</strong></td><td>Log prompt injection attempts, tool calls, API access</td></tr>
211
+ </table>
212
+ </div>
213
+
214
+ <p><a href="/docs/settings-security">View full Security System documentation &rarr;</a></p>
207
215
 
208
216
  <h2 id="tool-security">Tool Security</h2>
209
217
  <p>Fine-grained control over what agents' tools can access:</p>
@@ -218,16 +226,28 @@
218
226
  <tr><td><strong>Circuit Breaker</strong></td><td>Auto-disable tools that are failing repeatedly.</td></tr>
219
227
  </table>
220
228
  </div>
229
+ <p><a href="/docs/settings-tool-security">View full Tool Security documentation &rarr;</a></p>
221
230
 
222
231
  <h2 id="network">Network &amp; Firewall</h2>
223
- <p>Configure network-level security:</p>
224
- <ul>
225
- <li><strong>IP Allowlist:</strong> Only allow access from specific IPs or CIDR ranges</li>
226
- <li><strong>IP Blocklist:</strong> Block specific IPs</li>
227
- <li><strong>Rate Limiting:</strong> Limit requests per minute per IP</li>
228
- <li><strong>Geo-blocking:</strong> Restrict access by country</li>
229
- <li><strong>Test IP:</strong> Check if a specific IP would be allowed or blocked</li>
230
- </ul>
232
+ <p>Configure network-level security — who can access your instance and what agents can reach on the internet.</p>
233
+ <div class="card">
234
+ <table>
235
+ <tr><th>Section</th><th>What It Controls</th></tr>
236
+ <tr><td><strong>Inbound IP Filtering</strong></td><td>Allowlist or blocklist IPs/CIDRs with test tool</td></tr>
237
+ <tr><td><strong>Egress Filtering</strong></td><td>Control outbound hosts and ports agents can reach</td></tr>
238
+ <tr><td><strong>Proxy Configuration</strong></td><td>HTTP/HTTPS proxy for corporate/air-gapped environments</td></tr>
239
+ <tr><td><strong>Trusted Proxies</strong></td><td>Reverse proxy IPs for correct X-Forwarded-For extraction</td></tr>
240
+ <tr><td><strong>CORS Origins</strong></td><td>Allowed cross-origin request domains</td></tr>
241
+ <tr><td><strong>Rate Limiting</strong></td><td>Per-IP requests per minute with skip paths</td></tr>
242
+ <tr><td><strong>HTTPS Enforcement</strong></td><td>Redirect HTTP to HTTPS in production</td></tr>
243
+ <tr><td><strong>Security Headers</strong></td><td>HSTS, X-Frame-Options, Referrer-Policy, Permissions-Policy</td></tr>
244
+ <tr><td><strong>DNS Rebinding Protection</strong></td><td>Host header validation against allowlist</td></tr>
245
+ <tr><td><strong>Request Body Limits</strong></td><td>Maximum payload size (default 10 MB)</td></tr>
246
+ <tr><td><strong>Geo-IP Restrictions</strong></td><td>Country-based access control with built-in geolocation</td></tr>
247
+ <tr><td><strong>Webhook Security</strong></td><td>HMAC validation and source IP filtering for webhooks</td></tr>
248
+ </table>
249
+ </div>
250
+ <p><a href="/docs/settings-network">View full Network &amp; Firewall documentation &rarr;</a></p>
231
251
 
232
252
  <h2 id="troubleshooting">Troubleshooting</h2>
233
253
  <table>