1<!DOCTYPE html><html lang="en"><head><meta charSet="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><link rel="icon" href="/favicon.ico"/><title>Technical Blog · Anshuman Bhartiya</title><meta name="description" content="Explore in-depth technical blog posts on information security, technology, and cybersecurity by Anshuman Bhartiya."/><link rel="canonical" href="https://www.anshuman.ai/technical-blog"/><link rel="alternate" type="application/rss+xml" title="Anshuman Bhartiya RSS" href="https://www.anshuman.ai/api/rss"/><meta property="og:site_name" content="Anshuman Bhartiya"/><meta property="og:type" content="website"/><meta property="og:title" content="Technical Blog"/><meta property="og:description" content="Explore in-depth technical blog posts on information security, technology, and cybersecurity by Anshuman Bhartiya."/><meta property="og:url" content="https://www.anshuman.ai/technical-blog"/><meta property="og:image" content="https://www.anshuman.ai/images/profile.jpg"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:site" content="@anshuman_bh"/><meta name="twitter:creator" content="@anshuman_bh"/><meta name="twitter:title" content="Technical Blog"/><meta name="twitter:description" content="Explore in-depth technical blog posts on information security, technology, and cybersecurity by Anshuman Bhartiya."/><meta name="twitter:image" content="https://www.anshuman.ai/images/profile.jpg"/><meta name="next-head-count" content="19"/><link rel="preconnect" href="https://fonts.googleapis.com"/><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="anonymous"/><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin /><link rel="preload" href="/_next/static/css/48fff5b10cc59399.css" as="style"/><link rel="stylesheet" href="/_next/static/css/48fff5b10cc59399.css" data-n-g=""/><link rel="preload" href="/_next/static/css/2519a0dce44d370c.css" as="style"/><link rel="stylesheet" href="/_next/static/css/2519a0dce44d370c.css" data-n-p=""/><noscript data-n-css=""></noscript>
1<script defer="" nomodule="" src="/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script>
1<script src="/_next/static/chunks/webpack-ee7e63bc15b31913.js" defer=""></script>
1<script src="/_next/static/chunks/framework-9620da855a94eb57.js" defer=""></script>
1<script src="/_next/static/chunks/main-7ab193d09d20941f.js" defer=""></script>
1<script src="/_next/static/chunks/pages/_app-fbba49758db9f50c.js" defer=""></script>
1<script src="/_next/static/chunks/424-f30bb38a202533eb.js" defer=""></script>
1<script src="/_next/static/chunks/799-b13bee71b42d7bca.js" defer=""></script>
1<script src="/_next/static/chunks/993-87dcc68e07d2cafa.js" defer=""></script>
1<script src="/_next/static/chunks/pages/technical-blog-8bbd09e79ec0ca5a.js" defer=""></script>
1<script src="/_next/static/D8KjqlAJv2H-o2BvndA0u/_buildManifest.js" defer=""></script>
1<script src="/_next/static/D8KjqlAJv2H-o2BvndA0u/_ssgManifest.js" defer=""></script>
1<style data-href="https://fonts.googleapis.com/css2?family=Source+Serif+4:ital,opsz,wght@0,8..60,400;0,8..60,600;0,8..60,700;1,8..60,400;1,8..60,600&display=swap">@font-face{font-family:'Source Serif 4';font-style:italic;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/sourceserif4/v14/vEF02_tTDB4M7-auWDN0ahZJW1ge6NmXpVAHV83Bfb_US2D2QYxoUKIkn98pRl9dCA.woff) format('woff')}@font-face{font-family:'Source Serif 4';font-style:italic;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/sourceserif4/v14/vEF02_tTDB4M7-auWDN0ahZJW1ge6NmXpVAHV83Bfb_US2D2QYxoUKIkn98pmFhdCA.woff) format('woff')}@font-face{font-family:'Source Serif 4';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/sourceserif4/v14/vEFy2_tTDB4M7-auWDN0ahZJW3IX2ih5nk3AucvUHf6OAVIJmeUDygwjihdqrh8.woff) format('woff')}@font-face{font-family:'Source Serif 4';font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/sourceserif4/v14/vEFy2_tTDB4M7-auWDN0ahZJW3IX2ih5nk3AucvUHf6OAVIJmeUDygwjisltrh8.woff) format('woff')}@font-face{font-family:'Source Serif 4';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/sourceserif4/v14/vEFy2_tTDB4M7-auWDN0ahZJW3IX2ih5nk3AucvUHf6OAVIJmeUDygwjivBtrh8.woff) format('woff')}@font-face{font-family:'Source Serif 4';font-style:italic;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/sourceserif4/v14/vEFK2_tTDB4M7-auWDN0ahZJW1gewti_WpzEpMvsfA.woff2) format('woff2');unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:'Source Serif 4';font-style:italic;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/sourceserif4/v14/vEFK2_tTDB4M7-auWDN0ahZJW1gewtG_WpzEpMvsfA.woff2) format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:'Source Serif 4';font-style:italic;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/sourceserif4/v14/vEFK2_tTDB4M7-auWDN0ahZJW1gewta_WpzEpMvsfA.woff2) format('woff2');unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:'Source Serif 4';font-style:italic;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/sourceserif4/v14/vEFK2_tTDB4M7-auWDN0ahZJW1gewtq_WpzEpMvsfA.woff2) format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:'Source Serif 4';font-style:italic;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/sourceserif4/v14/vEFK2_tTDB4M7-auWDN0ahZJW1gewtu_WpzEpMvsfA.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:'Source Serif 4';font-style:italic;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/sourceserif4/v14/vEFK2_tTDB4M7-auWDN0ahZJW1gewtW_WpzEpMs.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:'Source Serif 4';font-style:italic;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/sourceserif4/v14/vEFK2_tTDB4M7-auWDN0ahZJW1gewti_WpzEpMvsfA.woff2) format('woff2');unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:'Source Serif 4';font-style:italic;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/sourceserif4/v14/vEFK2_tTDB4M7-auWDN0ahZJW1gewtG_WpzEpMvsfA.woff2) format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:'Source Serif 4';font-style:italic;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/sourceserif4/v14/vEFK2_tTDB4M7-auWDN0ahZJW1gewta_WpzEpMvsfA.woff2) format('woff2');
1unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:'Source Serif 4';font-style:italic;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/sourceserif4/v14/vEFK2_tTDB4M7-auWDN0ahZJW1gewtq_WpzEpMvsfA.woff2) format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:'Source Serif 4';font-style:italic;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/sourceserif4/v14/vEFK2_tTDB4M7-auWDN0ahZJW1gewtu_WpzEpMvsfA.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:'Source Serif 4';font-style:italic;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/sourceserif4/v14/vEFK2_tTDB4M7-auWDN0ahZJW1gewtW_WpzEpMs.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:'Source Serif 4';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/sourceserif4/v14/vEFI2_tTDB4M7-auWDN0ahZJW1gW8te1Xb7GlMo.woff2) format('woff2');unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:'Source Serif 4';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/sourceserif4/v14/vEFI2_tTDB4M7-auWDN0ahZJW1gf8te1Xb7GlMo.woff2) format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:'Source Serif 4';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/sourceserif4/v14/vEFI2_tTDB4M7-auWDN0ahZJW1gY8te1Xb7GlMo.woff2) format('woff2');unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:'Source Serif 4';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/sourceserif4/v14/vEFI2_tTDB4M7-auWDN0ahZJW1gU8te1Xb7GlMo.woff2) format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:'Source Serif 4';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/sourceserif4/v14/vEFI2_tTDB4M7-auWDN0ahZJW1gV8te1Xb7GlMo.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:'Source Serif 4';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/sourceserif4/v14/vEFI2_tTDB4M7-auWDN0ahZJW1gb8te1Xb7G.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:'Source Serif 4';font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/sourceserif4/v14/vEFI2_tTDB4M7-auWDN0ahZJW1gW8te1Xb7GlMo.woff2) format('woff2');unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:'Source Serif 4';font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/sourceserif4/v14/vEFI2_tTDB4M7-auWDN0ahZJW1gf8te1Xb7GlMo.woff2) format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:'Source Serif 4';font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/sourceserif4/v14/vEFI2_tTDB4M7-auWDN0ahZJW1gY8te1Xb7GlMo.woff2) format('woff2');unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:'Source Serif 4';font-style:normal;font-weight:600;font-display:swap;
1src:url(https://fonts.gstatic.com/s/sourceserif4/v14/vEFI2_tTDB4M7-auWDN0ahZJW1gU8te1Xb7GlMo.woff2) format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:'Source Serif 4';font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/sourceserif4/v14/vEFI2_tTDB4M7-auWDN0ahZJW1gV8te1Xb7GlMo.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:'Source Serif 4';font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/sourceserif4/v14/vEFI2_tTDB4M7-auWDN0ahZJW1gb8te1Xb7G.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:'Source Serif 4';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/sourceserif4/v14/vEFI2_tTDB4M7-auWDN0ahZJW1gW8te1Xb7GlMo.woff2) format('woff2');unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:'Source Serif 4';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/sourceserif4/v14/vEFI2_tTDB4M7-auWDN0ahZJW1gf8te1Xb7GlMo.woff2) format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:'Source Serif 4';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/sourceserif4/v14/vEFI2_tTDB4M7-auWDN0ahZJW1gY8te1Xb7GlMo.woff2) format('woff2');unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:'Source Serif 4';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/sourceserif4/v14/vEFI2_tTDB4M7-auWDN0ahZJW1gU8te1Xb7GlMo.woff2) format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:'Source Serif 4';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/sourceserif4/v14/vEFI2_tTDB4M7-auWDN0ahZJW1gV8te1Xb7GlMo.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:'Source Serif 4';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/sourceserif4/v14/vEFI2_tTDB4M7-auWDN0ahZJW1gb8te1Xb7G.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}</style></head><body>
1<script> 2 (function() { 3 var theme = 'light'; 4 try { theme = localStorage.getItem('theme') || 'light'; } catch (e) {} 5 document.documentElement.dataset.theme = theme; 6 })(); 7 </script>
7<div id="__next"><div class="fn-desk"><a class="fn-skip" href="#main">Skip to content</a><div class="fn-sheet"><header class="Navbar_navbar__GrSXC"><a class="Navbar_brand__JWn4W" href="/"><span class="Navbar_brandName__iIWVm">Anshuman Bhartiya</span><span class="Navbar_brandSub__cqBeH" aria-hidden="true">field notes</span></a><nav aria-label="Primary" class="Navbar_nav__yFFPE"><ul class="Navbar_navList__gzP7S"><li class="Navbar_navItem__Fpmiu"><a class="Navbar_navLink__16zHl " href="/">Home</a></li><li class="Navbar_navItem__Fpmiu"><a class="Navbar_navLink__16zHl Navbar_active__qyFWv" aria-current="page" href="/technical-blog">Tech Blog</a></li><li class="Navbar_navItem__Fpmiu"><a class="Navbar_navLink__16zHl " href="/talks">Talks</a></li><li class="Navbar_navItem__Fpmiu"><a class="Navbar_navLink__16zHl " href="/security-research">Research</a></li><li class="Navbar_navItem__Fpmiu"><a class="Navbar_navLink__16zHl " href="/services">Services</a></li></ul></nav><div class="ThemeToggle_placeholder__wBqzv" aria-hidden="true"></div></header><div class="fn-body"><div class="fn-column"><main id="main" class="layout_main__DFqTq"><section class="utils_headingMd__XQE5B"><header class="utils_pageHeader__BZvQN"><span class="fn-kicker">Notebook index</span><h1 class="fn-headline utils_headingLg__RYtYb">Technical Blog</h1></header><aside class="fn-note">25<!-- --> entries, <!-- -->2013<!-- -->â<!-- -->2026</aside><section aria-labelledby="year-2026"><h2 class="fn-year" id="year-2026"><span class="fn-year__num">2026</span><span class="fn-year__rule" aria-hidden="true"></span><span class="fn-year__count">7<!-- --> <!-- -->entries</span></h2><ul class="fn-entries"><li class="fn-entry"><span class="fn-entry__no">Nº <!-- -->25</span><a class="fn-entry__title" href="/posts/openclaw-advisory-benchmark">Building a Real-World Security Benchmark for AI Code Scanners</a><span class="fn-entry__date"><time dateTime="2026-03-27">March 27, 2026</time></span></li><li class="fn-entry"><span class="fn-entry__no">Nº <!-- -->24</span><a class="fn-entry__title" href="/posts/vulnvibes-intro">VulnVibes: Building an AI Agent That Reasons Across Microservices to Find Real Vulnerabilities</a><span class="fn-entry__date"><time dateTime="2026-03-13">March 13, 2026</time></span></li><li class="fn-entry"><span class="fn-entry__no">Nº <!-- -->23</span><a class="fn-entry__title" href="/posts/building-with-sage-1">Day in the Life: Building a Prototype with My AI Agent (Without Getting Pwned)</a><span class="fn-entry__date"><time dateTime="2026-02-13">February 13, 2026</time></span></li><li class="fn-entry"><span class="fn-entry__no">Nº <!-- -->22</span><a class="fn-entry__title" href="/posts/browser-relay">Browser Relay: When Your AI Assistant Gets Hands on Your Browser</a><span class="fn-entry__date"><time dateTime="2026-01-25">January 25, 2026</time></span></li><li class="fn-entry"><span class="fn-entry__no">Nº <!-- -->21</span><a class="fn-entry__title" href="/posts/securevibes-part4">Skills: The Missing Piece in AI Security Tooling</a><span class="fn-entry__date"><time dateTime="2026-01-17">January 17, 2026</time></span></li><li class="fn-entry"><span class="fn-entry__no">Nº <!-- -->20</span><a class="fn-entry__title" href="/posts/blogging-from-telegram">How I Prompted My Personal AI Assistant to Write a Blog For Me</a><span class="fn-entry__date"><time dateTime="2026-01-16">January 16, 2026</time></span></li><li class="fn-entry"><span class="fn-entry__no">Nº <!-- -->19</span><a class="fn-entry__title" href="/posts/my-clawdbot-setup">Introducing Sage: My Personal AI Assistant That Actually Works</a><span class="fn-entry__date"><time dateTime="2026-01-15">January 15, 2026</time></span></li></ul></section><section aria-labelledby="year-2025"><h2 class="fn-year" id="year-2025"><span class="fn-year__num">2025</span><span class="fn-year__rule" aria-hidden="true"></span><span class="fn-year__count">5<!-- --> <!-- -->entries</span></h2><ul class="fn-entries"><li class="fn-entry"><span class="fn-entry__no">Nº <!-- -->18</span><a class="fn-entry__title" href="/posts/securevibes-part3">Running SecureVibes on SecureVibes - Results & What's Next (Part 3/3)</a><span class="fn-entry__date"><time dateTime="2025-10-14">October 14, 2025</time></span></li><li class="fn-entry"><span class="fn-entry__no">Nº <!-- -->17</span><a class="fn-entry__title" href="/posts/securevibes-part2">Building SecureVibes: A Multi-Agent Security System (Part 2/3)</a><span class="fn-entry__date"><time dateTime="2025-10-14">October 14, 2025</time></span></li><li class="fn-entry"><span class="fn-entry__no">Nº <!-- -->16</span><a class="fn-entry__title" href="/posts/securevibes-part1">The Vibecoding Security Crisis: Why Current Scanners Fail (Part 1/3)</a><span class="fn-entry__date"><time dateTime="2025-10-14">October 14, 2025</time></span></li><li class="fn-entry"><span class="fn-entry__no">Nº <!-- -->15</span><a class="fn-entry__title" href="/posts/securevibes-intro">Introducing SecureVibes: A Multi-Agent Security System (3 Part Series)</a><span class="fn-entry__date"><time dateTime="2025-10-14">October 14, 2025</time></span></li><li class="fn-entry"><span class="fn-entry__no">Nº <!-- -->14</span><a class="fn-entry__title" href="/posts/defenseagent">How to build a defensive AI security agent with RAG</a><span class="fn-entry__date"><time dateTime="2025-01-03">January 3, 2025</time></span></li></ul></section><section aria-labelledby="year-2024"><h2 class="fn-year" id="year-2024"><span class="fn-year__num">2024</span><span class="fn-year__rule" aria-hidden="true"></span><span class="fn-year__count">2<!-- --> <!-- -->entries</span></h2><ul class="fn-entries"><li class="fn-entry"><span class="fn-entry__no">Nº <!-- -->13</span><a class="fn-entry__title" href="/posts/hackagent">How to build an offensive AI security agent</a><span class="fn-entry__date"><time dateTime="2024-12-13">December 13, 2024</time></span></li><li class="fn-entry"><span class="fn-entry__no">Nº <!-- -->12</span><a class="fn-entry__title" href="/posts/the-future-of-appsec">The Future of Application Security: Integrating LLMs and AI Agents into Manual Workflows</a><span class="fn-entry__date"><time dateTime="2024-10-23">October 23, 2024</time></span></li></ul></section><section aria-labelledby="year-2022"><h2 class="fn-year" id="year-2022"><span class="fn-year__num">2022</span><span class="fn-year__rule" aria-hidden="true"></span><span class="fn-year__count">5<!-- --> <!-- -->entries</span></h2><ul class="fn-entries"><li class="fn-entry"><span class="fn-entry__no">Nº <!-- -->11</span><a class="fn-entry__title" href="/posts/detect-authz-at-scale-nestjs">A Guide To Identify Authorization Vulnerabilities At Scale Using Semgrep</a><span class="fn-entry__date"><time dateTime="2022-10-05">October 5, 2022</time></span></li><li class="fn-entry"><span class="fn-entry__no">Nº <!-- -->10</span><a class="fn-entry__title" href="/posts/sast-workflow">A Guide On Implementing An Effective SAST Workflow</a><span class="fn-entry__date"><time dateTime="2022-08-18">August 18, 2022</time></span></li><li class="fn-entry"><span class="fn-entry__no">Nº <!-- -->
709</span><a class="fn-entry__title" href="/posts/secure-sdlc">A Lightweight Approach To Implement Secure Software Development LifeCycle (Secure SDLC)</a><span class="fn-entry__date"><time dateTime="2022-08-12">August 12, 2022</time></span></li><li class="fn-entry"><span class="fn-entry__no">Nº <!-- -->08</span><a class="fn-entry__title" href="/posts/prodsec-roadmap">Product Security Roadmap</a><span class="fn-entry__date"><time dateTime="2022-08-05">August 5, 2022</time></span></li><li class="fn-entry"><span class="fn-entry__no">Nº <!-- -->07</span><a class="fn-entry__title" href="/posts/building-product-security-program">Building a Product Security program from scratch</a><span class="fn-entry__date"><time dateTime="2022-07-25">July 25, 2022</time></span></li></ul></section><section aria-labelledby="year-2016"><h2 class="fn-year" id="year-2016"><span class="fn-year__num">2016</span><span class="fn-year__rule" aria-hidden="true"></span><span class="fn-year__count">1<!-- --> <!-- -->entry</span></h2><ul class="fn-entries"><li class="fn-entry"><span class="fn-entry__no">Nº <!-- -->06</span><a class="fn-entry__title" href="/posts/send-payment-blocked-by-recipient">Ability to send payment requests inspite of being blocked by the recipient</a><span class="fn-entry__date"><time dateTime="2016-02-08">February 8, 2016</time></span></li></ul></section><section aria-labelledby="year-2015"><h2 class="fn-year" id="year-2015"><span class="fn-year__num">2015</span><span class="fn-year__rule" aria-hidden="true"></span><span class="fn-year__count">1<!-- --> <!-- -->entry</span></h2><ul class="fn-entries"><li class="fn-entry"><span class="fn-entry__no">Nº <!-- -->05</span><a class="fn-entry__title" href="/posts/csrf-protection-bypass-technique">A CSRF protection bypass technique</a><span class="fn-entry__date"><time dateTime="2015-04-30">April 30, 2015</time></span></li></ul></section><section aria-labelledby="year-2014"><h2 class="fn-year" id="year-2014"><span class="fn-year__num">2014</span><span class="fn-year__rule" aria-hidden="true"></span><span class="fn-year__count">3<!-- --> <!-- -->entries</span></h2><ul class="fn-entries"><li class="fn-entry"><span class="fn-entry__no">Nº <!-- -->04</span><a class="fn-entry__title" href="/posts/facebook-privacy-bug">A bug in Facebook that violated my privacy</a><span class="fn-entry__date"><time dateTime="2014-12-23">December 23, 2014</time></span></li><li class="fn-entry"><span class="fn-entry__no">Nº <!-- -->03</span><a class="fn-entry__title" href="/posts/analysis-of-browserstack-breach">Analysis of the BrowserStack breach - A classic example of "Pivoting in the Clouds"</a><span class="fn-entry__date"><time dateTime="2014-11-13">November 13, 2014</time></span></li><li class="fn-entry"><span class="fn-entry__no">Nº <!-- -->02</span><a class="fn-entry__title" href="/posts/security-issues-with-friction-less-signup-flows">Security issues with friction-less signup flows</a><span class="fn-entry__date"><time dateTime="2014-07-16">July 16, 2014</time></span></li></ul></section><section aria-labelledby="year-2013"><h2 class="fn-year" id="year-2013"><span class="fn-year__num">2013</span><span class="fn-year__rule" aria-hidden="true"></span><span class="fn-year__count">1<!-- --> <!-- -->entry</span></h2><ul class="fn-entries"><li class="fn-entry"><span class="fn-entry__no">Nº <!-- -->01</span><a class="fn-entry__title" href="/posts/performing-code-review-on-shell-scripts">Performing code review on shell scripts</a><span class="fn-entry__date"><time dateTime="2013-09-26">September 26, 2013</time></span></li></ul></section></section></main><div class="layout_backToHome__D9QFr"><a href="/">â Back to home</a></div></div></div><footer class="layout_footer__WlhMu"><p class="layout_signature__rtdru"><span class="fn-hand">Anshuman Bhartiya</span></p><p class="layout_colophon__91LiN"><span class="layout_copyright__yuDki">AB © <!-- -->2026</span><span aria-hidden="true" class="layout_sep__3L8Z9">·</span><span>Set in Source Serif 4, notes in a hand from your own system. Built with Next.js.</span></p></footer></div></div></div>
7<script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"allPostsData":[{"id":"openclaw-advisory-benchmark","title":"Building a Real-World Security Benchmark for AI Code Scanners","date":"2026-03-27","type":"technical","description":"How do you know if your AI security scanner actually works? Not on toy apps. Not on intentionally vulnerable code where every bug is planted like an Easterâ¦"},{"id":"vulnvibes-intro","title":"VulnVibes: Building an AI Agent That Reasons Across Microservices to Find Real Vulnerabilities","date":"2026-03-13","type":"technical","description":"Picture this: you're reviewing a pull request. A developer on your team has added a new API endpoint that fetches content from a URL the user provides. There'sâ¦"},{"id":"building-with-sage-1","title":"Day in the Life: Building a Prototype with My AI Agent (Without Getting Pwned)","date":"2026-02-13","type":"technical","description":"Series: Building with Sage â This is Part 1 of an ongoing series about running a personal AI agent with a security-first mindset. I'll share real workflowsâ¦"},{"id":"browser-relay","title":"Browser Relay: When Your AI Assistant Gets Hands on Your Browser","date":"2026-01-25","type":"technical","description":"I am sure you have felt it â the relentless firehose of information. X (formerly Twitter) has become ground zero for AI and tech announcements. LinkedIn?â¦"},{"id":"securevibes-part4","title":"Skills: The Missing Piece in AI Security Tooling","date":"2026-01-17","type":"technical","description":"Building on the SecureVibes series â this post explores how skills transform generic AI agents into domain experts. Here's a pattern I've seen across theâ¦"},{"id":"blogging-from-telegram","title":"How I Prompted My Personal AI Assistant to Write a Blog For Me","date":"2026-01-16","type":"technical","description":"Earlier today I published a comprehensive blog post about my Clawdbot setup. It covered Docker deployment, multi-channel configuration, AI model selectionâ¦"},{"id":"my-clawdbot-setup","title":"Introducing Sage: My Personal AI Assistant That Actually Works","date":"2026-01-15","type":"technical","description":"I've been on a quest for the perfect personal AI assistant for a while now. Not the kind that lives in a web browser tab that I have to actively go to, butâ¦"},{"id":"securevibes-part3","title":"Running SecureVibes on SecureVibes - Results \u0026 What's Next (Part 3/3)","date":"2025-10-14","type":"technical","description":"This is Part 3 of a 3-part series on building SecureVibes, a multi-agent security system for vibecoded applications. Series Navigation: Part 1 | Part 2 | Partâ¦"},{"id":"securevibes-part2","title":"Building SecureVibes: A Multi-Agent Security System (Part 2/3)","date":"2025-10-14","type":"technical","description":"This is Part 2 of a 3-part series on building SecureVibes, a multi-agent security system for vibecoded applications. Series Navigation: Part 1 | Part 2 | Partâ¦"},{"id":"securevibes-part1","title":"The Vibecoding Security Crisis: Why Current Scanners Fail (Part 1/3)","date":"2025-10-14","type":"technical","description":"This is Part 1 of a 3-part series on building SecureVibes, a multi-agent security system for vibecoded applications. Series Navigation: Part 1 | Part 2 | Partâ¦"},{"id":"securevibes-intro","title":"Introducing SecureVibes: A Multi-Agent Security System (3 Part Series)","date":"2025-10-14","type":"technical","description":"I built SecureVibes, an open-source multi-agent security system, that can help find security vulnerabilities in your vibecoded applications (and hopefully soonâ¦"},{"id":"defenseagent","title":"How to build a defensive AI security agent with RAG","date":"2025-01-03","type":"technical","description":"In my previous post, I walked through a POC of building an offensive AI security agent, where that agent was able to analyze malicious javascript files andâ¦"},{"id":"hackagent","title":"How to build an offensive AI security agent","date":"2024-12-13","type":"technical","description":"A few weeks ago, I wrote about how LLMs could potentially disrupt the Application Security space. You can find that blog post here - The Future of Applicationâ¦"},{"id":"the-future-of-appsec","title":"The Future of Application Security: Integrating LLMs and AI Agents into Manual Workflows","date":"2024-10-23","type":"technical","description":"The responsibility of an application security team in any organization has traditionally been to reduce risk. They do that by identifying and remediatingâ¦"},{"id":"detect-authz-at-scale-nestjs","title":"A Guide To Identify Authorization Vulnerabilities At Scale Using Semgrep","date":"2022-10-05","type":"technical","description":"Authorization (henceforth referred to as AuthZ) vulnerabilities such as Horizontal Privilege Escalation, Vertical Privilege Escalation, Insecure Direct Objectâ¦"},{"id":"sast-workflow","title":"A Guide On Implementing An Effective SAST Workflow","date":"2022-08-18","type":"technical","description":"In the previous post, I wrote about implementing a lightweight Secure SDLC program using the crawl/walk/run approach. In the crawl phase, I covered activitiesâ¦"},{"id":"secure-sdlc","title":"A Lightweight Approach To Implement Secure Software Development LifeCycle (Secure SDLC)","date":"2022-08-12","type":"technical","description":"Secure SDLC is an integral part of any Product Security program. It enables organizations to be successful in their ProdSec maturity journey. In this post, Iâ¦"},{"id":"prodsec-roadmap","title":"Product Security Roadmap","date":"2022-08-05","type":"technical","description":"If you haven't seen it already, I wrote about some basic fundamentals to consider when building a Product Security program in an organization - Building aâ¦"},{"id":"building-product-security-program","title":"Building a Product Security program from scratch","date":"2022-07-25","type":"technical","description":"Hi! This is my attempt to reinvigorate this blog by sharing my experiences of building security programs from scratch (more specifically Product/Applicationâ¦"},{"id":"send-payment-blocked-by-recipient","title":"Ability to send payment requests inspite of being blocked by the recipient","date":"2016-02-08","type":"technical","description":"TL;DR - I, as an attacker could send payment requests to anyone on Facebook even if: I am not a friend of the victim recipient The victim recipient hasâ¦"},{"id":"csrf-protection-bypass-technique","title":"A CSRF protection bypass technique","date":"2015-04-30","type":"technical","description":"This technique can be used to bypass CSRF protections in some applications by using a static CSRF token (for all users of that application) that looks like aâ¦"},{"id":"facebook-privacy-bug","title":"A bug in Facebook that violated my privacy","date":"2014-12-23","type":"technical","description":"The bug that I am going to de
7scribe here was actually discovered accidentally while I was checking my privacy settings in Facebook. And, it is so simple thatâ¦"},{"id":"analysis-of-browserstack-breach","title":"Analysis of the BrowserStack breach - A classic example of \"Pivoting in the Clouds\"","date":"2014-11-13","type":"technical","description":"BrowserStack was recently breached and it was all over the news as is the case with almost all breaches these days. In this blog post, I will briefly describeâ¦"},{"id":"security-issues-with-friction-less-signup-flows","title":"Security issues with friction-less signup flows","date":"2014-07-16","type":"technical","description":"I believe this issue affects a lot of applications that have friction-less signup flows i.e. creating accounts without first confirming it via email. This canâ¦"},{"id":"performing-code-review-on-shell-scripts","title":"Performing code review on shell scripts","date":"2013-09-26","type":"technical","description":"Check if the scripts are using absolute or relative paths. Using absolute paths wherever possible is recommended as a good practice. Check all input/output.â¦"}]},"__N_SSG":true},"page":"/technical-blog","query":{},"buildId":"D8KjqlAJv2H-o2BvndA0u","isFallback":false,"gsp":true,"scriptLoader":[]}</script>
7</body></html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.