<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Momin Aziz</title>
    <description>The latest articles on DEV Community by Momin Aziz (@momin_aziz_1).</description>
    <link>https://dev.to/momin_aziz_1</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4100396%2F3bf6d649-b601-4b61-ad4f-205d166e06d9.png</url>
      <title>DEV Community: Momin Aziz</title>
      <link>https://dev.to/momin_aziz_1</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/momin_aziz_1"/>
    <language>en</language>
    <item>
      <title>Government of Canada IT Jobs in Ottawa</title>
      <dc:creator>Momin Aziz</dc:creator>
      <pubDate>Wed, 04 Nov 2026 12:11:46 +0000</pubDate>
      <link>https://dev.to/momin_aziz_1/government-of-canada-it-jobs-in-ottawa-2a35</link>
      <guid>https://dev.to/momin_aziz_1/government-of-canada-it-jobs-in-ottawa-2a35</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published on the &lt;a href="https://cv-fit.click/blog/government-of-canada-it-jobs-ottawa" rel="noopener noreferrer"&gt;CVFit blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I'm Momin, founder of CVFit in Ottawa. I build a tool that tailors a resume to a specific job using only work you have actually done. Federal hiring runs on acronyms — IT-02, CS-2, the "Software Solutions" stream, GC Jobs, FSWEP — and this is the plain-language version: what the levels mean, what they currently pay, who's eligible, and how the screening and security process works, with links to the official pages for everything that matters.&lt;/p&gt;

&lt;p&gt;Full disclosure: this is my product area. The facts below come from the Government of Canada's digital careers page, the TBS–PIPSC collective agreement, and the Public Service Commission.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;CVFit is independent. We're not affiliated with the Government of Canada, the Public Service Commission or the Treasury Board of Canada Secretariat (TBS).&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What counts as a Government of Canada IT job
&lt;/h2&gt;

&lt;p&gt;Most federal technology roles sit in the &lt;strong&gt;Information Technology (IT) group&lt;/strong&gt; — one of the classification groups the Treasury Board bargains pay and conditions for. If a posting's classification code starts with "IT," it belongs to this group, regardless of which department is hiring. Ottawa-Gatineau has the largest concentration of these roles because it's where most federal headquarters functions sit, but IT-group jobs exist in offices across the country.&lt;/p&gt;

&lt;p&gt;Some separate agencies, such as the Canada Revenue Agency, use their own classification and pay plans instead of the core IT group, so don't assume every federal tech job uses IT-0X titles. When a posting names a different pay group, check that agency's own careers page rather than applying the IT group's numbers to it.&lt;/p&gt;

&lt;h2&gt;
  
  
  IT-01 to IT-05: what each level actually does
&lt;/h2&gt;

&lt;p&gt;The Government of Canada's digital careers page breaks the IT group into five levels:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;IT-01 (Technicians):&lt;/strong&gt; provide technical support in the development, implementation, integration and maintenance of service delivery. IT-01 roles are mainly in the Infrastructure Operations, Security and Software Solutions streams.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IT-02 (Analysts):&lt;/strong&gt; provide technical services, advice, analysis and research in their field of expertise. For pay, streams and how to qualify at this level, see our IT-02 jobs guide.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IT-03 (Team Leads / Technical Advisors):&lt;/strong&gt; splits into two tracks — a supervisory track leading a team, and an individual-contributor track giving specialized technical advice without managing people.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IT-04 (Managers / Senior Advisors):&lt;/strong&gt; oversees service delivery (management track) or provides expert strategic direction (senior advisor track).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IT-05 (Directors):&lt;/strong&gt; directs and plans IT services or operations through subordinate managers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you're early in your career, IT-01 and IT-02 are the realistic targets. IT-03 is where "do I manage people or stay technical" becomes a real fork.&lt;/p&gt;

&lt;h2&gt;
  
  
  Current IT pay, by level
&lt;/h2&gt;

&lt;p&gt;Pay rates for the IT group come from Appendix A of the agreement between the Treasury Board and the Professional Institute of the Public Service of Canada (PIPSC), group code 303. As of November 3, 2026, the latest published rates are the ones effective &lt;strong&gt;December 22, 2024&lt;/strong&gt; (the final scheduled increase under the agreement that expired December 21, 2025). The annual ranges (minimum to maximum step) are:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Level&lt;/th&gt;
&lt;th&gt;Minimum&lt;/th&gt;
&lt;th&gt;Maximum&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;IT-01&lt;/td&gt;
&lt;td&gt;$69,361&lt;/td&gt;
&lt;td&gt;$89,382&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;IT-02&lt;/td&gt;
&lt;td&gt;$85,854&lt;/td&gt;
&lt;td&gt;$105,080&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;IT-03&lt;/td&gt;
&lt;td&gt;$101,343&lt;/td&gt;
&lt;td&gt;$125,914&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;IT-04&lt;/td&gt;
&lt;td&gt;$116,037&lt;/td&gt;
&lt;td&gt;$144,434&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;IT-05&lt;/td&gt;
&lt;td&gt;$133,582&lt;/td&gt;
&lt;td&gt;$174,076&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A few things worth knowing before you treat these as fixed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;These are core public administration rates.&lt;/strong&gt; Separate agencies and Crown corporations can pay differently for similar-sounding work — check the specific employer's own pay page.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Where you land in the range depends on step&lt;/strong&gt;, which usually increases with time in the role, not just experience before you joined.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bargaining for a new agreement is underway.&lt;/strong&gt; Treasury Board's collective bargaining update lists the IT group as in progress, so these numbers may change. Check the current IT group agreement page for the live numbers before you negotiate or set expectations.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The eight IT work streams
&lt;/h2&gt;

&lt;p&gt;Within the IT group, most work is organized into eight standardized streams. A posting's stream tells you more about day-to-day duties than the level number does:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;IT Business Line Advisory Services&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;IT Database Management&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;IT Enterprise Architecture&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;IT Infrastructure Operations&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;IT Planning and Reporting&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;IT Project Portfolio Management&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;IT Security&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;IT Software Solutions&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you're a developer, "Software Solutions" is usually the match. If you're closer to networking or systems administration, look at "Infrastructure Operations." Security-specific roles (not just security-cleared roles — actual cybersecurity work) sit in "IT Security."&lt;/p&gt;

&lt;h2&gt;
  
  
  Who can apply
&lt;/h2&gt;

&lt;p&gt;You don't need to be a Canadian citizen to apply. But Government of Canada jobs advertised externally use an order of preference, as the Public Service Commission (PSC) explains:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Eligible veterans&lt;/strong&gt; get first preference — someone honourably released from the Canadian Armed Forces after at least three years of service, released within the last five years, and not already holding an indeterminate position in the core public service or a separate agency.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Canadian citizens and permanent residents&lt;/strong&gt; get second preference.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Other candidates&lt;/strong&gt; get third preference.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Preference only kicks in among candidates who already meet every essential qualification — it doesn't replace merit, and it's applied "at the time of each appointment," so your status at the moment you'd actually be appointed is what counts, not your status when you applied.&lt;/p&gt;

&lt;h2&gt;
  
  
  Language requirements
&lt;/h2&gt;

&lt;p&gt;Positions require English, French, or both (bilingual), and the hiring manager decides which. For bilingual roles, the PSC's language requirements page explains the system: reading, writing and oral interaction are each set at A (beginner), B (intermediate) or C (advanced), and some specialized positions use a "P" code. A profile like "CBC/CBC" tells you the level required in each skill.&lt;/p&gt;

&lt;p&gt;The distinction that actually matters for applicants:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Imperative appointment:&lt;/strong&gt; you must already meet the language levels at the time of appointment.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Non-imperative appointment:&lt;/strong&gt; you can be appointed if you agree to reach the required level through language training at government expense.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Check which basis a posting uses before assuming a bilingual requirement rules you out.&lt;/p&gt;

&lt;h2&gt;
  
  
  Security screening
&lt;/h2&gt;

&lt;p&gt;Every federal job needs a valid security status or clearance — it's a condition of employment. Per the Government of Canada's security screening overview, there are three standard levels, each with an enhanced option:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Reliability Status&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Secret&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Top Secret&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All levels include identity and background verification, a criminal record check, and a financial inquiry (credit check). Higher levels add security interviews or questionnaires, internet checks, law-enforcement record checks, and — at the highest level — polygraph examinations.&lt;/p&gt;

&lt;p&gt;Processing time varies: anywhere from "a few days to several months," depending on the level and other factors. Don't assume a slow screening means you were rejected. The same page notes that only a small fraction of applicants are denied.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where to find Government of Canada IT jobs in Ottawa
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GC Jobs&lt;/strong&gt; — the official search for Government of Canada jobs, including IT postings across departments.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Government of Canada jobs hub&lt;/strong&gt; — a broader entry point if you're not sure which search tool you need.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agencies' own career sites&lt;/strong&gt; — if you're targeting a specific separate agency or Crown corporation, check its careers page as well as GC Jobs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tech jobs in Ottawa&lt;/strong&gt; on CVFit, for the private-sector side of the same city (or tech jobs across Canada) — useful context if you're deciding between a federal and a private-sector offer, or widening your search while you wait out a federal process. Our guide to tech jobs in Ottawa covers who's hiring locally.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How the application actually works
&lt;/h2&gt;

&lt;p&gt;The PSC's own overview of what to expect lays out five steps, not necessarily in this order: submit your application, get screened, complete a written test or interview if you're screened in, provide references and pass security screening, then get a status update through your GC Jobs account or by email.&lt;/p&gt;

&lt;p&gt;Two things to plan around:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Many postings create a "pool."&lt;/strong&gt; A single ad can be used to hire for more than one position over time, including positions that don't exist yet when you apply. Check the "Intent of the Process" section on the poster — if it mentions a pool, a slow response doesn't mean you were screened out; it can mean you're in the pool for a future opening.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The process is slow by private-sector standards.&lt;/strong&gt; The PSC says the &lt;strong&gt;median time to hire a new candidate was 227 days&lt;/strong&gt; in 2021, with each step taking anywhere from four weeks to a few months. Apply to pools and treat the process as a long game, not a two-week turnaround.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Tailoring your résumé to essential qualifications
&lt;/h2&gt;

&lt;p&gt;Federal screening doesn't work like most private-sector applicant tracking. A GC poster lists &lt;strong&gt;essential qualifications&lt;/strong&gt; — education, experience, sometimes specific competencies — and your written application needs to prove each one with a concrete example, not just a claim. Many posters spell this out: it isn't enough to say you have a qualification or list your responsibilities; you need to explain the "what, when, where and how." The PSC's how-to-apply guide says the same: give details or examples, use the exact keywords from the question, and if a question says "and," show every part.&lt;/p&gt;

&lt;p&gt;For every experience-based qualification, aim to answer:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Where&lt;/strong&gt; you gained it — the organization.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What role and when&lt;/strong&gt; — title, level, and dates (month and year).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What you actually did&lt;/strong&gt; — a specific task or project, ideally as a short situation–task–action–result.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;To work through a poster qualification by qualification, you can tailor your CV to the job description in CVFit. If you're facing a screening-questions round and want the step-by-step on answering those with STAR, see our guide to answering Government of Canada screening questions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Student and early-career routes
&lt;/h2&gt;

&lt;p&gt;You don't need prior federal experience to start. The main entry programs, per the digital careers page and the Federal Student Work Experience Program (FSWEP):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;FSWEP&lt;/strong&gt; — for full-time secondary or post-secondary students who meet the minimum age in their province or territory and are returning to full-time studies (or, in their final year, have worked under FSWEP, Co-op/Internship or the Research Affiliate Program before). It's an inventory: you apply once, and managers pull matching applications through the year. The main student inventory is open year-round to over 200 departments and agencies.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Post-Secondary Co-op/Internship Program&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Research Affiliate Program&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Information Technology Apprenticeship Program (ITAP)&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;A dedicated recruitment initiative for &lt;strong&gt;digital careers for persons with disabilities&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In FSWEP, as in general hiring, preference goes to Canadian citizens and permanent residents who meet the job requirements.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;What's the difference between IT-01 and IT-02?&lt;/strong&gt; IT-01 is a technician-level role focused on technical support for developing, implementing and maintaining service delivery. IT-02 is an analyst-level role that adds advice, analysis and research in a specific area. Check the level on each poster rather than assuming a job title maps to one level. For a deeper breakdown of IT-02 pay, streams and how to qualify, see our IT-02 jobs guide.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do I need to be a Canadian citizen to apply?&lt;/strong&gt; No. Anyone can apply, but veterans, then citizens and permanent residents, get preference among qualified candidates.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do I need to be bilingual to get a federal IT job?&lt;/strong&gt; Not always. Only positions designated bilingual need both languages. Where a bilingual position is staffed "non-imperatively," you can be hired while you work toward the required level through government-paid training.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How long does it actually take to hear back?&lt;/strong&gt; In 2021, the PSC reported a median of 227 days to hire a new candidate, with wide variation by step. A pooled posting can mean a slow response simply reflects pool status, not rejection.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does CVFit have Government of Canada job listings?&lt;/strong&gt; No — CVFit's job index covers private-sector postings, including tech jobs in Ottawa. For federal postings, use GC Jobs directly. What CVFit can help with is turning your résumé into evidence for each essential qualification once you've found a posting: paste the posting and your CV into our match tool to see your match score and a quote-backed look at what's covered and what's missing, or use tailor your CV to a job description to work through each qualification in detail. One month of Pro is free, no credit card required.&lt;/p&gt;




&lt;p&gt;Paste a Government of Canada posting and your résumé into CVFit to see your match score and gaps against the essential qualifications. Every match is backed by a quote from your CV. &lt;a href="https://cv-fit.click/tools/cv-match" rel="noopener noreferrer"&gt;Check your match now →&lt;/a&gt; — 1 month of Pro free, no credit card.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Read the original post on CVFit: &lt;a href="https://cv-fit.click/blog/government-of-canada-it-jobs-ottawa" rel="noopener noreferrer"&gt;Government of Canada IT Jobs in Ottawa&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Try the &lt;a href="https://cv-fit.click/tools/cv-match" rel="noopener noreferrer"&gt;free match checker&lt;/a&gt; — paste a job description and see how your resume lines up, with no account needed for a first check.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>government</category>
      <category>career</category>
      <category>jobsearch</category>
      <category>canada</category>
    </item>
    <item>
      <title>Tech Jobs in Ottawa: Who's Hiring</title>
      <dc:creator>Momin Aziz</dc:creator>
      <pubDate>Wed, 04 Nov 2026 12:09:29 +0000</pubDate>
      <link>https://dev.to/momin_aziz_1/tech-jobs-in-ottawa-whos-hiring-i7j</link>
      <guid>https://dev.to/momin_aziz_1/tech-jobs-in-ottawa-whos-hiring-i7j</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published on the &lt;a href="https://cv-fit.click/blog/tech-jobs-ottawa" rel="noopener noreferrer"&gt;CVFit blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I'm Momin, founder of CVFit in Ottawa. I build a tool that tailors a resume to a specific job using only work you have actually done — and I run a live index of tech jobs across the city. This is the city-specific version of "tech jobs Ottawa": where the jobs are, who's posting right now, how the public/private split works here, what security clearance means for a civilian applicant, and what changed in job postings as of January 2026.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;CVFit is independent. We're not affiliated with Invest Ottawa, the Kanata North Business Association or any employer named below.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Ottawa's tech market, in one paragraph
&lt;/h2&gt;

&lt;p&gt;Ottawa is a federal government town first, and that shapes its private tech sector: some local companies sell into government and defence contracts, and plenty of engineers weigh public-service and private-sector jobs side by side. The other defining feature is geography — a big share of the city's tech employers sit in one place, Kanata North, which its business association calls Canada's largest technology park.&lt;/p&gt;

&lt;h2&gt;
  
  
  Kanata North and the rest of the city
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Kanata North&lt;/strong&gt; is the single biggest concentration of tech employers in the city. Per the Kanata North Business Association, the park has &lt;strong&gt;540+ companies and 33,000 employees&lt;/strong&gt;, and contributes more than &lt;strong&gt;$13 billion a year&lt;/strong&gt; to Canada's GDP. The association's strategic plan highlights recent investments by Nokia (including a cybersecurity R&amp;amp;D campus), Ericsson, Wind River and Dell, and member companies in emerging sectors like clean tech, AI, fintech and healthcare.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Outside Kanata&lt;/strong&gt;, tech employers are spread across downtown and the rest of the city, and some Ottawa-listed roles are remote. Check the location line on each posting before you plan a commute.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who's hiring: tech jobs in Ottawa right now
&lt;/h2&gt;

