{"id":1715,"date":"2026-08-07T01:20:54","date_gmt":"2026-08-07T01:20:54","guid":{"rendered":"https:\/\/vykhodtsev.dev\/?p=1715"},"modified":"2026-08-07T02:05:11","modified_gmt":"2026-08-07T02:05:11","slug":"1715","status":"publish","type":"post","link":"https:\/\/vykhodtsev.dev\/?p=1715","title":{"rendered":"Add users permissions to AI SQL bot"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aug-1-2026<br><strong>Add users permissions: Read. Write, Admin<\/strong><br>Depending on the user&#8217;s role, the agent can safely execute:<br>Read \u2013 SELECT<br>Write \u2013 INSERT, UPDATE<br>Admin \u2013 DDL operations such as CREATE, ALTER, and DROP<br>Building this project taught me that AI agents are much more than prompt engineering. The real engineering challenges are orchestration, security, permissions, execution flow, state management, validation, and making the system reliable when the model doesn&#8217;t behave exactly as expected.<br>This project has given me a much deeper appreciation for the engineering behind enterprise AI platforms such as Snowflake Cortex AI, Microsoft Fabric AI, and similar technologies.<br>It&#8217;s still a demo project, but it has already been an amazing learning experience. My next goal is to extend it with multiple data sources, MCP support, semantic models, and more advanced agent capabilities.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Aug-1-2026Add users permissions: Read. Write, AdminDepending on the user&#8217;s role, the agent can safely execute:Read \u2013 SELECTWrite \u2013 INSERT, UPDATEAdmin \u2013 DDL operations such as CREATE, ALTER, and DROPBuilding this project taught me that AI agents are much more than prompt engineering. The real engineering challenges are orchestration, security, permissions, execution flow, state management, validation, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1708,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1715","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"spectra_blocks_featured_image_url":{"thumbnail":{"url":"https:\/\/vykhodtsev.dev\/wp-content\/uploads\/2026\/08\/image-2-150x150.png","width":150,"height":150},"medium":{"url":"https:\/\/vykhodtsev.dev\/wp-content\/uploads\/2026\/08\/image-2-300x82.png","width":300,"height":82},"medium_large":{"url":"https:\/\/vykhodtsev.dev\/wp-content\/uploads\/2026\/08\/image-2.png","width":742,"height":202},"large":{"url":"https:\/\/vykhodtsev.dev\/wp-content\/uploads\/2026\/08\/image-2.png","width":742,"height":202},"full":{"url":"https:\/\/vykhodtsev.dev\/wp-content\/uploads\/2026\/08\/image-2.png","width":742,"height":202}},"spectra_blocks_author_info":{"display_name":"Aleksei","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/198b25ea575ebb3cbd0934cb05fd942d0f256a65d3ff388a161c857e00b092bf?s=96&d=mm&r=g","author_link":"https:\/\/vykhodtsev.dev\/?author=1","description":""},"_links":{"self":[{"href":"https:\/\/vykhodtsev.dev\/index.php?rest_route=\/wp\/v2\/posts\/1715","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vykhodtsev.dev\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vykhodtsev.dev\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vykhodtsev.dev\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vykhodtsev.dev\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1715"}],"version-history":[{"count":3,"href":"https:\/\/vykhodtsev.dev\/index.php?rest_route=\/wp\/v2\/posts\/1715\/revisions"}],"predecessor-version":[{"id":1726,"href":"https:\/\/vykhodtsev.dev\/index.php?rest_route=\/wp\/v2\/posts\/1715\/revisions\/1726"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/vykhodtsev.dev\/index.php?rest_route=\/wp\/v2\/media\/1708"}],"wp:attachment":[{"href":"https:\/\/vykhodtsev.dev\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1715"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vykhodtsev.dev\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1715"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vykhodtsev.dev\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1715"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}