&lt;p&gt;A snapshot, not a ranking: in &lt;strong&gt;November 2026&lt;/strong&gt;, employers posting on CVFit's Ottawa page included:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Broadcom&lt;/strong&gt; — staff and principal hardware and software engineering roles on March Road&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Solace&lt;/strong&gt; — from a Junior Software Developer role up to Principal Software Developer&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pleora Technologies&lt;/strong&gt; — Software Developer&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Solink&lt;/strong&gt; — including a Software Engineer Co-op&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ranovus&lt;/strong&gt; — optical and verification engineering&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MindBridge AI&lt;/strong&gt; — data science, data engineering and QA automation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Corsa Security, Intouch Insight, RBR and Assent Compliance&lt;/strong&gt; — sales, software, QA and other roles&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That list changes daily as postings open and close, so check the live page for what's open today.&lt;/p&gt;

&lt;h2&gt;
  
  
  Public sector vs. private sector
&lt;/h2&gt;

&lt;p&gt;Ottawa is one of the few Canadian cities where "government job" and "tech job" genuinely overlap. If you're weighing both paths:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Public sector (federal IT):&lt;/strong&gt; Government of Canada IT roles use the IT-01 through IT-05 classification system, with a defined process involving GC Jobs, screening against essential qualifications, and often a long timeline. We cover this in detail in our guide to Government of Canada IT jobs in Ottawa — including current pay by level and how the application process works.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Private sector:&lt;/strong&gt; Faster-moving hiring, and more variation in process and pay by company.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Nothing stops you from applying to both at once — and given how long federal hiring can take, many people do.&lt;/p&gt;

&lt;h2&gt;
  
  
  Security clearance and controlled goods
&lt;/h2&gt;

&lt;p&gt;Because some of Ottawa's private tech sector works on government and defence contracts, you'll see security requirements in some private-sector postings too, not just federal ones.&lt;/p&gt;

&lt;p&gt;Two distinct things get bundled together under "clearance," and postings aren't always precise about which one they mean:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Government security screening&lt;/strong&gt; (Reliability Status, Secret, Top Secret) — required for federal roles and for private-sector roles supporting certain federal contracts. Covered in detail in our Government of Canada IT jobs guide.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Controlled Goods Program (CGP) security assessment&lt;/strong&gt; — a separate requirement run by Public Services and Procurement Canada. Companies that examine, possess or transfer "controlled goods" (certain defence-related goods and technology) must register, and their employees — including temporary workers and international students — must be security-assessed, usually by the company's designated official, before they can access those goods. An approved assessment is valid for up to five years while you stay with the same organization; it doesn't transfer to a new employer.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If a posting mentions either requirement and you're unsure whether you'd qualify, ask the employer early rather than assuming your application was simply ignored.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pay transparency in Ontario postings (2026)
&lt;/h2&gt;

&lt;p&gt;As of &lt;strong&gt;January 1, 2026&lt;/strong&gt;, Ontario employers with 25 or more employees have new rules for publicly advertised job postings, including the ones you'll see for Ottawa tech roles. Per Ontario's Employment Standards Act guide, postings must include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The expected pay, or a pay range&lt;/strong&gt; — and the range can't span more than $50,000 a year (this doesn't apply once the pay, or the top of the range, is above $200,000 a year).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Whether artificial intelligence is used&lt;/strong&gt; to screen, assess or select applicants.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Whether the posting is for an existing vacancy&lt;/strong&gt; or not.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Postings also can't require Canadian experience, and if you're interviewed, the employer has to tell you within 45 days whether a hiring decision has been made.&lt;/p&gt;

&lt;p&gt;None of this obligates an employer to pay within the posted range — it governs what has to appear in the ad, not what you'll be offered. But it does mean postings from employers with 25+ staff for Ontario-based roles should now show a real number, which is useful when you're deciding which roles are worth your time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where to search for tech jobs in Ottawa
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;CVFit's live Ottawa index&lt;/strong&gt; — 500+ tech roles sourced from employer job boards and regional tech networks, updated daily. Filter by keyword or use the natural-language job search. For other cities, see tech jobs across Canada.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Invest Ottawa's Tech Job Finder&lt;/strong&gt; — openings across the Invest Ottawa network.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Discover Technata's job board&lt;/strong&gt; — openings across the Discover Technata network, another Ottawa-focused board worth checking alongside the national sites.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Company career pages directly&lt;/strong&gt;, especially for the larger Kanata North employers — some openings may only appear there.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How to get noticed
&lt;/h2&gt;

&lt;p&gt;Ottawa tech postings, especially in telecom and defence-adjacent companies, often list specific technical requirements in dense, acronym-heavy language. Mirror the posting's own wording rather than paraphrasing it — if the posting says "RF" or names a specific protocol, use that exact term, not a general synonym. Some employers also use software to screen applications; under the new Ontario rules, the posting has to tell you if AI is used.&lt;/p&gt;

&lt;p&gt;If you want help checking whether your résumé covers what a specific posting asks for, paste both into CVFit's match tool — it shows your match score and the top missing requirements, with every match backed by a quote from your own CV. To rework your CV for one role, tailor your CV to the job description.&lt;/p&gt;

&lt;h2&gt;
  
  
  Early-career routes
&lt;/h2&gt;

&lt;p&gt;If you're newer to the market, Ottawa has routes into tech that don't require years of private-sector experience first:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Federal co-op and student programs&lt;/strong&gt; (FSWEP, Post-Secondary Co-op/Internship, the IT Apprenticeship Program) — covered in our Government of Canada IT jobs guide.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Private-sector co-op, junior and technician roles&lt;/strong&gt; — on November 3, 2026, for example, our Ottawa page listed a Software Engineer Co-op at Solink and a Junior Software Developer role at Solace.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Is Ottawa a good city for tech jobs outside of government?&lt;/strong&gt; Yes — Kanata North alone has 540+ companies and 33,000 employees, per its business association, with big names like Nokia and Ericsson and newer firms in AI, fintech and clean tech. It's a smaller market than Toronto or Vancouver, but it's dense rather than thin.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do I need a security clearance to work in Ottawa tech?&lt;/strong&gt; Only for specific roles — typically ones supporting federal or defence work. Government security screening (Reliability Status, Secret, Top Secret) and a Controlled Goods Program security assessment are two separate requirements that sometimes both apply. Many private-sector roles need neither; check the posting.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What changed in Ottawa job postings in 2026?&lt;/strong&gt; As of January 1, 2026, Ontario employers with 25+ employees must show expected pay or a range (no wider than $50,000, with an exception above $200,000), say whether AI is used in screening and whether the job is an existing vacancy, drop Canadian-experience requirements, and tell interviewed applicants within 45 days whether a hiring decision was made.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does CVFit have a list of Ottawa employers?&lt;/strong&gt; CVFit indexes live postings at /jobs/canada/ottawa rather than keeping a static employer directory — the list changes as postings open and close. For other cities, browse tech jobs across Canada.&lt;/p&gt;




&lt;p&gt;Browse live tech jobs in Ottawa, then paste a posting and your CV into CVFit to see your match score and gaps — every match is backed by a quote from your résumé. 1 month of Pro free, no credit card.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Read the original post on CVFit: &lt;a href="https://cv-fit.click/blog/tech-jobs-ottawa" rel="noopener noreferrer"&gt;Tech Jobs in Ottawa: Who's Hiring&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Try the &lt;a href="https://cv-fit.click/tools/cv-match" rel="noopener noreferrer"&gt;free match checker&lt;/a&gt; — paste a job description and see how your resume lines up, with no account needed for a first check.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>career</category>
      <category>jobsearch</category>
      <category>canada</category>
      <category>beginners</category>
    </item>
    <item>
      <title>IT-02 Jobs: Pay and How to Qualify</title>
      <dc:creator>Momin Aziz</dc:creator>
      <pubDate>Wed, 04 Nov 2026 11:52:58 +0000</pubDate>
      <link>https://dev.to/momin_aziz_1/it-02-jobs-pay-and-how-to-qualify-8p8</link>
      <guid>https://dev.to/momin_aziz_1/it-02-jobs-pay-and-how-to-qualify-8p8</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published on the &lt;a href="https://cv-fit.click/blog/it-02-jobs" rel="noopener noreferrer"&gt;CVFit blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I'm Momin, founder of CVFit in Ottawa. I build a tool that tailors a resume to a specific job using only work you have actually done. Federal IT hiring is where that rule matters most — posters are precise about what counts as proof.&lt;/p&gt;

&lt;p&gt;Full disclosure: this is my product area. The facts below come from the Government of Canada's digital careers page, the TBS–PIPSC collective agreement, and real IT-02 posters.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;CVFit is independent. We're not affiliated with the Government of Canada, the Public Service Commission or the Treasury Board of Canada Secretariat (TBS).&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What IT-02 means
&lt;/h2&gt;

&lt;p&gt;On the Government of Canada's digital careers page, &lt;strong&gt;IT-02 is the analyst level&lt;/strong&gt;. Analysts "provide technical services, advice, analysis, and research in their field of expertise to support service delivery to clients and stakeholders." Unlike IT-01 technicians, who are mainly found in three streams, &lt;strong&gt;IT analysts appear in all eight IT work streams&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A few naming notes that trip people up:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;IT-02 replaced CS-02.&lt;/strong&gt; The old Computer Systems (CS) group was renamed Information Technology (IT). Pay mapping stayed the same — a CS-02 rate maps to IT-02 — even though you'll still see CS language on older documents and some third-party job boards.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The job title on the poster is not the classification.&lt;/strong&gt; You might see "IT Analyst, Software Solutions," "IT Analyst, Infrastructure Operations," or a department-specific title. The classification code (IT-02) is what sets the pay band and the level of work expected.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Analyst does not mean "junior by default."&lt;/strong&gt; IT-02 is the main working level for many federal developers, administrators and specialists. IT-01 is the more common true entry point; IT-03 is where team-lead and senior-advisor tracks split.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  IT-02 pay
&lt;/h2&gt;

&lt;p&gt;Pay for the IT group comes from Appendix A of the agreement between the Treasury Board and the Professional Institute of the Public Service of Canada (PIPSC), group code 303. As of November 3, 2026, the latest published rates are the ones effective &lt;strong&gt;December 22, 2024&lt;/strong&gt; (the final scheduled increase under the agreement that expired December 21, 2025).&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Level&lt;/th&gt;
&lt;th&gt;Minimum&lt;/th&gt;
&lt;th&gt;Maximum&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;IT-01&lt;/td&gt;
&lt;td&gt;$69,361&lt;/td&gt;
&lt;td&gt;$89,382&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;IT-02&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$85,854&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$105,080&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;IT-03&lt;/td&gt;
&lt;td&gt;$101,343&lt;/td&gt;
&lt;td&gt;$125,914&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;What that means in practice:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;IT-02 sits between technician and team-lead / technical-advisor pay.&lt;/strong&gt; Moving from the top of IT-01 into IT-02 is a real step up; moving from the top of IT-02 into IT-03 is another.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Where you land in the range is usually a step&lt;/strong&gt;, which advances with time in the level (the agreement sets a twelve-month increment period for IT-01 through IT-05), not only with prior outside experience.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;These are core public administration rates.&lt;/strong&gt; Separate agencies and Crown corporations can use different pay plans for similar-sounding work — always check that employer's own page.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bargaining for a new agreement is underway&lt;/strong&gt;, so confirm the live numbers on the IT group agreement page before you set expectations.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  IT-02 vs IT-01 vs IT-03
&lt;/h2&gt;

&lt;p&gt;Using the official role summaries on the digital careers page:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;IT-01 (Technician)&lt;/th&gt;
&lt;th&gt;IT-02 (Analyst)&lt;/th&gt;
&lt;th&gt;IT-03 (Team Lead / Technical Advisor)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Focus&lt;/td&gt;
&lt;td&gt;Technical support for developing, implementing, integrating and maintaining service delivery&lt;/td&gt;
&lt;td&gt;Technical services, advice, analysis and research in a field of expertise&lt;/td&gt;
&lt;td&gt;Either supervising a team, or giving specialized technical advice without managing people&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Streams&lt;/td&gt;
&lt;td&gt;Mainly Infrastructure Operations, Security, Software Solutions&lt;/td&gt;
&lt;td&gt;All eight streams&lt;/td&gt;
&lt;td&gt;All eight streams&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Typical fork&lt;/td&gt;
&lt;td&gt;Common early-career / support entry&lt;/td&gt;
&lt;td&gt;Main individual-contributor working level for many specialties&lt;/td&gt;
&lt;td&gt;"Do I manage people, or stay deep technical?"&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The practical test when you read a poster: &lt;strong&gt;does the work stop at delivering and supporting a solution, or does it expect you to advise, analyze and research as part of the job?&lt;/strong&gt; If the poster reads like ownership of analysis and recommendations — not only ticket work or tightly scripted build tasks — you're usually looking at IT-02 or above. If it also expects you to supervise people or act as the specialized advisor for other teams, look at IT-03.&lt;/p&gt;

&lt;h2&gt;
  
  
  What IT-02 work looks like by stream
&lt;/h2&gt;

&lt;p&gt;The digital careers page lists eight standardized streams. The stream descriptions below are the official responsibilities for that work — an IT-02 in that stream is the analyst doing that work at the "services, advice, analysis and research" level:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;IT Business Line Advisory Services&lt;/strong&gt; — specialized IT guidance; working with clients or suppliers so IT resources support business objectives (business analysis, client portfolio management, supplier relationship management and related functions).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IT Database Management&lt;/strong&gt; — data models and databases: design, capacity planning, performance and tuning, security and recovery.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IT Enterprise Architecture&lt;/strong&gt; — departmental IT architecture direction; research into emerging technologies; helping define the future state of IT against business needs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IT Infrastructure Operations&lt;/strong&gt; — networks, mainframes, servers, storage; help-desk support; in smaller organizations, also the client and supplier interface.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IT Planning and Reporting&lt;/strong&gt; — IT planning guidance; strategic plans, policies, standards and governance processes aligned with business objectives.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IT Project Portfolio Management&lt;/strong&gt; — full-time work on large formal projects or portfolios that need rigorous IT project management; project management services for major IT initiatives.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IT Security&lt;/strong&gt; — availability, integrity and confidentiality of infrastructure, applications and data; security applications, strategies, policies, processes and risk frameworks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IT Software Solutions&lt;/strong&gt; — developing and maintaining custom, proprietary or commercial applications; systems design and development, business analysis, programming, configuration, testing and implementation.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you're a developer searching "IT-02 jobs," &lt;strong&gt;Software Solutions&lt;/strong&gt; is usually the match. If your background is networking, endpoints or platforms, start with &lt;strong&gt;Infrastructure Operations&lt;/strong&gt;. Security-cleared work is not the same as the &lt;strong&gt;IT Security&lt;/strong&gt; stream — the stream is for people whose job is security work itself.&lt;/p&gt;

&lt;h2&gt;
  
  
  Education and experience on real IT-02 posters
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Education (the group minimum)
&lt;/h3&gt;

&lt;p&gt;The minimum education standard for the IT group, on both the digital careers page and the TBS qualification standards, is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Graduation from a two-year program of study from a recognized post-secondary institution with acceptable specialization in computer science, information technology, information management or another specialty relevant to the position to be staffed.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Posters usually repeat that wording, then add grandfathering notes for long-serving IT/CS incumbents, and often a manager's discretion note: an acceptable combination of education, training and/or experience may replace the credential &lt;strong&gt;for that specific position only&lt;/strong&gt;, and must be reassessed for other jobs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Experience (what changes from poster to poster)
&lt;/h3&gt;

&lt;p&gt;Experience criteria are where IT-02 posters diverge. Two patterns show up often:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Stream-specific skills, sometimes without a "years" definition.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A 2025 Department of National Defence inventory for &lt;strong&gt;IT Analyst, IT Software Solutions&lt;/strong&gt; (IT-02; pay listed as $85,854 to $105,080; closing 16 December 2025 on the regional posters) asked candidates to show, among other things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;experience developing software solutions on technology platforms (examples named included C#, React, Oracle Apex, or other platforms as applicable)&lt;/li&gt;
&lt;li&gt;experience with system development life cycles (examples named included Waterfall, V-Model, iterative)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Those experience lines were essential at application. Competencies and the ability to analyze and document technical problems were flagged for assessment later. The same inventory also required &lt;strong&gt;Secret&lt;/strong&gt; security clearance as a condition of employment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. "Significant" and "recent" experience, with the poster defining both.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;An RCMP &lt;strong&gt;IT Analyst (IT-02)&lt;/strong&gt; inventory (poster 2286769; closing 12 August 2025; pay listed as $85,854 to $105,080) used definitions like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Recent&lt;/strong&gt; — experience normally acquired within the last five years (that poster's definition)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Significant&lt;/strong&gt; — depth and breadth normally associated with performing the duties continuously for about two years (that poster's definition)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;and asked for recent or significant experience across infrastructure delivery, technical documentation, endpoint/peripheral support, analysis and design from requirements, and technical research. Other posters define the same words differently — for example, "significant" as three or more years, or "recent" as within the last two. &lt;strong&gt;Always use the definitions on the poster in front of you&lt;/strong&gt;, not a generic industry meaning.&lt;/p&gt;

&lt;p&gt;Two application habits that matter at IT-02 as much as at any other level, from the PSC's how-to-apply guidance and Treasury Board's understanding-the-application-process page:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Prove each essential experience line with &lt;strong&gt;what, when, where and how&lt;/strong&gt; — not a yes/no or a paste of your job description.&lt;/li&gt;
&lt;li&gt;Prefer the &lt;strong&gt;poster's exact keywords&lt;/strong&gt; over synonyms.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How to show IT-02-level experience on a résumé
&lt;/h2&gt;

&lt;p&gt;Federal screening wants evidence at the analyst level: you didn't only execute a ticket — you analyzed, advised or researched inside your stream. A practical way to rewrite a bullet:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Before (too thin for an IT-02 experience screen):&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Developed web applications and worked with databases.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;After (illustrative — not a real candidate):&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;From March 2023 to Present, as a Software Developer at Example Org, designed and implemented REST features in C# for an internal case-management app used by 40 staff; wrote the technical design notes from business requirements, pair-reviewed pull requests, and reduced a weekly reporting query from ~90 seconds to under 10 seconds by changing the SQL and indexing.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;That second version gives the screening board the organization, title, dates, the analyst-shaped work (design from requirements, not only coding), and a concrete result — the same three beats Treasury Board asks for on experience criteria.&lt;/p&gt;

&lt;p&gt;If you're working through a live poster, paste it into CVFit's match tool to see which essential lines already have quote-backed evidence on your CV and which still need a stronger example. For the screening-question write-up itself (STAR, "I" not "we," AI rules on the poster), see our guide to answering Government of Canada screening questions.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Is IT-02 the same as CS-02?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For pay and level, yes — CS-02 mapped to IT-02 when the occupational group was renamed. Use the classification on the current poster.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is IT-02 entry level?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Often no. IT-01 is the more common technician / early entry level. IT-02 is the main analyst working level across streams. Some people do enter at IT-02 with enough outside experience; the poster decides.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What does an IT-02 make?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Under the latest published TBS/PIPSC rates (effective December 22, 2024), the IT-02 annual range is $85,854 to $105,080 in the core public administration. Confirm on the current agreement page, because bargaining may change the numbers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;IT-02 vs IT-03 — how do I choose which posters to apply to?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If the work is hands-on analysis and delivery in your specialty, start with IT-02. If the poster expects you to supervise a team or act as the specialized technical advisor for others, look at IT-03. Applying to both is common when your experience sits near the boundary — just tailor each application to that poster's essential qualifications.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does CVFit list IT-02 openings?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No. Federal IT-02 roles are posted on GC Jobs. CVFit indexes private-sector tech jobs in Ottawa and can help you check your résumé against a poster's essential qualifications once you've found one.&lt;/p&gt;




&lt;p&gt;Paste an IT-02 posting and your résumé into CVFit to see your match score and gaps against the essential qualifications. Every match is backed by a quote from your CV. &lt;a href="https://cv-fit.click/tools/cv-match" rel="noopener noreferrer"&gt;Check your match now →&lt;/a&gt; — 1 month of Pro free, no credit card.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Read the original post on CVFit: &lt;a href="https://cv-fit.click/blog/it-02-jobs" rel="noopener noreferrer"&gt;IT-02 Jobs: Pay and How to Qualify&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Try the &lt;a href="https://cv-fit.click/tools/cv-match" rel="noopener noreferrer"&gt;free match checker&lt;/a&gt; — paste a job description and see how your resume lines up, with no account needed for a first check.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>government</category>
      <category>career</category>
      <category>jobsearch</category>
      <category>resume</category>
    </item>
    <item>
      <title>Antigravity and Codex security: stopping secret leaks with hooks and sandboxes</title>
      <dc:creator>Momin Aziz</dc:creator>
      <pubDate>Sun, 01 Nov 2026 13:13:40 +0000</pubDate>
      <link>https://dev.to/momin_aziz_1/antigravity-and-codex-security-stopping-secret-leaks-with-hooks-and-sandboxes-4d7n</link>
      <guid>https://dev.to/momin_aziz_1/antigravity-and-codex-security-stopping-secret-leaks-with-hooks-and-sandboxes-4d7n</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://reclaimllm.com/blogs/antigravity-codex-secret-leaks" rel="noopener noreferrer"&gt;ReclaimLLM&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;How Google Antigravity and OpenAI Codex agents read, print, and send secrets; what hooks and sandboxes cover; and where vendor docs leave failure modes undocumented.&lt;/p&gt;

&lt;h1&gt;
  
  
  Antigravity and Codex security: stopping secret leaks with hooks and sandboxes
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Executive summary
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Side-by-side of Antigravity and Codex: where secrets leak, what each vendor’s hooks/sandbox cover, and fail-open/fail-closed behavior.&lt;/li&gt;
&lt;li&gt;Antigravity App sandboxes terminal commands on by default; CLI (&lt;code&gt;agy&lt;/code&gt;) defaults sandbox off (auto-enables in &lt;code&gt;auto&lt;/code&gt; mode). Google’s hook crash/timeout fail mode is undocumented.&lt;/li&gt;
&lt;li&gt;Codex sandbox modes: &lt;code&gt;read-only&lt;/code&gt;, &lt;code&gt;workspace-write&lt;/code&gt; (default), &lt;code&gt;danger-full-access&lt;/code&gt;; approvals &lt;code&gt;on-request&lt;/code&gt; / &lt;code&gt;never&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;ReclaimLLM ships Antigravity hooks with env DLP and egress guard (not capture-only). AD-015, the automated egress-anomaly detector, does not yet cover Antigravity.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Google Antigravity and OpenAI Codex both offer hooks that can deny a tool call before it runs, plus sandboxes or approval boundaries that limit what shell commands can do. Neither stack gives you secret protection by default: post-tool hooks cannot undo side effects, and hook failures do not always block the underlying action. For a team rolling out either agent in 2026, the practical answer is to combine pre-tool hooks, network limits, env-file controls, and session capture you can review after the fact.&lt;/p&gt;

&lt;p&gt;This guide compares Antigravity and Codex side by side: where secrets leak, what each vendor documents, and how ReclaimLLM extends both with shipped hooks, env DLP, and an egress guard. Facts about vendor behavior were checked against public documentation in October 2026; re-verify Antigravity docs before you change production policy—they change often.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three ways coding agents leak secrets (read, print, send)
&lt;/h2&gt;

&lt;p&gt;Every coding agent faces the same three exfiltration paths, whether the model runs in the cloud or on your laptop:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Read — the agent opens &lt;code&gt;.env&lt;/code&gt;, key files, or config that holds credentials.&lt;/li&gt;
&lt;li&gt;Print — shell output, logs, or MCP responses echo secrets into the transcript.&lt;/li&gt;
&lt;li&gt;Send — HTTP, browser navigation, or copy-to-clipboard moves data off the machine.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For a vendor-neutral map of those paths and the control layers that address them, see What is AI DLP?. The sections below focus on Antigravity and Codex specifically.&lt;/p&gt;

&lt;h2&gt;
  
  
  Antigravity security
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Gemini CLI → Antigravity CLI (&lt;code&gt;agy&lt;/code&gt;)
&lt;/h3&gt;

&lt;p&gt;On June 18, 2026, Google announced that Gemini CLI and Gemini Code Assist IDE extensions would stop serving Google AI Pro/Ultra and free individual users. Gemini Code Assist Standard/Enterprise and paid API-key users can keep using Gemini CLI. For everyone else, Antigravity CLI (&lt;code&gt;agy&lt;/code&gt;) is the replacement path.&lt;/p&gt;

&lt;p&gt;Timeline note: Antigravity as an IDE existed before that cutover. Research such as PromptArmor’s exfiltration write-up and Simon Willison’s commentary (25 November 2025) predates the June 2026 consumer CLI transition—they describe Antigravity-era behavior, not the later Gemini CLI → &lt;code&gt;agy&lt;/code&gt; migration by itself.&lt;/p&gt;

&lt;h3&gt;
  
  
  Hooks
&lt;/h3&gt;

&lt;p&gt;Antigravity loads hooks from project &lt;code&gt;.agents/hooks.json&lt;/code&gt; and user &lt;code&gt;~/.gemini/config/hooks.json&lt;/code&gt;. Documented events include SessionStart, PreToolUse, PostToolUse, PreInvocation, PostInvocation, and Stop.&lt;/p&gt;

&lt;p&gt;On PreToolUse, decisions include allow, auto_approve, deny, ask, force_ask, and deny_unless_prior_grant, and hooks can overwrite tool input before execution. See Antigravity hooks.&lt;/p&gt;

&lt;p&gt;PostToolUse does not receive tool output in the documented hook payload—only an error field when something failed—so post-tool hooks cannot redact what already ran. Prevention has to happen at PreToolUse or in sandbox/network policy.&lt;/p&gt;

&lt;p&gt;Hook failure behavior: As of our October 2026 doc review, Google does not document whether Antigravity’s hook runner fails open or closed on crash, timeout, or malformed hook output. Do not assume either behavior; treat undocumented failure modes as a gap in your risk register.&lt;/p&gt;

&lt;h3&gt;
  
  
  Terminal sandbox
&lt;/h3&gt;

&lt;p&gt;Sandbox defaults depend on surface, not account type:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Surface&lt;/th&gt;
&lt;th&gt;Default sandbox behavior&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Antigravity App&lt;/td&gt;
&lt;td&gt;Terminal sandbox on by default&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Antigravity CLI (&lt;code&gt;agy&lt;/code&gt;)&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;enableTerminalSandbox&lt;/code&gt; defaults to false; auto mode can enable it&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Sandboxed commands get no network access by default; domains allowed under &lt;code&gt;read_url&lt;/code&gt; are added to the sandbox outbound allowlist. Business and enterprise accounts use a different escape-hatch syntax (&lt;code&gt;unsandboxed(...)&lt;/code&gt; vs personal &lt;code&gt;command(...)&lt;/code&gt;), but Google does not document a default sandbox difference beyond that syntax. Non-workspace access defaults to false on both surfaces. Details: Antigravity sandbox and agent settings.&lt;/p&gt;

&lt;p&gt;The sandbox limits terminal commands. It does not replace hook-based DLP for file tools or browser subagents.&lt;/p&gt;

&lt;h3&gt;
  
  
  MCP tokens
&lt;/h3&gt;

&lt;p&gt;MCP configuration lives in &lt;code&gt;~/.gemini/config/mcp_config.json&lt;/code&gt;. OAuth tokens for MCP are stored under &lt;code&gt;~/.gemini/antigravity/mcp_oauth_tokens.json&lt;/code&gt;. Treat both like credential stores—same rotation and access-review discipline as API keys. See Antigravity MCP.&lt;/p&gt;

&lt;h3&gt;
  
  
  Transcripts
&lt;/h3&gt;

&lt;p&gt;Session logs are written under paths such as:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;~/.gemini/antigravity-cli/brain/&amp;lt;session-id&amp;gt;/.system_generated/logs/transcript.jsonl&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Google has used more than one folder name across versions (&lt;code&gt;antigravity-cli&lt;/code&gt;, &lt;code&gt;antigravity&lt;/code&gt;, &lt;code&gt;antigravity-ide&lt;/code&gt;). ReclaimLLM’s historical sync checks those variants when backfilling. Provider-owned transcripts may retain unredacted content even when hooks sanitize uploads—plan retention and disk encryption accordingly. For a cross-tool transcript map, see AI coding transcripts as a secret store.&lt;/p&gt;

&lt;h3&gt;
  
  
  Known exfiltration research
&lt;/h3&gt;

&lt;p&gt;PromptArmor demonstrated indirect prompt injection: hidden instructions in web content coerced Antigravity to read &lt;code&gt;.env&lt;/code&gt; credentials and exfiltrate them via attacker-controlled URLs reached through a browser subagent. At research time, &lt;code&gt;webhook.site&lt;/code&gt; appeared in Antigravity’s default Browser URL Allowlist (browser docs). As of our October 2026 check, PromptArmor’s write-up did not document a vendor fix—say “no fix documented as of [your check date],” not “patched” or “still vulnerable forever.”&lt;/p&gt;

&lt;p&gt;Operational mitigations either way: tighten browser allowlists, block env reads at PreToolUse, and monitor outbound network patterns.&lt;/p&gt;

&lt;h2&gt;
  
  
  Codex security
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Hooks
&lt;/h3&gt;

&lt;p&gt;Codex enables hooks by default. To disable them in &lt;code&gt;config.toml&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight toml"&gt;&lt;code&gt;&lt;span class="k"&gt;[&lt;/span&gt;&lt;span class="n"&gt;features&lt;/span&gt;&lt;span class="k"&gt;]&lt;/span&gt;
&lt;span class="n"&gt;hooks&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Non-managed hooks require review and trust via &lt;code&gt;/hooks&lt;/code&gt; before they run. Managed hooks arrive through &lt;code&gt;requirements.toml&lt;/code&gt; and MDM. Project-local hooks load only when the project &lt;code&gt;.codex/&lt;/code&gt; layer is trusted; user and system hooks still load from their own config layers when the project is untrusted.&lt;/p&gt;

&lt;p&gt;PreToolUse can deny or rewrite input. OpenAI’s docs state explicitly that “an explicit supported denial can block an action, but a PreToolUse callback error, timeout, or malformed response can fail the hook without blocking the tool.” PostToolUse cannot undo side effects; errors, missing servers, and unavailable tools do not block the operation.&lt;/p&gt;

&lt;p&gt;Canonical references (October 2026): Codex hooks and Agent approvals &amp;amp; security. Older &lt;code&gt;developers.openai.com/codex/*&lt;/code&gt; URLs redirect to &lt;code&gt;learn.chatgpt.com&lt;/code&gt;; cite the learn URLs in new docs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Sandbox and approvals
&lt;/h3&gt;

&lt;p&gt;Named sandbox modes:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Mode&lt;/th&gt;
&lt;th&gt;Behavior&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;read-only&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Inspect files; no edits or commands without approval&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;workspace-write&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Default — edits and routine local commands within project boundaries&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;danger-full-access&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Removes filesystem and network restrictions&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Approval policies: &lt;code&gt;on-request&lt;/code&gt; (sandboxed by default, asks to go beyond the boundary) and &lt;code&gt;never&lt;/code&gt;. An &lt;code&gt;approvals_reviewer&lt;/code&gt; can be &lt;code&gt;user&lt;/code&gt; or &lt;code&gt;auto_review&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;OpenAI documents Work Cloud toggles such as “Allow public internet access,” but does not state a default network-access policy for the sandbox itself in the material we reviewed—do not claim “network blocked by default” without checking your org’s current Codex settings page.&lt;/p&gt;

&lt;h3&gt;
  
  
  Transcripts
&lt;/h3&gt;

&lt;p&gt;Full session transcripts live at:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;~/.codex/sessions/YYYY/MM/DD/rollout-*.jsonl&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Codex also maintains a separate prompt index at &lt;code&gt;~/.codex/history.jsonl&lt;/code&gt;. ReclaimLLM’s &lt;code&gt;rclm-sync&lt;/code&gt; imports session JSONL under &lt;code&gt;sessions/&lt;/code&gt;; it does not import &lt;code&gt;history.jsonl&lt;/code&gt; as a full session source. Align purge policy with both files if developers use Codex daily.&lt;/p&gt;

&lt;h2&gt;
  
  
  Antigravity vs Codex: hooks and sandboxes
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Capability&lt;/th&gt;
&lt;th&gt;Antigravity&lt;/th&gt;
&lt;th&gt;Codex&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Pre-tool deny&lt;/td&gt;
&lt;td&gt;Yes (PreToolUse)&lt;/td&gt;
&lt;td&gt;Yes (PreToolUse)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Rewrite tool input&lt;/td&gt;
&lt;td&gt;Yes (overwrite)&lt;/td&gt;
&lt;td&gt;Yes (&lt;code&gt;updatedInput&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Redact tool output in PostToolUse&lt;/td&gt;
&lt;td&gt;No (no output in hook payload)&lt;/td&gt;
&lt;td&gt;No (cannot undo side effects)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hook crash/timeout behavior&lt;/td&gt;
&lt;td&gt;Undocumented by Google&lt;/td&gt;
&lt;td&gt;Documented: can fail without blocking the tool&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Trust model&lt;/td&gt;
&lt;td&gt;Project/user hook files&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;/hooks&lt;/code&gt; review + trust; managed via &lt;code&gt;requirements.toml&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sandbox default&lt;/td&gt;
&lt;td&gt;App: on; CLI (&lt;code&gt;agy&lt;/code&gt;): off (auto may enable)&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;workspace-write&lt;/code&gt;; network default undocumented&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Neither column replaces secret scanning in CI or vault-backed credentials. Both need explicit env and egress policy.&lt;/p&gt;

&lt;h2&gt;
  
  
  How ReclaimLLM fits Antigravity and Codex
&lt;/h2&gt;

&lt;p&gt;ReclaimLLM’s Antigravity integration is shipped, not a preview: default &lt;code&gt;rclm-hooks-install&lt;/code&gt; includes Antigravity with PreInvocation, PostInvocation, PreToolUse, PostToolUse, and Stop.&lt;/p&gt;

&lt;p&gt;On PreToolUse for Antigravity, ReclaimLLM runs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Env DLP — denies &lt;code&gt;view_file&lt;/code&gt;, &lt;code&gt;write_to_file&lt;/code&gt;, and &lt;code&gt;replace_file_content&lt;/code&gt; on recognized env paths; blocks &lt;code&gt;run_command&lt;/code&gt; patterns that dump environment files.&lt;/li&gt;
&lt;li&gt;Egress guard — blocks common exfiltration binaries and inline fetch patterns toward non-allowlisted destinations, plus a GeoIP country firewall (announcement).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The same egress guard covers Codex on PreToolUse. For post-hoc egress anomaly detection, AD-015’s shipped client list names Claude Code, Cursor, Codex CLI, GitHub Copilot, Gemini CLI, Windsurf, and OpenCode—it does not list Antigravity. Use hooks + egress guard for Antigravity prevention; use capture and signals for broader detection. See AD-015.&lt;/p&gt;

&lt;p&gt;Capture: &lt;code&gt;rclm-sync --antigravity&lt;/code&gt; backfills transcripts; live Stop hooks upload sessions. Provider transcripts on disk may stay unredacted—ReclaimLLM redacts on upload per local redaction, but treat local files as sensitive.&lt;/p&gt;

&lt;h3&gt;
  
  
  Two different “fail” modes (do not conflate them)
&lt;/h3&gt;

&lt;p&gt;When ReclaimLLM’s env DLP hook runs and recognizes a blocked env access pattern, it denies that tool call—fail-closed for that class of event.&lt;/p&gt;

&lt;p&gt;When the hook process crashes, times out, or the vendor hook runner errors, behavior follows vendor rules. Codex documents fail-open hook callbacks in several cases; Antigravity’s runner behavior on error is undocumented. ReclaimLLM coverage is detection, not MDM—you still want coverage alerts when hooks go missing.&lt;/p&gt;

&lt;p&gt;ReclaimLLM data residency is US and EU only. SOC 2 Type II is targeted for early 2027; ReclaimLLM is not yet certified.&lt;/p&gt;

&lt;h2&gt;
  
  
  Checklist for Antigravity and Codex
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;#&lt;/th&gt;
&lt;th&gt;Control&lt;/th&gt;
&lt;th&gt;Antigravity&lt;/th&gt;
&lt;th&gt;Codex&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Pre-tool hooks for env + egress&lt;/td&gt;
&lt;td&gt;Install RCLM hooks; review Google hook JSON&lt;/td&gt;
&lt;td&gt;Trust project hooks; install RCLM hooks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Sandbox / approvals&lt;/td&gt;
&lt;td&gt;App: confirm sandbox on; CLI: set &lt;code&gt;enableTerminalSandbox&lt;/code&gt; explicitly&lt;/td&gt;
&lt;td&gt;Avoid &lt;code&gt;danger-full-access&lt;/code&gt;; prefer &lt;code&gt;on-request&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Browser / network allowlists&lt;/td&gt;
&lt;td&gt;Review default browser allowlist; remove test domains&lt;/td&gt;
&lt;td&gt;Confirm Work Cloud network toggle with security&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;MCP credential hygiene&lt;/td&gt;
&lt;td&gt;Rotate &lt;code&gt;mcp_oauth_tokens.json&lt;/code&gt; on schedule&lt;/td&gt;
&lt;td&gt;Review managed &lt;code&gt;requirements.toml&lt;/code&gt; hooks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Transcript retention&lt;/td&gt;
&lt;td&gt;Encrypt disk; purge &lt;code&gt;~/.gemini/.../transcript*.jsonl&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Purge &lt;code&gt;sessions/&lt;/code&gt; and decide on &lt;code&gt;history.jsonl&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Coverage verification&lt;/td&gt;
&lt;td&gt;Coverage tab + device check-in&lt;/td&gt;
&lt;td&gt;Same&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Incident evidence&lt;/td&gt;
&lt;td&gt;Signals + session replay&lt;/td&gt;
&lt;td&gt;AD-015 where supported&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;For a deeper network-exfiltration playbook, see Stopping AI agent network exfiltration.&lt;/p&gt;

&lt;p&gt;Next step: Block secret exfiltration in Antigravity and Codex—start free.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Is Google Antigravity secure for company code?
&lt;/h3&gt;

&lt;p&gt;It can be, when you combine sandbox settings (surface-dependent defaults), hook denies, browser allowlists, MCP hygiene, and monitoring. Google documents the knobs; your team owns enforcement and verification. No agent is safe if developers paste live secrets into prompts.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is Gemini CLI still available?
&lt;/h3&gt;

&lt;p&gt;Yes for Gemini Code Assist Standard/Enterprise and paid API-key users. Consumer Pro/Ultra and free individual access moved to Antigravity CLI on June 18, 2026. Enterprise CLI users are not automatically on &lt;code&gt;agy&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Do Antigravity hooks fail open?
&lt;/h3&gt;

&lt;p&gt;Google does not document crash, timeout, or malformed-output behavior for its hook runner as of October 2026. ReclaimLLM env DLP denies recognized env reads when our hook runs successfully—it does not change undocumented Google runner behavior.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can Codex hooks block a command?
&lt;/h3&gt;

&lt;p&gt;Yes—a supported PreToolUse deny blocks the action. Hook callback errors, timeouts, or malformed responses can fail the hook without blocking the tool, per OpenAI’s documentation.&lt;/p&gt;

&lt;h3&gt;
  
  
  Where are Antigravity MCP OAuth tokens stored?
&lt;/h3&gt;

&lt;p&gt;In &lt;code&gt;~/.gemini/antigravity/mcp_oauth_tokens.json&lt;/code&gt;, alongside MCP config in &lt;code&gt;~/.gemini/config/mcp_config.json&lt;/code&gt;. Back them into access-review and rotation procedures like any other secret file.&lt;/p&gt;

&lt;h3&gt;
  
  
  Does ReclaimLLM’s AD-015 cover Antigravity?
&lt;/h3&gt;

&lt;p&gt;No. AD-015’s published integration list does not include Antigravity. Use PreToolUse egress guard and env DLP for Antigravity, plus session capture for audit evidence.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Read the original article at &lt;a href="https://reclaimllm.com/blogs/antigravity-codex-secret-leaks" rel="noopener noreferrer"&gt;ReclaimLLM&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>security</category>
      <category>programming</category>
      <category>cybersecurity</category>
    </item>
    <item>
      <title>OpenTelemetry is the right interface for LLM APIs — but not for coding agents</title>
      <dc:creator>Momin Aziz</dc:creator>
      <pubDate>Sat, 31 Oct 2026 14:33:56 +0000</pubDate>
      <link>https://dev.to/momin_aziz_1/opentelemetry-is-the-right-interface-for-llm-apis-but-not-for-coding-agents-299a</link>
      <guid>https://dev.to/momin_aziz_1/opentelemetry-is-the-right-interface-for-llm-apis-but-not-for-coding-agents-299a</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published on ReclaimLLM: &lt;a href="https://reclaimllm.com/blogs/opentelemetry-llm-apis-vs-native-coding-agents" rel="noopener noreferrer"&gt;https://reclaimllm.com/blogs/opentelemetry-llm-apis-vs-native-coding-agents&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Why application-owned LLM calls belong in OpenTelemetry, while developer coding assistants require native lifecycle hooks, patch hunks, and terminal context.&lt;/p&gt;

&lt;h1&gt;
  
  
  OpenTelemetry is the right interface for LLM APIs — but not for coding agents
&lt;/h1&gt;

&lt;p&gt;Enterprises are adopting two very different kinds of AI systems at the same time.&lt;/p&gt;

&lt;p&gt;The first is software they build: support workflows, copilots, extraction pipelines, internal agents, and other applications that call OpenAI, Anthropic, Gemini, Azure OpenAI, Vertex AI, Bedrock, or another model API.&lt;/p&gt;

&lt;p&gt;The second is software their developers use: Claude Code, Codex CLI, Cursor, Antigravity, Gemini CLI, and OpenClaw.&lt;/p&gt;

&lt;p&gt;Both create prompts, responses, tool calls, token usage, errors, and governance questions. But they should not be captured in the same way.&lt;/p&gt;

&lt;p&gt;For application-owned LLM calls, OpenTelemetry is the right integration boundary. For coding agents, native hooks and transcripts contain materially richer information. ReclaimLLM supports both paths and normalizes them into the same session model.&lt;/p&gt;

&lt;h2&gt;
  
  
  Use OpenTelemetry Where the Application Owns the Call
&lt;/h2&gt;

&lt;p&gt;An enterprise application already has a provider integration, deployment architecture, and security review. Adding observability should not require replacing that provider client or inserting a new inference gateway.&lt;/p&gt;

&lt;p&gt;With OpenTelemetry, the paths remain separate:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Application ──→ LLM provider
     │
     └── OTLP/HTTP traces ──→ ReclaimLLM
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The application continues to send inference traffic directly to its provider. An OpenTelemetry SDK or Collector exports the telemetry around that call to ReclaimLLM.&lt;/p&gt;

&lt;p&gt;This works well for teams that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Already operate an OpenTelemetry Collector;&lt;/li&gt;
&lt;li&gt;Use multiple model providers;&lt;/li&gt;
&lt;li&gt;Cannot add another service to the inference path;&lt;/li&gt;
&lt;li&gt;Want application traces and LLM activity to share correlation context;&lt;/li&gt;
&lt;li&gt;Need team attribution without transferring provider credentials.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;ReclaimLLM accepts OpenTelemetry GenAI and OpenInference traces over OTLP/HTTP. Depending on what the instrumentor emits, the resulting session can include prompts, responses, tool calls, models, token usage, timing, errors, span relationships, and custom workflow attributes.&lt;/p&gt;

&lt;p&gt;Related calls are grouped using &lt;code&gt;session.id&lt;/code&gt;, then &lt;code&gt;gen_ai.conversation.id&lt;/code&gt;, and finally the trace ID. Re-exported spans converge by trace and span identity, so normal Collector retries do not create duplicate conversations or inflate usage totals.&lt;/p&gt;

&lt;h2&gt;
  
  
  Coding Agents Expose a Different Surface
&lt;/h2&gt;

&lt;p&gt;A coding agent is not just another model API.&lt;/p&gt;

&lt;p&gt;Its useful context lives in local transcript files and proprietary lifecycle hooks rather than standard spans. That context includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;File edits and patch hunks;&lt;/li&gt;
&lt;li&gt;Terminal commands and their results;&lt;/li&gt;
&lt;li&gt;Working-directory and repository context;&lt;/li&gt;
&lt;li&gt;Permission decisions;&lt;/li&gt;
&lt;li&gt;Session resume and stop events;&lt;/li&gt;
&lt;li&gt;Client-specific token counters;&lt;/li&gt;
&lt;li&gt;Tool-result transformations that happened before content reached the model.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Reducing these sessions to generic OTLP would discard critical detail or depend on each client emitting the same stable telemetry. They do not.&lt;/p&gt;

&lt;p&gt;ReclaimLLM uses independently versioned native adapters for Claude Code, Codex CLI, Cursor, Antigravity, Gemini CLI, and OpenClaw. Each adapter follows the source contract that client actually provides. A transcript can be primary for one client while hook reconstruction is the best available source for another.&lt;/p&gt;

&lt;p&gt;Installation uses one package and one command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;rclm
rclm-hooks-install
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The default installer configures Claude Code, Codex CLI, Cursor, Antigravity, and Gemini CLI. OpenClaw is opt-in via &lt;code&gt;--openclaw&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  One Downstream Model, Explicit Provenance
&lt;/h2&gt;

&lt;p&gt;Separate capture paths should not create separate products.&lt;/p&gt;

&lt;p&gt;After normalization, OpenTelemetry and native-agent records use the same ReclaimLLM session, message, tool-call, usage, storage, search, and governance systems. Existing encryption, data residency, retention, authorization, export, and deletion controls apply to both.&lt;/p&gt;

&lt;p&gt;The source remains explicit through three independent dimensions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;capture_source&lt;/code&gt; identifies &lt;code&gt;opentelemetry&lt;/code&gt; or &lt;code&gt;native_agent&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;agent_client&lt;/code&gt; identifies Cursor, Claude Code, Codex, Antigravity, Gemini CLI, or OpenClaw;&lt;/li&gt;
&lt;li&gt;The model provider identifies the company serving the model.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These fields should not be collapsed. A developer can use Cursor with a Claude model. In that case, Cursor is the client and Anthropic is the model provider. Inferring the client from the model would produce incorrect analytics.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Teams Should Deploy
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Use OpenTelemetry for production applications and internal workflows where your code owns the provider request. If a Collector already exists, add ReclaimLLM as another trace destination and retain the current batching, filtering, redaction, and retry pipeline.&lt;/li&gt;
&lt;li&gt;Use native capture for developer coding agents when you need the richer client session: transcript content, tools, code changes, project context, and lifecycle events.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The design principle is simple: standardize where the ecosystem has a useful standard, preserve native detail where it does not, and normalize only at the point where the data can honestly share a model.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://reclaimllm.com/blogs/opentelemetry-llm-apis-vs-native-coding-agents" rel="noopener noreferrer"&gt;https://reclaimllm.com/blogs/opentelemetry-llm-apis-vs-native-coding-agents&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>devops</category>
      <category>llm</category>
    </item>
    <item>
      <title>Why .cursorignore is not DLP</title>
      <dc:creator>Momin Aziz</dc:creator>
      <pubDate>Sat, 31 Oct 2026 14:30:56 +0000</pubDate>
      <link>https://dev.to/momin_aziz_1/why-cursorignore-is-not-dlp-2k1a</link>
      <guid>https://dev.to/momin_aziz_1/why-cursorignore-is-not-dlp-2k1a</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published on ReclaimLLM: &lt;a href="https://reclaimllm.com/blogs/why-cursorignore-is-not-dlp" rel="noopener noreferrer"&gt;https://reclaimllm.com/blogs/why-cursorignore-is-not-dlp&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Cursor can still read .env files, see terminal output, and send context to the model even when Privacy Mode is on — ignore files are not redaction.&lt;/p&gt;

&lt;h1&gt;
  
  
  Why .cursorignore is not DLP
&lt;/h1&gt;

&lt;p&gt;&lt;code&gt;.cursorignore&lt;/code&gt; is useful. It is not DLP.&lt;/p&gt;

&lt;p&gt;Teams often treat an ignore file as a security control: add &lt;code&gt;.env&lt;/code&gt;, ship a PR, and assume Cursor cannot expose secrets. That assumption fails in the places that matter for AI coding assistants — file reads the agent still performs, shell output the model still sees, and privacy settings that change retention without redacting prompts.&lt;/p&gt;

&lt;h2&gt;
  
  
  What .cursorignore actually does
&lt;/h2&gt;

&lt;p&gt;Ignore files tell the editor which paths to de-emphasize for indexing and some context features. They do not:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Intercept tool calls that read files&lt;/li&gt;
&lt;li&gt;Scrub secrets from terminal or command output before they enter the model context&lt;/li&gt;
&lt;li&gt;Replace credentials with typed placeholders so the assistant can keep working without the raw secret&lt;/li&gt;
&lt;li&gt;Produce an audit trail of what was blocked or redacted&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If an agent (or a developer) opens &lt;code&gt;.env&lt;/code&gt;, pastes a key, or runs a command that prints a token, the ignore list does not rewrite that content on the way out.&lt;/p&gt;

&lt;h2&gt;
  
  
  Terminal bypass and agent file reads
&lt;/h2&gt;

&lt;p&gt;Modern Cursor workflows are tool-heavy. Agents read files, run shell commands, and summarize results. Secrets commonly appear in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;.env&lt;/code&gt; / &lt;code&gt;.envrc&lt;/code&gt; and sibling env files&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;printenv&lt;/code&gt;, &lt;code&gt;cat&lt;/code&gt;, and deploy scripts&lt;/li&gt;
&lt;li&gt;CI logs and local debug output pasted into chat&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;An ignore entry does not sit on that path. For a control that does, see Cursor Security &amp;amp; DLP and the AI coding assistant DLP overview.&lt;/p&gt;

&lt;h2&gt;
  
  
  Privacy Mode is not redaction
&lt;/h2&gt;

&lt;p&gt;Privacy Mode and similar product settings typically change how prompts may be retained or used by the vendor. They do not mean “strip API keys from this turn before the request leaves the machine.”&lt;/p&gt;

&lt;p&gt;Redaction and retention are different layers:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Control&lt;/th&gt;
&lt;th&gt;What it changes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;.cursorignore&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Indexing / some context inclusion hints&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Privacy Mode&lt;/td&gt;
&lt;td&gt;Vendor retention / training posture&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hook DLP&lt;/td&gt;
&lt;td&gt;Content rewritten locally before egress&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;If your requirement is “plaintext secrets must not reach the model,” you need a pre-execution control — not an ignore file.&lt;/p&gt;

&lt;h2&gt;
  
  
  What hook DLP does instead
&lt;/h2&gt;

&lt;p&gt;ReclaimLLM installs hooks for Cursor (and other assistants) so high-risk reads and shell outputs can be redacted on the device before they are sent. Matched credentials are replaced with labeled placeholders such as &lt;code&gt;[REDACTED:API_KEY]&lt;/code&gt; while preserving enough structure for the assistant to continue. Configure substitutions and folder filters as described in sensitive data docs.&lt;/p&gt;

&lt;p&gt;Install Cursor hooks with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;rclm-hooks-install &lt;span class="nt"&gt;--cursor&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For the governance picture — redaction at the hook, sensitive-session handling, and gateway options — see DLP governance.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bottom line
&lt;/h2&gt;

&lt;p&gt;Use &lt;code&gt;.cursorignore&lt;/code&gt; for hygiene. Use hook DLP when the threat model is secret egress to Cursor’s model. Privacy Mode does not close that gap.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://reclaimllm.com/blogs/why-cursorignore-is-not-dlp" rel="noopener noreferrer"&gt;https://reclaimllm.com/blogs/why-cursorignore-is-not-dlp&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>security</category>
      <category>programming</category>
      <category>cybersecurity</category>
    </item>
    <item>
      <title>Prevent API keys and .env from reaching ChatGPT, Cursor, and Claude Code</title>
      <dc:creator>Momin Aziz</dc:creator>
      <pubDate>Sat, 31 Oct 2026 14:28:02 +0000</pubDate>
      <link>https://dev.to/momin_aziz_1/prevent-api-keys-and-env-from-reaching-chatgpt-cursor-and-claude-code-10gi</link>
      <guid>https://dev.to/momin_aziz_1/prevent-api-keys-and-env-from-reaching-chatgpt-cursor-and-claude-code-10gi</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published on ReclaimLLM: &lt;a href="https://reclaimllm.com/blogs/prevent-api-keys-env-from-ai-coding-tools" rel="noopener noreferrer"&gt;https://reclaimllm.com/blogs/prevent-api-keys-env-from-ai-coding-tools&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;A practical how-to: stop secrets in env files and shell output from leaving the workstation when developers use ChatGPT, Cursor, or Claude Code.&lt;/p&gt;

&lt;h1&gt;
  
  
  Prevent API keys and .env from reaching ChatGPT, Cursor, and Claude Code
&lt;/h1&gt;

&lt;p&gt;API keys and &lt;code&gt;.env&lt;/code&gt; contents show up in AI coding sessions more often than security reviews expect — not because developers are reckless, but because agents read files and run commands by default.&lt;/p&gt;

&lt;p&gt;This guide covers what usually leaks, what ignore lists and chat settings do not stop, and how hook DLP redacts secrets before they reach ChatGPT, Cursor, or Claude Code.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where secrets enter the model context
&lt;/h2&gt;

&lt;p&gt;Common paths:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;File reads&lt;/strong&gt; — the agent opens &lt;code&gt;.env&lt;/code&gt;, &lt;code&gt;.env.local&lt;/code&gt;, &lt;code&gt;.envrc&lt;/code&gt;, or a config that embeds a token&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Shell output&lt;/strong&gt; — &lt;code&gt;env&lt;/code&gt;, &lt;code&gt;printenv&lt;/code&gt;, failed deploys, or scripts that echo credentials&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Paste&lt;/strong&gt; — a key lands in the prompt during debugging&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Browser assistants&lt;/strong&gt; — ChatGPT / Claude.ai threads fed from the same repo context via copy or extensions&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If the control only filters search indexes, those paths still send plaintext to the provider.&lt;/p&gt;

&lt;h2&gt;
  
  
  What does not solve it alone
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;.cursorignore&lt;/code&gt; / &lt;code&gt;.gitignore&lt;/code&gt; — hygiene for indexing and git; not egress redaction. See why &lt;code&gt;.cursorignore&lt;/code&gt; is not DLP.&lt;/li&gt;
&lt;li&gt;“Do not train on my data” toggles — retention posture, not secret stripping&lt;/li&gt;
&lt;li&gt;Hoping developers never open &lt;code&gt;.env&lt;/code&gt; — agents open files without a human click&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You need a control that rewrites high-risk content &lt;strong&gt;before&lt;/strong&gt; the request leaves the machine.&lt;/p&gt;

&lt;h2&gt;
  
  
  Hook DLP: redact at the tool boundary
&lt;/h2&gt;

&lt;p&gt;ReclaimLLM hooks sit at the assistant’s tool/file/shell boundary. For supported CLIs and editors (including Cursor and Claude Code), matched secrets in file reads and command output can be replaced with labeled placeholders such as &lt;code&gt;[REDACTED:API_KEY]&lt;/code&gt; so the model never receives the raw value.&lt;/p&gt;

&lt;p&gt;Configure substitutions and folder include/exclude filters in sensitive data docs. Sync shared rules with &lt;code&gt;rclm-update&lt;/code&gt; after changing Global Substitutions in the app.&lt;/p&gt;

&lt;p&gt;Install hooks:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;rclm-hooks-install &lt;span class="nt"&gt;--cursor&lt;/span&gt;
rclm-hooks-install &lt;span class="nt"&gt;--claude&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Browser and API paths differ: ChatGPT-style workflows need capture/proxy coverage rather than native Cursor/Claude hooks — see AI coding assistant DLP and install.&lt;/p&gt;

&lt;h2&gt;
  
  
  After capture: review and sensitive handling
&lt;/h2&gt;

&lt;p&gt;Hook redaction is the primary prevention layer. Sessions that still look sensitive can be reviewed before share or export; Enterprise plans add org-oriented DLP scanning. Details and current limitations are documented under sensitive data.&lt;/p&gt;

&lt;p&gt;For the full control stack — redact at hook, sensitive session handling, and gateway options — read DLP governance and Claude Code DLP &amp;amp; hooks.&lt;/p&gt;

&lt;h2&gt;
  
  
  Checklist
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Inventory which tools engineers use (Cursor, Claude Code, ChatGPT, Copilot, Gemini)&lt;/li&gt;
&lt;li&gt;Install hooks where native support exists&lt;/li&gt;
&lt;li&gt;Add env-file and high-entropy patterns to redaction substitutions&lt;/li&gt;
&lt;li&gt;Restrict capture folders if needed (&lt;code&gt;include_folders&lt;/code&gt; / &lt;code&gt;exclude_folders&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Verify with a test session that placeholders appear instead of plaintext keys&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Prevention is local and deterministic for known patterns. Treat vendor privacy modes as complementary, not sufficient.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://reclaimllm.com/blogs/prevent-api-keys-env-from-ai-coding-tools" rel="noopener noreferrer"&gt;https://reclaimllm.com/blogs/prevent-api-keys-env-from-ai-coding-tools&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>security</category>
      <category>programming</category>
      <category>cybersecurity</category>
    </item>
    <item>
      <title>Hook DLP vs endpoint AI DLP vs AIDR</title>
      <dc:creator>Momin Aziz</dc:creator>
      <pubDate>Sat, 31 Oct 2026 14:25:03 +0000</pubDate>
      <link>https://dev.to/momin_aziz_1/hook-dlp-vs-endpoint-ai-dlp-vs-aidr-3fnh</link>
      <guid>https://dev.to/momin_aziz_1/hook-dlp-vs-endpoint-ai-dlp-vs-aidr-3fnh</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published on ReclaimLLM: &lt;a href="https://reclaimllm.com/blogs/hook-dlp-vs-endpoint-ai-dlp-vs-aidr" rel="noopener noreferrer"&gt;https://reclaimllm.com/blogs/hook-dlp-vs-endpoint-ai-dlp-vs-aidr&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;A fair comparison for evaluation queries: tool-level hook redaction, OS/endpoint AI DLP agents, and network AIDR/CASB-style controls — what each sees and misses.&lt;/p&gt;

&lt;h1&gt;
  
  
  Hook DLP vs endpoint AI DLP vs AIDR
&lt;/h1&gt;

&lt;p&gt;Buyers evaluating “AI DLP” often compare three architectures that sound similar in a slide deck and behave differently on a developer laptop.&lt;/p&gt;

&lt;p&gt;This article maps &lt;strong&gt;hook DLP&lt;/strong&gt;, &lt;strong&gt;endpoint AI DLP&lt;/strong&gt;, and &lt;strong&gt;AIDR / network DLP&lt;/strong&gt; without claiming one product is universally “best.” For a productized side-by-side, see also Hook DLP vs Endpoint DLP.&lt;/p&gt;

&lt;h2&gt;
  
  
  Definitions
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Approach&lt;/th&gt;
&lt;th&gt;Where it sits&lt;/th&gt;
&lt;th&gt;Typical strength&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Hook DLP&lt;/td&gt;
&lt;td&gt;Inside the coding assistant’s tool/file/shell hooks&lt;/td&gt;
&lt;td&gt;Sees structured agent I/O; can redact before model egress&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Endpoint AI DLP&lt;/td&gt;
&lt;td&gt;OS agent / EDR-adjacent sensors on the device&lt;/td&gt;
&lt;td&gt;Broad process visibility; heavier footprint; may miss app-native tool schemas&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AIDR / network DLP / CASB&lt;/td&gt;
&lt;td&gt;Proxy, gateway, or cloud API inspection&lt;/td&gt;
&lt;td&gt;Strong for SaaS HTTP paths; weak for local CLI tool loops that never hit that proxy&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Hook DLP
&lt;/h2&gt;

&lt;p&gt;Hooks run at the assistant boundary: file reads, shell results, and related tool payloads can be inspected and rewritten locally. ReclaimLLM uses this model for Cursor, Claude Code, and other supported assistants — replacing secrets with placeholders such as &lt;code&gt;[REDACTED:API_KEY]&lt;/code&gt; before the request leaves the machine (sensitive data docs).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fits well when:&lt;/strong&gt; the risk is &lt;code&gt;.env&lt;/code&gt; and terminal secrets in agent loops; you want low friction for developers; you need typed redaction that keeps sessions usable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Limits:&lt;/strong&gt; coverage depends on hook support per tool; browser ChatGPT threads and unmanaged apps need other paths (AI coding assistant DLP).&lt;/p&gt;

&lt;h2&gt;
  
  
  Endpoint AI DLP
&lt;/h2&gt;

&lt;p&gt;Endpoint products instrument the OS: process trees, clipboard, file access, sometimes screen or keystroke-adjacent signals. They can catch exfiltration that never uses a coding-assistant hook.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fits well when:&lt;/strong&gt; you already standardize on an endpoint stack and need cross-application coverage beyond IDEs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Limits:&lt;/strong&gt; coding agents speak structured tool protocols; generic sensors may alert late, miss semantic context, or create noise. They rarely provide assistant-aware placeholders that preserve agent syntax. Fair evaluation should test secret-in-&lt;code&gt;.env&lt;/code&gt;-via-agent, not only file copy to USB.&lt;/p&gt;

&lt;h2&gt;
  
  
  AIDR / network DLP / CASB
&lt;/h2&gt;

&lt;p&gt;Network and API controls inspect traffic to known LLM SaaS endpoints. They work when traffic is forced through the inspection point and payloads are visible (not end-to-end opaque in a way that blocks inspection).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fits well when:&lt;/strong&gt; cloud ChatGPT / API usage is the dominant path and TLS interception or provider APIs are in scope.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Limits:&lt;/strong&gt; local CLI agents, editor-embedded models, and bypass networks can avoid the chokepoint. Cursor/Claude Code tool loops often look like “developer workstation → provider” without a corporate proxy in the middle unless you force one.&lt;/p&gt;

&lt;h2&gt;
  
  
  Evaluation questions (fair tests)
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Does the control see &lt;strong&gt;agent file reads&lt;/strong&gt; of &lt;code&gt;.env&lt;/code&gt;, or only bulk file exfil?&lt;/li&gt;
&lt;li&gt;Does it &lt;strong&gt;redact before model ingest&lt;/strong&gt;, or only alert after?&lt;/li&gt;
&lt;li&gt;What is the &lt;strong&gt;developer friction&lt;/strong&gt; (agents broken vs placeholders)?&lt;/li&gt;
&lt;li&gt;Which &lt;strong&gt;tools in your inventory&lt;/strong&gt; (Cursor, Claude, Copilot, Gemini, browser) are actually in path?&lt;/li&gt;
&lt;li&gt;Can you produce &lt;strong&gt;evidence&lt;/strong&gt; for review — sessions, redaction config, gateway logs?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Use DLP governance for the hook + sensitive-session + gateway stack, and security &amp;amp; compliance for org design.&lt;/p&gt;

&lt;h2&gt;
  
  
  Practical recommendation
&lt;/h2&gt;

&lt;p&gt;Most engineering orgs need &lt;strong&gt;layered&lt;/strong&gt; controls: hook DLP for coding agents, endpoint for broader device risk, network/AIDR for sanctioned SaaS HTTP. Treat them as complementary. Evaluate with real Cursor/Claude workflows, not only generic web-chat proxies.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://reclaimllm.com/blogs/hook-dlp-vs-endpoint-ai-dlp-vs-aidr" rel="noopener noreferrer"&gt;https://reclaimllm.com/blogs/hook-dlp-vs-endpoint-ai-dlp-vs-aidr&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>security</category>
      <category>devops</category>
      <category>cybersecurity</category>
    </item>
    <item>
      <title>The compliance debt of AI coding agents</title>
      <dc:creator>Momin Aziz</dc:creator>
      <pubDate>Sat, 31 Oct 2026 14:22:07 +0000</pubDate>
      <link>https://dev.to/momin_aziz_1/the-compliance-debt-of-ai-coding-agents-41bc</link>
      <guid>https://dev.to/momin_aziz_1/the-compliance-debt-of-ai-coding-agents-41bc</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published on ReclaimLLM: &lt;a href="https://reclaimllm.com/blogs/ai-coding-compliance-and-regulatory-risks" rel="noopener noreferrer"&gt;https://reclaimllm.com/blogs/ai-coding-compliance-and-regulatory-risks&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;How autonomous file reads break GDPR data sovereignty, SOC 2 least privilege, audit trails, and sector mandates — with the checklist auditors look for.&lt;/p&gt;

&lt;h1&gt;
  
  
  The compliance debt of AI coding agents
&lt;/h1&gt;

&lt;p&gt;When engineering teams equip autonomous coding agents with repository access and shell execution, the focus is almost always on developer velocity: faster PRs, automated refactoring, and instant bug triage.&lt;/p&gt;

&lt;p&gt;The compliance failure happens in the background.&lt;/p&gt;

&lt;p&gt;When a developer asks an agent to debug a failed database migration or configure an integration, the agent does what any capable system would do: it inspects the project environment. It reads &lt;code&gt;.env&lt;/code&gt;, parses &lt;code&gt;.env.production&lt;/code&gt;, or inspects local shell configuration files.&lt;/p&gt;

&lt;p&gt;To a developer, the agent is simply reading a configuration file. To an auditor, that single action frequently breaks regulatory and governance controls across data sovereignty, access control, and incident logging frameworks.&lt;/p&gt;

&lt;p&gt;The issue is not that AI tools are inherently non-compliant. The issue is that autonomous agents operate under human workstation privileges while lacking human accountability, and they route sensitive local state into external model provider networks.&lt;/p&gt;

&lt;p&gt;Here is an analysis of how autonomous coding agents trigger regulatory findings across five specific compliance areas, along with what auditors flag during an enterprise assessment.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Data Residency and Sovereignty Violations (GDPR, PIPEDA, CCPA)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;The Mechanism:&lt;/strong&gt;&lt;br&gt;
When an AI coding agent reads a configuration file, its contents are packaged into an API payload and sent to external model provider inference endpoints. These endpoints are frequently hosted in US data centers or distributed multi-region cloud clusters.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Failure:&lt;/strong&gt;&lt;br&gt;
Reading a generic configuration like &lt;code&gt;PORT=8000&lt;/code&gt; is harmless. However, &lt;code&gt;.env&lt;/code&gt; and configuration files regularly contain:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Database connection strings that include user credentials&lt;/li&gt;
&lt;li&gt;Internal customer identifiers and staging URLs&lt;/li&gt;
&lt;li&gt;Third-party webhook tokens and API secrets&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Under frameworks like the EU General Data Protection Regulation (GDPR Chapter V) or Canada's PIPEDA, transmitting data that unlocks access to personal data across international borders requires specific contractual mechanisms: valid Data Processing Agreements (DPAs) with approved Standard Contractual Clauses (SCCs).&lt;/p&gt;

&lt;p&gt;If an agent running on a European developer’s laptop reads an environment file containing credentials to an EU customer staging database and ships that context to an unvetted cloud model endpoint outside the EEA, that transfer represents an unauthorized cross-border disclosure.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Breach of Least Privilege and Access Control (SOC 2, ISO/IEC 27001)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;The Mechanism:&lt;/strong&gt;&lt;br&gt;
Standards such as SOC 2 (Trust Services Criteria CC6.1, CC6.2, CC6.3) and ISO/IEC 27001 (Controls A.9 and A.8 in updated revisions) mandate strict enforcement of the Principle of Least Privilege (PoLP) and segregation between production and development secrets.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Failure:&lt;/strong&gt;&lt;br&gt;
Autonomous agents run with the elevated shell permissions of the developer who launched them. An agent can read, write, and execute anything that the developer's user account can access on the workstation.&lt;/p&gt;

&lt;p&gt;In an audit, exposing live credentials to automated tooling invalidates compliance evidence:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Plaintext Secret Exposure:&lt;/strong&gt; Storing production or staging secrets in plaintext workspace files accessible by autonomous processes violates controls requiring encryption at rest and role-based segregation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inherited Privilege Without Identity:&lt;/strong&gt; The agent possesses no individual cryptographic identity or role boundary. It acts as an unvetted extension of the developer, bypassing access tiering. If an agent accesses staging or production keys that only senior engineers are authorized to touch directly, the control fails.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Destruction of Forensic Auditability and Non-Repudiation
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;The Mechanism:&lt;/strong&gt;&lt;br&gt;
Enterprise compliance frameworks require an immutable audit trail detailing who accessed sensitive resources, when, and for what purpose.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Failure:&lt;/strong&gt;&lt;br&gt;
When an AI coding agent executes a tool call—such as &lt;code&gt;cat .env.production&lt;/code&gt; or a Python &lt;code&gt;open(".env")&lt;/code&gt; call—the operation is recorded in the local operating system log only under the developer’s local username, or in ephemeral terminal history.&lt;/p&gt;

&lt;p&gt;If those credentials leak, identifying the causal chain is nearly impossible:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Was the secret accessed intentionally by the human engineer?&lt;/li&gt;
&lt;li&gt;Was it read autonomously by a background agent tool loop trying to solve a build error?&lt;/li&gt;
&lt;li&gt;Did the prompt payload include the secret, and was it cached in a third-party model context window?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The agent acts as an unmonitored proxy. It breaks non-repudiation and makes forensic analysis during a security incident report impossible to reconcile with auditor expectations.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Third-Party Vendor Risk and Subprocessor Sprawl
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;The Mechanism:&lt;/strong&gt;&lt;br&gt;
Enterprise vendor management policies require vetting and approving every third-party service provider that processes confidential code or infrastructure secrets.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Failure:&lt;/strong&gt;&lt;br&gt;
Even when an enterprise signs a commercial Zero Data Retention (ZDR) agreement with an LLM provider (such as Anthropic, OpenAI, or Google Cloud Vertex AI), secrets transmitted in prompt payloads can remain vulnerable:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Ephemeral Debug and Error Caches:&lt;/strong&gt; Provider-side infrastructure often retains short-term operational logs, error traces, and intermediate proxy buffers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Shadow Vendor Integration:&lt;/strong&gt; Developers switching between different coding assistants (Cursor, Claude Code, Gemini CLI, or custom MCP servers) may inadvertently route secrets through providers and intermediate gateways that have never undergone internal vendor security review.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When an unredacted secret is sent across an API boundary to an unapproved model endpoint, that endpoint becomes an unauthorized subprocessor.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Critical Infrastructure and Sector-Specific Mandates (NERC CIP, HIPAA, PCI-DSS)
&lt;/h3&gt;

&lt;p&gt;In regulated industries, transmitting infrastructure secrets through cloud-connected AI tooling can turn an operational session into a reportable incident:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;PCI-DSS (Requirements 3 &amp;amp; 8):&lt;/strong&gt; Payment card data, database connection strings, and API keys granting access to cardholder data environments (CDE) must never be stored in plaintext or exposed to untrusted external networks. If an agent loads database credentials connected to payment processing infrastructure into a model prompt, it violates network isolation and secret protection requirements.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;HIPAA (Security Rule 45 CFR Part 164):&lt;/strong&gt; Transmission of environment variables containing tokens that decrypt or access Electronic Protected Health Information (ePHI) without an executed Business Associate Agreement (BAA) with the specific LLM provider can constitute an unauthorized disclosure under HIPAA breach notification rules.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;NERC CIP (CIP-004, CIP-007, CIP-011):&lt;/strong&gt; In energy and utility environments, Information Protection programs require rigorous isolation of Bespoke Cyber System Information (BCSI). Exposing system access keys, SCADA connection strings, or OT network credentials to public cloud AI tools violates mandatory access control and incident response standards.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Summary Checklist for Enterprise Auditors
&lt;/h3&gt;

&lt;p&gt;When an auditor evaluates an engineering team utilizing autonomous AI coding agents, they look for four specific breakdown indicators:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Compliance Area&lt;/th&gt;
&lt;th&gt;What Auditors Check&lt;/th&gt;
&lt;th&gt;Audit Risk Finding&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Plaintext Storage&lt;/td&gt;
&lt;td&gt;Presence of &lt;code&gt;.env&lt;/code&gt; and credential files in workspace directories accessible by unmonitored agent processes.&lt;/td&gt;
&lt;td&gt;Breakdown of secret vault controls and failure of credential encryption at rest.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Uncontrolled Exfiltration&lt;/td&gt;
&lt;td&gt;Outbound network payloads from agent tools containing raw credentials, tokens, or connection strings.&lt;/td&gt;
&lt;td&gt;Unauthorized data transfer and failure of network perimeter controls.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Logging &amp;amp; Retention&lt;/td&gt;
&lt;td&gt;API keys or passwords appearing in LLM prompt histories, IDE telemetry, or context cache logs.&lt;/td&gt;
&lt;td&gt;Violation of data retention policies and exposure of sensitive material to third parties.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Access Governance&lt;/td&gt;
&lt;td&gt;Autonomous agent tools executing with developer-level privileges without distinct identity or least-privilege scoping.&lt;/td&gt;
&lt;td&gt;Failure of Role-Based Access Control (RBAC) and destruction of non-repudiation.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  The Engineering Remedy: Defending Before the Boundary
&lt;/h3&gt;

&lt;p&gt;Addressing these compliance exposures cannot mean banning AI coding tools. Developers will continue to use them, and the productivity advantages are significant.&lt;/p&gt;

&lt;p&gt;Instead, compliance must be enforced at the interface boundary:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Pre-Execution Redaction:&lt;/strong&gt; Sensitive files (&lt;code&gt;.env&lt;/code&gt;, &lt;code&gt;.envrc&lt;/code&gt;, &lt;code&gt;*.pem&lt;/code&gt;) must have credentials masked locally (&lt;code&gt;[REDACTED:API_KEY]&lt;/code&gt;) before they can be ingested into model context or transmitted across the wire.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deterministic Detection:&lt;/strong&gt; Workflows must be audited for both direct tool reads and agent-written scripts (such as Python &lt;code&gt;load_dotenv()&lt;/code&gt; workarounds) using deterministic anomaly detectors like ReclaimLLM's AD-004.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Session-Level Auditability:&lt;/strong&gt; Every tool invocation, shell command, and model interaction must be attributed to an immutable session record tied to the developer, project, and organization.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Without local DLP and session-level observability, AI coding agents remain a compliance blind spot waiting for an audit finding.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://reclaimllm.com/blogs/ai-coding-compliance-and-regulatory-risks" rel="noopener noreferrer"&gt;https://reclaimllm.com/blogs/ai-coding-compliance-and-regulatory-risks&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>security</category>
      <category>devops</category>
      <category>cybersecurity</category>
    </item>
    <item>
      <title>The agentic blind spot: detecting AI secret exfiltration</title>
      <dc:creator>Momin Aziz</dc:creator>
      <pubDate>Sat, 31 Oct 2026 14:18:58 +0000</pubDate>
      <link>https://dev.to/momin_aziz_1/the-agentic-blind-spot-detecting-ai-secret-exfiltration-4b0g</link>
      <guid>https://dev.to/momin_aziz_1/the-agentic-blind-spot-detecting-ai-secret-exfiltration-4b0g</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published on ReclaimLLM: &lt;a href="https://reclaimllm.com/blogs/detecting-ai-agent-secret-exfiltration-ad004" rel="noopener noreferrer"&gt;https://reclaimllm.com/blogs/detecting-ai-agent-secret-exfiltration-ad004&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Why monitoring file-read tools misses agent execution loops: how coding agents use shell pipelines and shadow scripts like load_dotenv() — and how AD-004 detects them.&lt;/p&gt;

&lt;h1&gt;
  
  
  The agentic blind spot: detecting AI secret exfiltration
&lt;/h1&gt;

&lt;p&gt;Most enterprise security tooling evaluates developer environments using static assumptions: inspect the repo with SAST, scan commits with git hooks, and monitor endpoint file system access.&lt;/p&gt;

&lt;p&gt;Autonomous AI coding agents render those assumptions obsolete.&lt;/p&gt;

&lt;p&gt;An agent is not a static script. It is an iterative reasoning engine paired with tool execution. When an agent is tasked with fixing an API endpoint or setting up a database test, it attempts to resolve missing configuration variables dynamically.&lt;/p&gt;

&lt;p&gt;If an enterprise restricts direct file-read tools or monitors native file system events, the model does not simply give up. It adapts. It writes a temporary Python script that loads &lt;code&gt;.env.production&lt;/code&gt; into memory. It runs a shell command that pipes credentials through &lt;code&gt;sed&lt;/code&gt; or &lt;code&gt;grep&lt;/code&gt;. Or it creates a temporary Bash script that sources environment variables and prints them.&lt;/p&gt;

&lt;p&gt;To traditional security tooling, this looks like normal code generation: a file named &lt;code&gt;runner.py&lt;/code&gt; was created and run. Underneath, production credentials and cloud secrets were loaded into the model's runtime context.&lt;/p&gt;

&lt;p&gt;To solve this, observability cannot merely watch file system reads. It must inspect the entire agentic execution loop across three distinct operational surfaces.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Three Surfaces of Sensitive File Access
&lt;/h2&gt;

&lt;p&gt;In ReclaimLLM Enterprise, we designed &lt;strong&gt;AD-004: Sensitive File Access Detection&lt;/strong&gt; to scan completed sessions deterministically. Rather than relying on fuzzy machine learning or heuristic guesses, AD-004 inspects three specific surfaces where secrets cross from the local workstation into agent context:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌────────────────────────────────────────────────────────┐
│                   AI Coding Agent                      │
└──────┬───────────────────┼──────────────────────┬──────┘
       │ Surface 1         │ Surface 2            │ Surface 3
       ▼                   ▼                      ▼
 Direct Tool Access   Shell Command Access   Code &amp;amp; Script Mentions
 • readFile(.env)     • cat .env.production  • load_dotenv(".env")
 • writeFile(.envrc)  • sed -n 'p' dev.env   • open(".env").read()
 • *.pem, id_rsa      • rg "KEY" .env        • source .env &amp;amp;&amp;amp; run
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Surface 1: Direct Tool Access
&lt;/h3&gt;

&lt;p&gt;What happens:&lt;br&gt;
The agent natively calls a built-in file inspection tool (&lt;code&gt;readFile&lt;/code&gt;, &lt;code&gt;view_file&lt;/code&gt;, &lt;code&gt;edit_file&lt;/code&gt;) targeting known credential files.&lt;/p&gt;

&lt;p&gt;Target patterns detected:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Environment files: &lt;code&gt;.env&lt;/code&gt;, &lt;code&gt;.env.*&lt;/code&gt;, &lt;code&gt;*.env&lt;/code&gt;, &lt;code&gt;.envrc&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Private keys and certificates: &lt;code&gt;*.pem&lt;/code&gt;, &lt;code&gt;*_rsa&lt;/code&gt;, &lt;code&gt;*id_rsa&lt;/code&gt;, &lt;code&gt;*.p12&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Service account secrets: &lt;code&gt;*credentials*.json&lt;/code&gt;, &lt;code&gt;*service-account*.json&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The Governance Check:&lt;br&gt;
AD-004 does not merely check if the file was accessed; it correlates each access with Pre-Execution Hook DLP status (&lt;code&gt;was_redacted&lt;/code&gt;) so investigators can separate covered reads from DLP gaps.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sensitive file reads and &lt;code&gt;code_mention&lt;/code&gt; events produce a &lt;strong&gt;Warning&lt;/strong&gt; finding — including when DLP redacted secrets to &lt;code&gt;[REDACTED:API_KEY]&lt;/code&gt; before model ingestion. Redaction is investigation context, not a separate severity gate.&lt;/li&gt;
&lt;li&gt;Writes to sensitive paths (or write-style code mentions such as &lt;code&gt;open(".env", "w")&lt;/code&gt;) escalate to &lt;strong&gt;High&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Critical&lt;/strong&gt; requires multiple sessions with env-file activity and at least one session with no DLP coverage — a gap where secrets or scripts referencing them may have reached an external provider.&lt;/li&gt;
&lt;li&gt;Capture-only clients (for example Gemini or Antigravity) may lack pre-execution DLP; treat sensitive-file activity there as a potential coverage gap regardless of &lt;code&gt;was_redacted&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Surface 2: Shell Command Extraction
&lt;/h3&gt;

&lt;p&gt;What happens:&lt;br&gt;
When native file tools are unavailable, restricted, or when the agent defaults to terminal commands, it uses shell utilities to extract file contents:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cat&lt;/span&gt; .env.production
&lt;span class="nb"&gt;head&lt;/span&gt; &lt;span class="nt"&gt;-n&lt;/span&gt; 20 .envrc
&lt;span class="nb"&gt;sed&lt;/span&gt; &lt;span class="nt"&gt;-n&lt;/span&gt; &lt;span class="s1"&gt;'/DATABASE/p'&lt;/span&gt; dev.env
rg &lt;span class="s2"&gt;"AWS_SECRET"&lt;/span&gt; .env
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This represents one of the most common real-world leak vectors in autonomous coding sessions. A developer asks, "Why is the S3 upload failing?" The agent runs &lt;code&gt;cat .env&lt;/code&gt; in the terminal to inspect the bucket configuration, dumping the live &lt;code&gt;AWS_SECRET_ACCESS_KEY&lt;/code&gt; into terminal stdout.&lt;/p&gt;

&lt;p&gt;That stdout is packaged into the agent's next message payload and sent directly to the model provider. Because this occurred inside a shell execution command, simple file-read monitors miss it entirely.&lt;/p&gt;

&lt;p&gt;AD-004 parses shell command arguments and pipelines, identifying sensitive file references across terminal executions and flagging them as &lt;code&gt;shell_read&lt;/code&gt; access events.&lt;/p&gt;

&lt;h3&gt;
  
  
  Surface 3: Code and Script Mentions (The Agent Blind Spot)
&lt;/h3&gt;

&lt;p&gt;What happens:&lt;br&gt;
The agent generates code that opens, loads, or sources a sensitive file—frequently writing a temporary helper script to disk and executing it in the background:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Temporary script written by an agent to verify connection
&lt;/span&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;dotenv&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;load_dotenv&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;

&lt;span class="nf"&gt;load_dotenv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;.env.production&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;conn_str&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;environ&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;DATABASE_URL&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="c1"&gt;# Agent runs this script to inspect connection behavior
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Agent writes and runs a quick setup helper&lt;/span&gt;
&lt;span class="nb"&gt;source&lt;/span&gt; .env &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Loaded config for &lt;/span&gt;&lt;span class="nv"&gt;$APP_ENV&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This surface is critical because traditional hook DLP operates on inputs and outputs at the boundary. When a model writes a Python script that references &lt;code&gt;.env&lt;/code&gt; as a string literal, no secret passes through the hook at generation time.&lt;/p&gt;

&lt;p&gt;However, the script itself becomes the exfiltration vector the moment the agent executes it: the Python interpreter reads the secret into memory, outputs it during debugging, or passes it back through runtime exceptions.&lt;/p&gt;

&lt;p&gt;AD-004 scans tool outputs and agent-written files for code constructs, file path literals, &lt;code&gt;load_dotenv()&lt;/code&gt; invocations, and &lt;code&gt;source .env&lt;/code&gt; expressions, recording them as distinct &lt;code&gt;code_mention&lt;/code&gt; events.&lt;/p&gt;

&lt;h2&gt;
  
  
  Deterministic Severity Without Black-Box Guesswork
&lt;/h2&gt;

&lt;p&gt;Many AI governance tools rely on secondary LLMs to classify security risks. This introduces two fatal flaws into enterprise compliance:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Non-reproducible findings:&lt;/strong&gt; An LLM might flag an access today and miss it tomorrow.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data leakage in detection:&lt;/strong&gt; Sending prompt telemetry to another LLM to check if it contains secrets multiplies subprocessor risk.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;AD-004 is completely deterministic. It executes nightly over session metadata and evaluates explicit rules:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Severity&lt;/th&gt;
&lt;th&gt;Threshold Criteria&lt;/th&gt;
&lt;th&gt;Recommended Action&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Warning&lt;/td&gt;
&lt;td&gt;One or more sessions contain a sensitive file read or &lt;code&gt;code_mention&lt;/code&gt; where DLP coverage was verified (&lt;code&gt;was_redacted: true&lt;/code&gt;).&lt;/td&gt;
&lt;td&gt;Review during routine morning digest. Verify that access was part of legitimate local development.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;td&gt;At least one session executed a write operation to a sensitive file path, or the code mention involves overwriting environment variables (&lt;code&gt;open(".env", "w")&lt;/code&gt;).&lt;/td&gt;
&lt;td&gt;Investigate whether an agent altered local security credentials or corrupted configuration state.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Critical&lt;/td&gt;
&lt;td&gt;Multiple sessions exhibit sensitive file activity and at least one session had no DLP coverage (&lt;code&gt;was_redacted: false&lt;/code&gt;).&lt;/td&gt;
&lt;td&gt;Immediate incident escalation. Secrets may have traveled unmasked to external model provider endpoints.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Privacy by Design in Security Reporting
&lt;/h2&gt;

&lt;p&gt;An alert system should never cause a secondary security incident.&lt;/p&gt;

&lt;p&gt;When AD-004 detects an unredacted secret or an agent script reading &lt;code&gt;.env&lt;/code&gt;, what does it record in the finding evidence?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Evidence includes:&lt;/strong&gt; Session count, access types (&lt;code&gt;read&lt;/code&gt;, &lt;code&gt;write&lt;/code&gt;, &lt;code&gt;shell_read&lt;/code&gt;, &lt;code&gt;code_mention&lt;/code&gt;), matched file pattern categories (&lt;code&gt;env_file&lt;/code&gt;, &lt;code&gt;private_key&lt;/code&gt;), DLP coverage status, and authenticated session IDs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Evidence NEVER includes:&lt;/strong&gt; Actual file paths, raw secrets, passwords, script source code, or prompt text.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Security administrators receive bounded, explainable evidence that allows them to click through authenticated portal deep links directly to the offending session trace—without sensitive data ever leaving the encrypted storage boundary.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Security Teams Close the Gap
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Verify Hook DLP Enforcement:&lt;/strong&gt; Ensure all developer workstations run native hooks with default-on DLP (&lt;code&gt;rclm-hooks-install&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Monitor AD-004 High &amp;amp; Critical Findings:&lt;/strong&gt; Filter the Signals dashboard to identify sessions where agents bypassed direct file tools via shell extractions or temporary Python runners.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Trace the Execution Context:&lt;/strong&gt; Open the linked session evidence to review the developer's objective, the tool sequence, and whether the script was executed within a protected boundary.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Autonomous coding agents are formidable engineering multipliers. But if your security architecture only monitors direct tool reads, you are looking at a fraction of the actual execution loop.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://reclaimllm.com/blogs/detecting-ai-agent-secret-exfiltration-ad004" rel="noopener noreferrer"&gt;https://reclaimllm.com/blogs/detecting-ai-agent-secret-exfiltration-ad004&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>security</category>
      <category>programming</category>
      <category>cybersecurity</category>
    </item>
    <item>
      <title>The enterprise AI control plane: moving from risk to audit-ready</title>
      <dc:creator>Momin Aziz</dc:creator>
      <pubDate>Sat, 31 Oct 2026 14:16:10 +0000</pubDate>
      <link>https://dev.to/momin_aziz_1/the-enterprise-ai-control-plane-moving-from-risk-to-audit-ready-3e8i</link>
      <guid>https://dev.to/momin_aziz_1/the-enterprise-ai-control-plane-moving-from-risk-to-audit-ready-3e8i</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published on ReclaimLLM: &lt;a href="https://reclaimllm.com/blogs/enterprise-ai-coding-security-control-plane" rel="noopener noreferrer"&gt;https://reclaimllm.com/blogs/enterprise-ai-coding-security-control-plane&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Why blanket AI bans fail: a four-layer defense across pre-execution hook DLP, governed gateways, customer-key encryption, and multi-cadence alerting.&lt;/p&gt;

&lt;h1&gt;
  
  
  The enterprise AI control plane: moving from risk to audit-ready
&lt;/h1&gt;

&lt;p&gt;When security and compliance teams realize that autonomous AI coding agents can read &lt;code&gt;.env&lt;/code&gt; files, execute shell extraction pipelines, and pipe credentials to external model providers, the initial enterprise reaction is often administrative restriction: ban AI coding tools or block provider domains at the firewall.&lt;/p&gt;

&lt;p&gt;This strategy fails in practice.&lt;/p&gt;

&lt;p&gt;Engineers under pressure to deliver software will route around network firewalls using personal hotspots, copy sensitive context into browser-based assistants, or disable internal security scanners. Blanket bans create shadow AI workflows that strip security teams of visibility.&lt;/p&gt;

&lt;p&gt;The viable enterprise path is not prohibition. It is building an &lt;strong&gt;active control plane&lt;/strong&gt; that establishes guardrails at the execution boundary, prevents secret exfiltration before network transit, and provides deterministic audit evidence.&lt;/p&gt;

&lt;p&gt;Here is how ReclaimLLM structures a four-layer defense architecture to enable developer AI velocity while meeting enterprise compliance standards.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Four Layers of Enterprise AI Defense
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌─────────────────────────────────────────────────────────────────┐
│                   Developer Workstation                         │
│  [ Native Agent Hooks: Pre-Execution Hook DLP ]  ← LAYER 1      │
│  • Recursively scrubs .env, *.env, .envrc                       │
│  • Replaces credentials with [REDACTED:API_KEY]                 │
└───────────────────────────────┬─────────────────────────────────┘
                                │ Scrubbed Payload
                                ▼
┌─────────────────────────────────────────────────────────────────┐
│                 Enterprise LLM API Gateway       ← LAYER 2      │
│  • Provider master keys never touch workstations                │
│  • Issues team-scoped, model-restricted gateway tokens          │
└───────────────────────────────┬─────────────────────────────────┘
                                │ Governed Ingest
                                ▼
┌─────────────────────────────────────────────────────────────────┐
│                 Encrypted Storage &amp;amp; Residency    ← LAYER 3      │
│  • AES-256 transcript blobs with Customer Recovery Keys         │
│  • US / EU cloud data residency or On-Prem VPC (Docker/Helm)    │
└───────────────────────────────┬─────────────────────────────────┘
                                │ Evaluated Metadata
                                ▼
┌─────────────────────────────────────────────────────────────────┐
│           Deterministic Anomaly Engine &amp;amp; Alerts  ← LAYER 4      │
│  • AD-004 Sensitive File Access detection                       │
│  • Multi-cadence alerting: Immediate criticals, 08:00 digest    │
│  • Zero raw secrets in email payloads; deep links to portal     │
└─────────────────────────────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Layer 1: Local Pre-Execution Hook DLP (Hiding Secrets Before Transit)
&lt;/h3&gt;

&lt;p&gt;The safest place to stop credential exfiltration is on-device, before payloads are packaged into network requests.&lt;/p&gt;

&lt;p&gt;ReclaimLLM installs lightweight native hooks into developer environments (&lt;code&gt;rclm-hooks-install&lt;/code&gt;). Whenever an agent or developer tool attempts to read or execute commands against files matching &lt;code&gt;.env&lt;/code&gt;, &lt;code&gt;.env.*&lt;/code&gt;, or &lt;code&gt;.envrc&lt;/code&gt;, the hook intercepts the operation locally:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Database connection strings, API tokens, JWTs, and private keys are matched and replaced with typed placeholders: &lt;code&gt;[REDACTED:API_KEY]&lt;/code&gt;, &lt;code&gt;[REDACTED:DB_URL]&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;The sanitized context is then supplied to the model, allowing the agent to complete syntax analysis, refactoring, and logic debugging without ever holding live credentials.&lt;/li&gt;
&lt;li&gt;Repository include/exclude filters enforce boundary rules, preventing private infrastructure directories or client-specific folders from ever being captured.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Layer 2: Governed Enterprise LLM Gateway (Credential Isolation)
&lt;/h3&gt;

&lt;p&gt;In standard setups, developers store personal or shared organization API keys (OpenAI, Anthropic, Gemini, Azure OpenAI) directly in local &lt;code&gt;.env&lt;/code&gt; files or shell environment profiles. This creates widespread credential sprawl and makes revocation difficult.&lt;/p&gt;

&lt;p&gt;The ReclaimLLM Enterprise Gateway isolates master credentials entirely:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Central Secret Storage:&lt;/strong&gt; Provider master credentials reside once in the central enterprise gateway vault. They never touch developer laptops.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Team-Scoped Gateway Keys:&lt;/strong&gt; Developers and automated CI pipelines receive scoped gateway keys restricted to specific approved models, daily token budgets, and provider endpoints.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Request Attribution:&lt;/strong&gt; Every outbound prompt is attributed to an organization member, team, project, and interface.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Layer 3: Encrypted Session Storage &amp;amp; Sovereign Residency (Zero-Trust)
&lt;/h3&gt;

&lt;p&gt;Enterprise CISOs require assurance that historical session data cannot become a secondary breach vector.&lt;/p&gt;

&lt;p&gt;ReclaimLLM implements a zero-trust storage boundary:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Customer Recovery Keys (AES-256):&lt;/strong&gt; Raw transcript bodies are encrypted at rest using AES-256 encryption. Administrators download a one-time recovery key during setup that is never stored in plaintext on ReclaimLLM servers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Searchable Metadata Boundary:&lt;/strong&gt; Session summaries, token metrics, tool invocation counts, and anomaly indicators remain indexed for governance dashboards without requiring transcript decryption.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data Residency &amp;amp; VPC Self-Hosting:&lt;/strong&gt; Regulated teams can mandate US or EU cloud data residency, or deploy ReclaimLLM's server directly inside their private Virtual Private Cloud (VPC) using Docker or Kubernetes Helm charts.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Layer 4: Multi-Cadence Alerting Without Notification Fatigue
&lt;/h3&gt;

&lt;p&gt;Security alerts fail when they trigger notification fatigue.&lt;/p&gt;

&lt;p&gt;Autonomous agents are naturally repetitive: they retry broken commands, execute failed test loops, and explore files iteratively. If a security platform sends an email every time an agent touches a file, developers and SecOps teams will filter the notifications to spam within days.&lt;/p&gt;

&lt;p&gt;Conversely, relying exclusively on an administrative dashboard means acute credential exposures could sit unreviewed for days.&lt;/p&gt;

&lt;p&gt;ReclaimLLM solves this trade-off with a multi-cadence alerting engine:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Immediate Acute Alerts (With Suppression Windows):&lt;/strong&gt; If detector AD-004 identifies an agent accessing credentials in an unmonitored environment without DLP coverage (&lt;code&gt;was_redacted: false&lt;/code&gt;), an immediate notification is dispatched to SecOps and the developer. To prevent agent retry loops from flooding inboxes, repeated triggers enter an automatic 4-hour suppression window unless severity escalates.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;08:00 Daily Digests for Routine Touches:&lt;/strong&gt; Standard file touches where Pre-Execution DLP successfully sanitized credentials (&lt;code&gt;was_redacted: true&lt;/code&gt;) are compiled into a scheduled morning digest.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zero Secrets in Email Payloads (Privacy by Design):&lt;/strong&gt; External emails pass through third-party mail transit servers. An alert email should never create a secondary data breach. ReclaimLLM email payloads contain strictly allowlisted metadata:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Detector code and severity tier (&lt;code&gt;AD-004: Critical&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Affected session IDs and developer attribution&lt;/li&gt;
&lt;li&gt;Matched file category (e.g., &lt;code&gt;env_file&lt;/code&gt;, &lt;code&gt;private_key&lt;/code&gt;) and access surface (&lt;code&gt;shell_read&lt;/code&gt;, &lt;code&gt;code_mention&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Zero prompt text, zero raw source code, and zero credentials.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every notification includes authenticated deep links directly into the filtered session trace within the secure portal.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Operational Outcome: Audit-Ready AI Engineering
&lt;/h2&gt;

&lt;p&gt;By deploying an active control plane, engineering organizations achieve three critical operational outcomes:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Continuous Regulatory Compliance:&lt;/strong&gt; Organizations can prove to SOC 2, ISO 27001, and GDPR auditors that credentials are programmatically scrubbed at the workstation boundary, master keys never touch laptops, and data residency boundaries are strictly enforced.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deterministic Incident Triage:&lt;/strong&gt; When unusual activity occurs, SecOps teams do not have to guess what an agent did. They have immutable session traces linking prompt intent, tool execution, and sanitized file changes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Uninhibited Developer Velocity:&lt;/strong&gt; Engineers retain the freedom to use modern AI assistants (Claude Code, Cursor, Gemini CLI, local agents) without being constrained by heavy-handed manual approval gates.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Enterprise AI security is not about preventing developers from using autonomous agents. It is about providing the execution guardrails that allow them to build safely.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://reclaimllm.com/blogs/enterprise-ai-coding-security-control-plane" rel="noopener noreferrer"&gt;https://reclaimllm.com/blogs/enterprise-ai-coding-security-control-plane&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>security</category>
      <category>devops</category>
      <category>cybersecurity</category>
    </item>
    <item>
      <title>Claude Code security best practices for engineering teams (2026)</title>
      <dc:creator>Momin Aziz</dc:creator>
      <pubDate>Sat, 31 Oct 2026 14:13:30 +0000</pubDate>
      <link>https://dev.to/momin_aziz_1/claude-code-security-best-practices-for-engineering-teams-2026-2pi0</link>
      <guid>https://dev.to/momin_aziz_1/claude-code-security-best-practices-for-engineering-teams-2026-2pi0</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published on ReclaimLLM: &lt;a href="https://reclaimllm.com/blogs/claude-code-security-best-practices" rel="noopener noreferrer"&gt;https://reclaimllm.com/blogs/claude-code-security-best-practices&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Managed settings, deny rules, sandbox limits, hooks, MCP and transcripts: the Claude Code controls a 10–100 person team should set, and what each misses.&lt;/p&gt;

&lt;h1&gt;
  
  
  Claude Code security best practices for engineering teams (2026)
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Executive summary
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Team rollout checklist for Claude Code, layered by control (managed settings → permissions → sandbox → hooks → MCP → transcripts → gateway → audit), each with an honest “what it misses” line.&lt;/li&gt;
&lt;li&gt;When the hook runs, recognized &lt;code&gt;.env&lt;/code&gt; / &lt;code&gt;*.env&lt;/code&gt; access is fail-closed (sanitize Read, block Bash dumps, or deny if the file cannot be inspected). Hook process crashes/timeouts and egress-backend errors can still fail open unless you set Claude’s &lt;code&gt;onFailure: "block"&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Claude Code’s local transcript path is &lt;code&gt;~/.claude/projects/&lt;/code&gt;; provider transcripts may still hold unredacted content.&lt;/li&gt;
&lt;li&gt;Coverage detection tells you when hooks are missing—it is detection, not MDM.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Securing Claude Code for a team means four layers: managed settings that developers cannot override, permission deny rules and sandboxing for what the agent can touch, hooks that inspect prompts and tool calls, and an audit trail of what was actually read and sent. None of these layers alone covers every path secrets can take. This checklist walks through each control in order, cites Anthropic’s own documentation, and states plainly what each layer misses so you can assign an owner before a customer security review.&lt;/p&gt;

&lt;p&gt;For a product-level overview of how ReclaimLLM fits Claude Code, see Claude Code security.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Claude Code security risks that matter for a team
&lt;/h2&gt;

&lt;p&gt;Claude Code is an agent: it reads files, edits code, runs shell commands, and can call MCP servers without a human approving every step. That maps cleanly to OWASP LLM risks such as sensitive information disclosure (LLM02) and excessive agency (LLM06).&lt;/p&gt;

&lt;p&gt;Concrete risks for a 10–100 person engineering team include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Secrets in prompts, file reads, and tool output. A pasted log line or an accidental &lt;code&gt;.env&lt;/code&gt; read can reach the model and land in local session history.&lt;/li&gt;
&lt;li&gt;MCP servers and plugins with their own credentials and network access, configured outside your repo review process.&lt;/li&gt;
&lt;li&gt;Local transcripts under &lt;code&gt;~/.claude/projects/&lt;/code&gt; that retain what the agent saw unless you shorten retention or skip history (verify current defaults in Anthropic’s Claude directory docs before you publish internal policy).&lt;/li&gt;
&lt;li&gt;Per-developer drift. Individual &lt;code&gt;~/.claude/settings.json&lt;/code&gt; files diverge unless managed settings or MDM enforce a baseline.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Canadian teams may also align rollout with CCCS guidance on generative AI (ITSAP.00.041); the controls below are tool-specific, not a substitute for your own risk assessment.&lt;/p&gt;

&lt;h2&gt;
  
  
  Layer 1: Managed settings (the only layer developers cannot override)
&lt;/h2&gt;

&lt;p&gt;Anthropic supports org-wide policy through &lt;code&gt;managed-settings.json&lt;/code&gt;, MDM-delivered policy, or server-managed settings from the claude.ai admin console. Managed keys take highest precedence over user, project, local, and &lt;code&gt;--settings&lt;/code&gt; files. See Settings and Managed settings.&lt;/p&gt;

&lt;h3&gt;
  
  
  Keys worth setting
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Key&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;allowManagedPermissionRulesOnly&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Managed scope only: ignores allow/ask/deny rules from non-managed settings files&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;permissions.disableBypassPermissionsMode&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Blocks bypass-permissions mode (nested under &lt;code&gt;permissions&lt;/code&gt;, not top-level)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;availableModels&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Locks which models developers can select (merge behavior varies by managed source; see settings reference)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Confirm key names against the current settings reference before you paste them into MDM templates.&lt;/p&gt;

&lt;h3&gt;
  
  
  What it misses
&lt;/h3&gt;

&lt;p&gt;Managed settings govern Claude Code only. Cursor, Codex, Copilot, or a browser tab on the same laptop are out of scope. You still need a delivery mechanism (MDM or the admin console) and a process to verify machines actually received the file.&lt;/p&gt;

&lt;h2&gt;
  
  
  Layer 2: Permission rules (deny before allow)
&lt;/h2&gt;

&lt;p&gt;Permissions let you deny specific tools and paths. Deny and ask rules apply immediately; allow rules from a committed project file may wait until the folder is trusted.&lt;/p&gt;

&lt;p&gt;Anthropic’s own example includes patterns such as &lt;code&gt;Read(./.env)&lt;/code&gt; and &lt;code&gt;Read(./.env.*)&lt;/code&gt;. That blocks Claude’s &lt;code&gt;Read&lt;/code&gt; tool—not every way a secret can leave disk.&lt;/p&gt;

&lt;h3&gt;
  
  
  What it misses
&lt;/h3&gt;

&lt;p&gt;Shell commands are a different tool. &lt;code&gt;cat .env&lt;/code&gt;, &lt;code&gt;grep&lt;/code&gt;, or PowerShell equivalents can still print values unless you add sandbox limits, hooks, or operational habits. For a reproducible walkthrough of ignore files versus deny rules versus shell paths, see &lt;a href="https://reclaimllm.com/blogs/claudeignore-claude-code-env" rel="noopener noreferrer"&gt;.claudeignore and .env&lt;/a&gt;—this post keeps that story to one paragraph so you can link there for depth.&lt;/p&gt;

&lt;h2&gt;
  
  
  Layer 3: Sandboxing
&lt;/h2&gt;

&lt;p&gt;Per Anthropic’s sandboxing docs (verified October 2026): the sandbox wraps shell commands. Tools and processes that run outside it include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Built-in file and web tools (&lt;code&gt;Read&lt;/code&gt;, &lt;code&gt;Edit&lt;/code&gt;, &lt;code&gt;Write&lt;/code&gt;, &lt;code&gt;WebFetch&lt;/code&gt;, &lt;code&gt;WebSearch&lt;/code&gt;), which follow permission rules instead—a &lt;code&gt;denyRead&lt;/code&gt; entry does not stop the Read tool, and &lt;code&gt;allowedDomains&lt;/code&gt; does not limit WebFetch the same way.&lt;/li&gt;
&lt;li&gt;Other processes Claude Code starts: command hooks, local MCP servers, plugin monitors, LSP servers, and helper commands such as the status line command and &lt;code&gt;apiKeyHelper&lt;/code&gt;, which run with full access.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;On native Windows, Claude Code runs commands unsandboxed; Anthropic recommends WSL2 for sandboxed shell execution.&lt;/p&gt;

&lt;h3&gt;
  
  
  What it misses
&lt;/h3&gt;

&lt;p&gt;File tools, MCP, hooks, plugin monitors, LSP servers, and status-line/&lt;code&gt;apiKeyHelper&lt;/code&gt; helpers all sit outside the shell sandbox. You need sandbox plus deny rules plus hooks, not “turn on sandbox and stop worrying.”&lt;/p&gt;

&lt;h2&gt;
  
  
  Layer 4: Hooks for inspection and redaction
&lt;/h2&gt;

&lt;p&gt;Claude Code exposes dozens of hook events (hooks reference); three that matter most for data loss prevention are &lt;code&gt;PreToolUse&lt;/code&gt;, &lt;code&gt;UserPromptSubmit&lt;/code&gt;, and &lt;code&gt;PostToolUse&lt;/code&gt;. Hooks run at the boundary between the agent and your filesystem or network.&lt;/p&gt;

&lt;h3&gt;
  
  
  How ReclaimLLM uses Claude Code hooks
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Env DLP (default on). On PreToolUse, recognized &lt;code&gt;.env&lt;/code&gt; and &lt;code&gt;*.env&lt;/code&gt; Read calls are redirected to a sanitized temporary copy; Bash-style commands that dump env files are replaced with a block message. If a recognized env source cannot be inspected (unreadable, oversized), the handler raises &lt;code&gt;DLPRedactionError&lt;/code&gt; and returns &lt;code&gt;permissionDecision: deny&lt;/code&gt;—fail-closed for that class of access when the hook runs.&lt;/li&gt;
&lt;li&gt;Egress guard. Before shell execution, the guard blocks common exfiltration paths (for example &lt;code&gt;curl&lt;/code&gt;, &lt;code&gt;wget&lt;/code&gt;, &lt;code&gt;scp&lt;/code&gt;, &lt;code&gt;rsync&lt;/code&gt;, &lt;code&gt;nc&lt;/code&gt;, and several other binaries and inline fetch patterns) toward non-allowlisted destinations, plus a GeoIP country firewall. Cloud metadata endpoints are rejected server-side even if an org tries to allowlist them.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Local ambient redaction elsewhere in ReclaimLLM is string replacement plus folder exclusion, not semantic classification; direct env-file reads redact every assignment in the sanitized copy.&lt;/p&gt;

&lt;h3&gt;
  
  
  Honest limits (two different failure modes)
&lt;/h3&gt;

&lt;p&gt;When the hook runs, recognized env-file DLP is fail-closed as described above. That is not the same as “hooks always block every leak.”&lt;/p&gt;

&lt;p&gt;When the hook process fails, behavior differs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Hook crash, removal, or timeout: Claude Code’s default is fail-open unless you set &lt;code&gt;onFailure: "block"&lt;/code&gt; (available in Claude Code v2.1.295+). ReclaimLLM’s installer does not set &lt;code&gt;onFailure&lt;/code&gt; on injected hooks; teams can add it themselves if they want crash/timeout fail-closed.&lt;/li&gt;
&lt;li&gt;Egress guard backend errors: the guard logs and may fail open (&lt;code&gt;allowed=1&lt;/code&gt;) on non-2xx responses or timeouts.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is why &lt;a href="https://reclaimllm.com/blogs/ai-dlp-coverage-without-mdm" rel="noopener noreferrer"&gt;coverage detection without MDM&lt;/a&gt; exists: ReclaimLLM coverage is detection, not MDM. Pair hooks with alerts when sensitive files are touched (AD-004) and with pre-execution egress controls (&lt;a href="https://reclaimllm.com/blogs/stopping-ai-agent-network-exfiltration-egress-firewall" rel="noopener noreferrer"&gt;egress guard&lt;/a&gt;).&lt;/p&gt;

&lt;h2&gt;
  
  
  Layer 5: MCP servers and plugins
&lt;/h2&gt;

&lt;p&gt;Claude Code stores MCP server configuration in &lt;code&gt;~/.claude.json&lt;/code&gt;. Review entries for hardcoded tokens, keep an approved-server list, and prefer environment variables or helper-based credentials over literals in JSON.&lt;/p&gt;

&lt;p&gt;For a cross-tool MCP deep dive, see &lt;a href="https://reclaimllm.com/blogs/mcp-security-coding-agents" rel="noopener noreferrer"&gt;MCP security for coding agents&lt;/a&gt; when published; until then, use the MCP installation hooks announcement as product context.&lt;/p&gt;

&lt;h3&gt;
  
  
  What it misses
&lt;/h3&gt;

&lt;p&gt;MCP servers run outside the shell sandbox and may not respect the same permission deny rules as built-in Read. Treat each server as its own mini-service with credentials and egress.&lt;/p&gt;

&lt;h2&gt;
  
  
  Layer 6: Transcripts and retention
&lt;/h2&gt;

&lt;p&gt;Claude Code keeps local session history under &lt;code&gt;~/.claude/projects/&lt;/code&gt; (also used by ReclaimLLM’s historical sync for backfill). ReclaimLLM-owned local artifacts use owner-only permissions; provider-owned transcript files may still hold unredacted content after a read. See &lt;a href="https://reclaimllm.com/blogs/ai-coding-transcripts-secret-store" rel="noopener noreferrer"&gt;AI coding transcripts as a secret store&lt;/a&gt; for retention and purge options.&lt;/p&gt;

&lt;h3&gt;
  
  
  What it misses
&lt;/h3&gt;

&lt;p&gt;Transcript controls reduce blast radius after a mistake; they do not undo a secret already sent to inference. Combine retention policy with hook redaction and rotation playbooks.&lt;/p&gt;

&lt;h2&gt;
  
  
  Layer 7: A central gateway for keys and model policy
&lt;/h2&gt;

&lt;p&gt;ReclaimLLM’s enterprise LLM gateway keeps team-scoped keys and provider credentials server-side. The gateway does not see local file reads—it governs API traffic you route through it, not everything Claude Code touches on disk.&lt;/p&gt;

&lt;h3&gt;
  
  
  What it misses
&lt;/h3&gt;

&lt;p&gt;Developers can still point Claude Code directly at a provider unless you combine gateway policy with routing detection (coverage signals AD-013). Use gateway keys as one layer, not the whole story.&lt;/p&gt;

&lt;h2&gt;
  
  
  Layer 8: Detection and an audit trail
&lt;/h2&gt;

&lt;p&gt;Even perfect prevention fails sometimes. Plan for evidence:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sensitive file access alerts (AD-004): P0 email with throttling; zero-exfiltration email bodies (no secret values in mail).&lt;/li&gt;
&lt;li&gt;External network egress detector (AD-015): flags anomalous outbound patterns after the fact.&lt;/li&gt;
&lt;li&gt;Admin audit log: 365-day retention and CSV export per ReclaimLLM audit log docs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Privacy controls and US or EU data residency apply to ReclaimLLM-hosted data; ReclaimLLM’s SOC 2 Type II is targeted for early 2027—not certified today.&lt;/p&gt;

&lt;h2&gt;
  
  
  A 30-minute rollout checklist
&lt;/h2&gt;

&lt;p&gt;Copy this table into your runbook and assign owners before you widen Claude Code to client code.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;#&lt;/th&gt;
&lt;th&gt;Control&lt;/th&gt;
&lt;th&gt;Where&lt;/th&gt;
&lt;th&gt;Owner&lt;/th&gt;
&lt;th&gt;Done?&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Managed settings deployed&lt;/td&gt;
&lt;td&gt;MDM / claude.ai console&lt;/td&gt;
&lt;td&gt;IT&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;.env / key deny rules&lt;/td&gt;
&lt;td&gt;managed settings&lt;/td&gt;
&lt;td&gt;Security&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Sandbox on (macOS / Linux / WSL)&lt;/td&gt;
&lt;td&gt;managed settings&lt;/td&gt;
&lt;td&gt;Security&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Hooks installed + coverage alerting&lt;/td&gt;
&lt;td&gt;Developer machines&lt;/td&gt;
&lt;td&gt;Platform&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;MCP allowlist reviewed&lt;/td&gt;
&lt;td&gt;~/.claude.json / plugins&lt;/td&gt;
&lt;td&gt;Platform&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Transcript retention policy set&lt;/td&gt;
&lt;td&gt;Claude settings + docs&lt;/td&gt;
&lt;td&gt;Security&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Gateway keys per team&lt;/td&gt;
&lt;td&gt;Gateway admin&lt;/td&gt;
&lt;td&gt;Platform&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;Alerts routed to an owner&lt;/td&gt;
&lt;td&gt;Email / SIEM&lt;/td&gt;
&lt;td&gt;Security&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;Quarterly access review&lt;/td&gt;
&lt;td&gt;Dashboard / audit export&lt;/td&gt;
&lt;td&gt;CTO&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Install hooks with native hooks documentation and verify the Coverage tab after the first wave of installs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Is Claude Code safe for enterprise use?
&lt;/h2&gt;

&lt;p&gt;Claude Code can be run safely for many enterprises when you treat it like any other privileged developer tool: managed baseline, deny rules for secret paths, sandbox where supported, hooks at the tool boundary, MCP hygiene, transcript policy, and detection you can show auditors. Anthropic documents the knobs; your security team owns how strictly they are set and verified.&lt;/p&gt;

&lt;p&gt;No vendor—including Anthropic or ReclaimLLM—can guarantee zero disclosure if developers paste live secrets into prompts. The goal is defense in depth with measurable coverage, not a single checkbox.&lt;/p&gt;

&lt;p&gt;Next step: See which Claude Code sessions touched secrets—start free. For a live walkthrough, book a 20-minute rollout review.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Is Claude Code safe for enterprise use?
&lt;/h3&gt;

&lt;p&gt;It can be, with managed settings, permission denies, sandboxing (on supported platforms), hooks, MCP review, transcript policy, and audit evidence. Safety depends on configuration and monitoring, not the product name alone.&lt;/p&gt;

&lt;h3&gt;
  
  
  What are the main Claude Code security risks?
&lt;/h3&gt;

&lt;p&gt;Uncontrolled file and shell access, secrets in prompts and transcripts, MCP credentials, and inconsistent per-developer settings. Agent behavior aligns with OWASP LLM02 and LLM06 if left unmanaged.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can developers override Claude Code managed settings?
&lt;/h3&gt;

&lt;p&gt;No for keys delivered through managed settings, MDM, or the admin console—those take highest precedence. User and project files cannot weaken managed deny rules when &lt;code&gt;allowManagedPermissionRulesOnly&lt;/code&gt; is enabled.&lt;/p&gt;

&lt;h3&gt;
  
  
  Does the Claude Code sandbox stop the agent reading &lt;code&gt;.env&lt;/code&gt;?
&lt;/h3&gt;

&lt;p&gt;The sandbox wraps shell commands, not built-in Read/Edit/Write. Use permission deny rules and hook DLP for file tools; do not rely on sandbox alone.&lt;/p&gt;

&lt;h3&gt;
  
  
  Do Claude Code hooks block every leak?
&lt;/h3&gt;

&lt;p&gt;No. Recognized &lt;code&gt;.env&lt;/code&gt; reads are sanitized or denied when the hook runs. Hook process crash, timeout, or egress-backend errors can still fail open unless you configure Claude’s &lt;code&gt;onFailure: "block"&lt;/code&gt; and monitor coverage.&lt;/p&gt;

&lt;h3&gt;
  
  
  Where does Claude Code store conversation history?
&lt;/h3&gt;

&lt;p&gt;Local project history under &lt;code&gt;~/.claude/projects/&lt;/code&gt;. Treat those JSONL files as sensitive; align retention with your data classification policy and verify current Anthropic defaults in official docs before audit season.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://reclaimllm.com/blogs/claude-code-security-best-practices" rel="noopener noreferrer"&gt;https://reclaimllm.com/blogs/claude-code-security-best-practices&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>security</category>
      <category>programming</category>
      <category>claude</category>
    </item>
  </channel>
</rss>
