<?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: Penloom Studio</title>
    <description>The latest articles on DEV Community by Penloom Studio (@penloom_studio_829b7817d3).</description>
    <link>https://dev.to/penloom_studio_829b7817d3</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%2F4005603%2F59d74cdd-defd-42ac-889b-3ed5c07b4f13.png</url>
      <title>DEV Community: Penloom Studio</title>
      <link>https://dev.to/penloom_studio_829b7817d3</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/penloom_studio_829b7817d3"/>
    <language>en</language>
    <item>
      <title>The AI said "curl it and run it." Verify the SHA-256 first, and know what that does and doesn't prove</title>
      <dc:creator>Penloom Studio</dc:creator>
      <pubDate>Thu, 22 Oct 2026 15:43:01 +0000</pubDate>
      <link>https://dev.to/penloom_studio_829b7817d3/the-ai-said-curl-it-and-run-it-verify-the-sha-256-first-and-know-what-that-does-and-doesnt-4g34</link>
      <guid>https://dev.to/penloom_studio_829b7817d3/the-ai-said-curl-it-and-run-it-verify-the-sha-256-first-and-know-what-that-does-and-doesnt-4g34</guid>
      <description>&lt;p&gt;&lt;strong&gt;Result first:&lt;/strong&gt; I recorded the SHA-256 checksum of an installer script, then appended one line to the file. &lt;code&gt;sha256sum -c&lt;/code&gt; printed &lt;code&gt;install.sh: FAILED&lt;/code&gt; and &lt;code&gt;WARNING: 1 computed checksum did NOT match&lt;/code&gt;, and &lt;strong&gt;exited 1&lt;/strong&gt;. The untouched file printed &lt;code&gt;OK&lt;/code&gt; and exited 0. Nothing was executed in either case.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-fsSLo&lt;/span&gt; install.sh https://example.com/install.sh                       &lt;span class="c"&gt;# save to a file first; never pipe into a shell&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"&amp;lt;sha256-from-the-project's-release-page&amp;gt;  install.sh"&lt;/span&gt; | &lt;span class="nb"&gt;sha256sum&lt;/span&gt; &lt;span class="nt"&gt;-c&lt;/span&gt; -  &lt;span class="c"&gt;# exit 0 = match&lt;/span&gt;
less install.sh                                                             &lt;span class="c"&gt;# read it before you run it&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;From the official docs:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The sha2 utilities "compute checksums of various lengths… collectively known as the SHA-2 hashes" (GNU coreutils manual).&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;-c, --check&lt;/code&gt; means "read checksums from the FILEs and check them," and &lt;code&gt;--status&lt;/code&gt; means "don't output anything, status code shows success" (&lt;code&gt;sha256sum --help&lt;/code&gt;, coreutils 9.7).&lt;/li&gt;
&lt;li&gt;"An exit status of zero indicates success, and a nonzero value indicates failure." That makes it safe to chain: &lt;code&gt;sha256sum -c file.sha256 &amp;amp;&amp;amp; bash install.sh&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What a match does NOT prove:&lt;/strong&gt; the checksum only shows that your file matches the checksum you compared it against. If you copied that checksum from the same place an attacker controls, or from an AI's answer, it proves nothing. Take the checksum from the project's own release page or signed release notes. When a project offers signature verification, prefer that.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do this now:&lt;/strong&gt; add a rule to your agent's instructions: "Never suggest &lt;code&gt;curl … | sh&lt;/code&gt;. Save the file, verify the checksum from the official release page, then show me the script."&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;GNU coreutils manual, "sha2 utilities": &lt;a href="https://www.gnu.org/software/coreutils/manual/html_node/sha2-utilities.html" rel="noopener noreferrer"&gt;https://www.gnu.org/software/coreutils/manual/html_node/sha2-utilities.html&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GNU coreutils manual, "md5sum invocation" (exit status): &lt;a href="https://www.gnu.org/software/coreutils/manual/html_node/md5sum-invocation.html" rel="noopener noreferrer"&gt;https://www.gnu.org/software/coreutils/manual/html_node/md5sum-invocation.html&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;From Penloom Studio's free AI lessons: &lt;a href="https://penloomstudio.com/landing-cogloom-motion.html" rel="noopener noreferrer"&gt;penloomstudio.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>security</category>
      <category>bash</category>
      <category>linux</category>
    </item>
    <item>
      <title>Which of the agent's 16 commits broke it? Let `git bisect run` find it in 4 test runs</title>
      <dc:creator>Penloom Studio</dc:creator>
      <pubDate>Thu, 22 Oct 2026 15:42:03 +0000</pubDate>
      <link>https://dev.to/penloom_studio_829b7817d3/which-of-the-agents-16-commits-broke-it-let-git-bisect-run-find-it-in-4-test-runs-3ih2</link>
      <guid>https://dev.to/penloom_studio_829b7817d3/which-of-the-agents-16-commits-broke-it-let-git-bisect-run-find-it-in-4-test-runs-3ih2</guid>
      <description>&lt;p&gt;&lt;strong&gt;Result first:&lt;/strong&gt; an agent made 16 commits, and somewhere along the way &lt;code&gt;add 2 3&lt;/code&gt; started returning &lt;code&gt;-1&lt;/code&gt;. I gave &lt;code&gt;git bisect&lt;/code&gt; one good commit, one bad commit and a 3-line test script. It ran the test &lt;strong&gt;4 times&lt;/strong&gt; and named the first bad commit, "commit 11", which is exactly the one where the bug was planted.&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;printf&lt;/span&gt; &lt;span class="s1"&gt;'#!/usr/bin/env bash\nsource ./calc.sh\n[ "$(add 2 3)" = 5 ]\n'&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; ../test.sh &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;chmod&lt;/span&gt; +x ../test.sh
git bisect start HEAD &amp;lt;known-good-commit&amp;gt;
git bisect run ../test.sh
git bisect reset          &lt;span class="c"&gt;# go back to where you started&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;The rules for the test script (from the git docs):&lt;/strong&gt; it "should exit with code 0 if the current source code is good/old, and exit with a code between 1 and 127 (inclusive), except 125, if the current source code is bad/new." Exit code &lt;strong&gt;125&lt;/strong&gt; means "this commit can't be tested, skip it." "Any other exit code will abort the bisect process."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why this suits agent workflows:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Agents make many small commits, and bisect is a binary search, so the number of test runs grows slowly as the history grows (here 4 runs for 16 commits).&lt;/li&gt;
&lt;li&gt;Keep the test script &lt;strong&gt;outside&lt;/strong&gt; the repo or untracked, as &lt;code&gt;../test.sh&lt;/code&gt; is here, so checking out old commits doesn't change the test itself.&lt;/li&gt;
&lt;li&gt;Use exit 125 for commits that don't build, rather than marking them bad.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Do this now:&lt;/strong&gt; next time an agent session ends with a regression, write the one-line check first, then run &lt;code&gt;git bisect run&lt;/code&gt; before reading any diffs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;git documentation, git-bisect: &lt;a href="https://git-scm.com/docs/git-bisect" rel="noopener noreferrer"&gt;https://git-scm.com/docs/git-bisect&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;From Penloom Studio's free AI lessons: &lt;a href="https://penloomstudio.com/landing-cogloom-motion.html" rel="noopener noreferrer"&gt;penloomstudio.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>git</category>
      <category>debugging</category>
      <category>agents</category>
    </item>
    <item>
      <title>Run two AI coding agents at once without them overwriting each other: `git worktree`</title>
      <dc:creator>Penloom Studio</dc:creator>
      <pubDate>Thu, 22 Oct 2026 15:41:22 +0000</pubDate>
      <link>https://dev.to/penloom_studio_829b7817d3/run-two-ai-coding-agents-at-once-without-them-overwriting-each-other-git-worktree-474k</link>
      <guid>https://dev.to/penloom_studio_829b7817d3/run-two-ai-coding-agents-at-once-without-them-overwriting-each-other-git-worktree-474k</guid>
      <description>&lt;p&gt;&lt;strong&gt;Result first:&lt;/strong&gt; two "agents" edited the same file, &lt;code&gt;app.txt&lt;/code&gt;, at the same moment, each in its own folder on its own branch. The main checkout stayed untouched. When I tried to check out the same branch a second time, git refused: &lt;code&gt;fatal: 'agent-a' is already used by worktree&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git worktree add &lt;span class="nt"&gt;-b&lt;/span&gt; agent-a ../wt-a      &lt;span class="c"&gt;# folder + branch for agent A&lt;/span&gt;
git worktree add &lt;span class="nt"&gt;-b&lt;/span&gt; agent-b ../wt-b      &lt;span class="c"&gt;# folder + branch for agent B&lt;/span&gt;
git worktree list                        &lt;span class="c"&gt;# see all of them&lt;/span&gt;
git worktree remove ../wt-a              &lt;span class="c"&gt;# clean up when A's branch is merged&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;What the docs say:&lt;/strong&gt; "A git repository can support multiple working trees, allowing you to check out more than one branch at a time." git also has a safeguard: by default it won't create a worktree for a branch that "is already checked out by another worktree" (&lt;code&gt;--force&lt;/code&gt; overrides that).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why this matters for agents:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Give each agent its own worktree and branch. They never share uncommitted files.&lt;/li&gt;
&lt;li&gt;Review each branch as a normal diff or pull request, one at a time.&lt;/li&gt;
&lt;li&gt;All worktrees share one repository, so commits made in one are visible to the others without pushing. That saves disk space compared with full clones, but it also means a careless &lt;code&gt;git branch -D&lt;/code&gt; in one folder affects every worktree.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Do this now:&lt;/strong&gt; before your next multi-agent session, create one worktree per agent and point each agent at its own folder.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;git documentation, git-worktree: &lt;a href="https://git-scm.com/docs/git-worktree" rel="noopener noreferrer"&gt;https://git-scm.com/docs/git-worktree&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;From Penloom Studio's free AI lessons: &lt;a href="https://penloomstudio.com/landing-cogloom-motion.html" rel="noopener noreferrer"&gt;penloomstudio.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>git</category>
      <category>productivity</category>
      <category>agents</category>
    </item>
    <item>
      <title>Spot the "Made with AI" label on YouTube (and what it does not tell you)</title>
      <dc:creator>Penloom Studio</dc:creator>
      <pubDate>Thu, 22 Oct 2026 15:40:41 +0000</pubDate>
      <link>https://dev.to/penloom_studio_829b7817d3/spot-the-made-with-ai-label-on-youtube-and-what-it-does-not-tell-you-4cle</link>
      <guid>https://dev.to/penloom_studio_829b7817d3/spot-the-made-with-ai-label-on-youtube-and-what-it-does-not-tell-you-4cle</guid>
      <description>&lt;p&gt;&lt;strong&gt;The big idea:&lt;/strong&gt; YouTube requires creators to tell viewers when a realistic-looking video was made or meaningfully changed with AI. That shows up as a label. Knowing where to look takes 10 seconds.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where to look:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open the video and tap or click the description to expand it.&lt;/li&gt;
&lt;li&gt;Look for a section called &lt;strong&gt;"How this content was made."&lt;/strong&gt; If it says &lt;strong&gt;"Made with AI,"&lt;/strong&gt; the video contains content that was meaningfully altered or synthetically generated.&lt;/li&gt;
&lt;li&gt;On some videos, especially Shorts or photorealistic content, a label may also appear &lt;strong&gt;on or right below the video player.&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;What YouTube says counts:&lt;/strong&gt; making a real person appear to say or do something they didn't, altering footage of real events or places, or showing a realistic scene that never happened.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What the label does NOT tell you:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No label is not proof a video is real.&lt;/strong&gt; The system relies largely on creators disclosing. YouTube says it &lt;em&gt;may&lt;/em&gt; add a label automatically when its systems detect AI, and that it can penalise creators who keep failing to disclose. That means some AI videos may still have no label.&lt;/li&gt;
&lt;li&gt;Clearly unrealistic or animated content, and minor edits such as beauty filters, may not get the prominent label.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Do this now:&lt;/strong&gt; next time a video seems shocking, expand the description and look for "How this content was made" before you share it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;"Understanding 'How this content was made' disclosures on YouTube": &lt;a href="https://support.google.com/youtube/answer/15447836" rel="noopener noreferrer"&gt;https://support.google.com/youtube/answer/15447836&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;"Disclosing use of GenAI content": &lt;a href="https://support.google.com/youtube/answer/14328491" rel="noopener noreferrer"&gt;https://support.google.com/youtube/answer/14328491&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;"How Creators Use AI for Content Creation" (How YouTube Works): &lt;a href="https://www.youtube.com/intl/en_us/howyoutubeworks/our-commitments/responsible-ai/" rel="noopener noreferrer"&gt;https://www.youtube.com/intl/en_us/howyoutubeworks/our-commitments/responsible-ai/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;From Penloom Studio's free AI lessons: &lt;a href="https://penloomstudio.com/landing-cogloom-motion.html" rel="noopener noreferrer"&gt;penloomstudio.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>beginners</category>
      <category>youtube</category>
      <category>media</category>
    </item>
    <item>
      <title>Is this photo real? Check its "Content Credentials" in 30 seconds</title>
      <dc:creator>Penloom Studio</dc:creator>
      <pubDate>Thu, 22 Oct 2026 15:40:00 +0000</pubDate>
      <link>https://dev.to/penloom_studio_829b7817d3/is-this-photo-real-check-its-content-credentials-in-30-seconds-358a</link>
      <guid>https://dev.to/penloom_studio_829b7817d3/is-this-photo-real-check-its-content-credentials-in-30-seconds-358a</guid>
      <description>&lt;p&gt;&lt;strong&gt;The big idea:&lt;/strong&gt; Some photos now carry a hidden "nutrition label" called &lt;strong&gt;Content Credentials&lt;/strong&gt;. It can show which app made or edited the picture, sometimes including an AI tool. A free website lets anyone read that label.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to check a photo:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Save the picture to your phone or computer. The original file works best.&lt;/li&gt;
&lt;li&gt;Go to &lt;strong&gt;verify.contentauthenticity.org&lt;/strong&gt;. This is the free Content Credentials "Verify" tool.&lt;/li&gt;
&lt;li&gt;Drag the picture in, or tap &lt;strong&gt;Select a file from your device&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Read the result. If the photo has Content Credentials, you'll see details such as the tools used to create it and how it has changed over time.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;The most important part: "nothing found" does NOT mean "real."&lt;/strong&gt; The Verify site itself says Content Credentials "are still rolling out, so the content you choose to inspect may not have information to view." Screenshots, re-saving or sharing on social media can strip the label away. Seeing a credential tells you what the credential claims. It is not a guarantee that the picture is true.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;So use it as one clue, together with these:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Where did the picture come from? Is the account or website one you trust?&lt;/li&gt;
&lt;li&gt;Can you find the same picture or story from a trusted news source?&lt;/li&gt;
&lt;li&gt;The FBI suggests looking for "subtle imperfections," such as distorted hands or feet, odd teeth or eyes, and inaccurate shadows.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Do this now:&lt;/strong&gt; try the Verify site with a photo you took yourself, so you know what "no credential" looks like.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Content Credentials Verify tool (its own page text): &lt;a href="https://verify.contentauthenticity.org/" rel="noopener noreferrer"&gt;https://verify.contentauthenticity.org/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Content Authenticity Initiative open-source docs, "Using the inspect tool" (the "No Content Credential" message): &lt;a href="https://opensource.contentauthenticity.org/docs/getting-started/inspect.md" rel="noopener noreferrer"&gt;https://opensource.contentauthenticity.org/docs/getting-started/inspect.md&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;FBI IC3 PSA I-120324-PSA (spotting imperfections): &lt;a href="https://www.ic3.gov/PSA/2024/PSA241203" rel="noopener noreferrer"&gt;https://www.ic3.gov/PSA/2024/PSA241203&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;From Penloom Studio's free AI lessons: &lt;a href="https://penloomstudio.com/landing-cogloom-motion.html" rel="noopener noreferrer"&gt;penloomstudio.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>beginners</category>
      <category>images</category>
      <category>security</category>
    </item>
    <item>
      <title>Before you type: who can see your AI chats, and the setting that keeps them out of training</title>
      <dc:creator>Penloom Studio</dc:creator>
      <pubDate>Thu, 22 Oct 2026 15:39:15 +0000</pubDate>
      <link>https://dev.to/penloom_studio_829b7817d3/before-you-type-who-can-see-your-ai-chats-and-the-setting-that-keeps-them-out-of-training-43fg</link>
      <guid>https://dev.to/penloom_studio_829b7817d3/before-you-type-who-can-see-your-ai-chats-and-the-setting-that-keeps-them-out-of-training-43fg</guid>
      <description>&lt;p&gt;&lt;strong&gt;The big idea:&lt;/strong&gt; Treat an AI chat like a postcard, not a diary. Unless you change a setting, what you type may be used to improve the AI, and sometimes a person may read it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What the companies themselves say:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Google Gemini:&lt;/strong&gt; "Human reviewers (including trained reviewers from our service providers) review some of the data we collect… Please don't enter confidential information that you wouldn't want a reviewer to see." Google keeps chats that reviewers have looked at for up to three years, even if you delete your activity.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ChatGPT:&lt;/strong&gt; your chats can help train OpenAI's models unless you turn off a setting called &lt;strong&gt;Improve the model for everyone&lt;/strong&gt;. Turning it off stops your &lt;em&gt;new&lt;/em&gt; chats from being used for training. Your old chats stay in your history.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Never type these into any chatbot:&lt;/strong&gt; passwords, Social Security numbers, bank or card numbers, or medical records with your name on them. Also leave out anyone else's private details.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Change the setting (2 minutes):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;ChatGPT on a computer:&lt;/strong&gt; open your account menu → &lt;strong&gt;Settings&lt;/strong&gt; → &lt;strong&gt;Data controls&lt;/strong&gt; → &lt;strong&gt;Improve the model for everyone&lt;/strong&gt; → turn it off → &lt;strong&gt;Done&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ChatGPT on a phone:&lt;/strong&gt; open the sidebar → tap your profile icon → &lt;strong&gt;Data controls&lt;/strong&gt; → turn off &lt;strong&gt;Improve the model for everyone&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gemini:&lt;/strong&gt; go to &lt;strong&gt;Gemini Apps Activity&lt;/strong&gt; and turn off &lt;strong&gt;Keep Activity&lt;/strong&gt;. Google says your future chats then won't be used to train its AI models, unless you send feedback, and they are still kept for 72 hours.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Good to know:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Both apps offer a &lt;strong&gt;Temporary Chat&lt;/strong&gt;. On ChatGPT, temporary chats aren't used for training but may be kept for up to 30 days for safety. On Gemini, they aren't used to train its models and are kept for 72 hours.&lt;/li&gt;
&lt;li&gt;Pressing thumbs-up or thumbs-down sends feedback, and that conversation may then be used, even if you turned training off. Both companies say so.&lt;/li&gt;
&lt;li&gt;A work or school account may have different rules set by your employer.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Do this now:&lt;/strong&gt; open the app you use most and flip that one setting.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;OpenAI Help, "Data controls in ChatGPT": &lt;a href="https://help.openai.com/en/articles/7730893-data-controls-in-chatgpt" rel="noopener noreferrer"&gt;https://help.openai.com/en/articles/7730893-data-controls-in-chatgpt&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Google, "Gemini Apps Privacy Hub" (last updated Oct 13, 2026): &lt;a href="https://support.google.com/gemini/answer/13594961" rel="noopener noreferrer"&gt;https://support.google.com/gemini/answer/13594961&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;From Penloom Studio's free AI lessons: &lt;a href="https://penloomstudio.com/landing-cogloom-motion.html" rel="noopener noreferrer"&gt;penloomstudio.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>beginners</category>
      <category>privacy</category>
      <category>chatgpt</category>
    </item>
    <item>
      <title>The AI-written shell script that ran from the wrong folder and exited 0: `set -euo pipefail`, and where it still won't save you</title>
      <dc:creator>Penloom Studio</dc:creator>
      <pubDate>Thu, 22 Oct 2026 15:38:24 +0000</pubDate>
      <link>https://dev.to/penloom_studio_829b7817d3/the-ai-written-shell-script-that-ran-from-the-wrong-folder-and-exited-0-set-euo-pipefail-and-349</link>
      <guid>https://dev.to/penloom_studio_829b7817d3/the-ai-written-shell-script-that-ran-from-the-wrong-folder-and-exited-0-set-euo-pipefail-and-349</guid>
      <description>&lt;p&gt;&lt;strong&gt;Result first:&lt;/strong&gt; a four-line script whose &lt;code&gt;cd&lt;/code&gt; failed (because &lt;code&gt;BUILD_DIR&lt;/code&gt; was unset) kept going. It printed the wrong working directory, ran its "deploy" line, and &lt;strong&gt;exited 0.&lt;/strong&gt; Adding one line, &lt;code&gt;set -euo pipefail&lt;/code&gt;, made it stop on the first error with exit code 1: &lt;code&gt;BUILD_DIR: unbound variable&lt;/code&gt;.&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="c"&gt;#!/usr/bin/env bash&lt;/span&gt;
&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nt"&gt;-euo&lt;/span&gt; pipefail
&lt;span class="nb"&gt;cd&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$BUILD_DIR&lt;/span&gt;&lt;span class="s2"&gt;/out"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;What each flag does (bash's own &lt;code&gt;help set&lt;/code&gt;):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;-e&lt;/code&gt;: "Exit immediately if a command exits with a non-zero status."&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;-u&lt;/code&gt;: "Treat unset variables as an error when substituting."&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;-o pipefail&lt;/code&gt;: "the return value of a pipeline is the status of the last command to exit with a non-zero status, or zero if no command exited with a non-zero status." Without it, &lt;code&gt;false | true&lt;/code&gt; counts as success.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Where &lt;code&gt;-e&lt;/code&gt; still won't save you (GNU Bash manual):&lt;/strong&gt; the shell does not exit when the failing command is part of the test in an &lt;code&gt;if&lt;/code&gt;, inside a &lt;code&gt;while&lt;/code&gt;/&lt;code&gt;until&lt;/code&gt; condition, any command in a &lt;code&gt;&amp;amp;&amp;amp;&lt;/code&gt; or &lt;code&gt;||&lt;/code&gt; list except the final one, or a command inverted with &lt;code&gt;!&lt;/code&gt;. The demo shows &lt;code&gt;if false; then …; fi&lt;/code&gt; carrying on under &lt;code&gt;set -e&lt;/code&gt;. Don't treat strict mode as a substitute for checking the commands that matter.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For AI-assisted scripting:&lt;/strong&gt; ask your agent to start every bash script with &lt;code&gt;set -euo pipefail&lt;/code&gt;, and to quote variables. Then read any &lt;code&gt;cd&lt;/code&gt;, &lt;code&gt;rm&lt;/code&gt; or deploy line yourself before running it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do this now:&lt;/strong&gt; run &lt;code&gt;head -3&lt;/code&gt; on your repo's &lt;code&gt;.sh&lt;/code&gt; files and add strict mode to any that lack it. Then test each one, because scripts that relied on ignored errors will now stop.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;GNU Bash Reference Manual, "The Set Builtin" (fetched with curl; the web fetch tool was blocked with 403): &lt;a href="https://www.gnu.org/software/bash/manual/html_node/The-Set-Builtin.html" rel="noopener noreferrer"&gt;https://www.gnu.org/software/bash/manual/html_node/The-Set-Builtin.html&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;From Penloom Studio's free AI lessons: &lt;a href="https://penloomstudio.com/landing-cogloom-motion.html" rel="noopener noreferrer"&gt;penloomstudio.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>bash</category>
      <category>linux</category>
      <category>shell</category>
    </item>
    <item>
      <title>Your AI suggested `pip install` for a package that doesn't exist. Check before you install.</title>
      <dc:creator>Penloom Studio</dc:creator>
      <pubDate>Thu, 22 Oct 2026 15:37:42 +0000</pubDate>
      <link>https://dev.to/penloom_studio_829b7817d3/your-ai-suggested-pip-install-for-a-package-that-doesnt-exist-check-before-you-install-3gc3</link>
      <guid>https://dev.to/penloom_studio_829b7817d3/your-ai-suggested-pip-install-for-a-package-that-doesnt-exist-check-before-you-install-3gc3</guid>
      <description>&lt;p&gt;&lt;strong&gt;Result first:&lt;/strong&gt; a made-up but plausible package name, &lt;code&gt;fastjson-schema-validator-pro-xq7&lt;/code&gt;, returns "No matching distribution found" from pip and &lt;code&gt;E404&lt;/code&gt; from npm. A real one, &lt;code&gt;requests&lt;/code&gt;, lists its versions. That one-second check catches a hallucinated dependency before &lt;code&gt;install&lt;/code&gt; ever runs.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip index versions &amp;lt;name&amp;gt;                          &lt;span class="c"&gt;# lists versions if the package exists on PyPI&lt;/span&gt;
curl &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="nt"&gt;-o&lt;/span&gt; /dev/null &lt;span class="nt"&gt;-w&lt;/span&gt; &lt;span class="s1"&gt;'%{http_code}\n'&lt;/span&gt; https://pypi.org/pypi/&amp;lt;name&amp;gt;/json   &lt;span class="c"&gt;# 200 = exists, 404 = not on PyPI&lt;/span&gt;
npm view &amp;lt;name&amp;gt; version                            &lt;span class="c"&gt;# E404 if the package isn't on the npm registry&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Why this matters (peer-reviewed, USENIX Security 2025):&lt;/strong&gt; Spracklen et al. generated 576,000 code samples with 16 code-generating LLMs. They found the average share of hallucinated packages was "at least 5.2% for commercial models and 21.7% for open-source models," with 205,474 unique hallucinated names. The authors' repository explains the risk: an attacker can publish a malicious package under a name that models tend to hallucinate.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;So "it exists" is not the same as "it's safe."&lt;/strong&gt; A hallucinated name may already have been registered by someone. Before you install a package an AI suggested:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Check that it exists (the commands above).&lt;/li&gt;
&lt;li&gt;Check that it is the package you meant: open its project page and source repository from the registry, not from the AI's answer.&lt;/li&gt;
&lt;li&gt;Prefer packages you or your team already use, and pin versions in your lockfile.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Do this now:&lt;/strong&gt; add a rule to your agent's instructions: "Before suggesting an install, run the registry check and show its output."&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;USENIX Security 2025 paper page, Spracklen et al., "We Have a Package for You!": &lt;a href="https://www.usenix.org/conference/usenixsecurity25/presentation/spracklen" rel="noopener noreferrer"&gt;https://www.usenix.org/conference/usenixsecurity25/presentation/spracklen&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;arXiv version: &lt;a href="https://arxiv.org/abs/2406.10279" rel="noopener noreferrer"&gt;https://arxiv.org/abs/2406.10279&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Authors' code and data repository (risk explanation): &lt;a href="https://github.com/Spracks/PackageHallucination/" rel="noopener noreferrer"&gt;https://github.com/Spracks/PackageHallucination/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;From Penloom Studio's free AI lessons: &lt;a href="https://penloomstudio.com/landing-cogloom-motion.html" rel="noopener noreferrer"&gt;penloomstudio.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>security</category>
      <category>python</category>
      <category>npm</category>
    </item>
    <item>
      <title>Three things ChatGPT's own rules tell you (that most people never read)</title>
      <dc:creator>Penloom Studio</dc:creator>
      <pubDate>Thu, 22 Oct 2026 15:37:01 +0000</pubDate>
      <link>https://dev.to/penloom_studio_829b7817d3/three-things-chatgpts-own-rules-tell-you-that-most-people-never-read-jpm</link>
      <guid>https://dev.to/penloom_studio_829b7817d3/three-things-chatgpts-own-rules-tell-you-that-most-people-never-read-jpm</guid>
      <description>&lt;p&gt;Almost nobody reads the Terms of Use. Here are three plain-English takeaways from OpenAI's terms for ChatGPT. (These are the U.S. and most-countries terms. People in the EEA, Switzerland and the UK have their own version.)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Age rules: 13 and up, and a parent's OK under 18.&lt;/strong&gt; The terms say you "must be at least 13 years old or the minimum age required in your country," and "if you are under 18 you must have your parent or legal guardian's permission." If a grandchild wants to use it, that's a conversation for the family.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. It can be wrong, and the company says so.&lt;/strong&gt; The terms warn that output "may not always be accurate" and say you "should not rely on Output from our Services as a sole source of truth or factual information, or as a substitute for professional advice." Use it for ideas and drafts, then check anything important with a trusted source or a professional.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Your chats may help train the AI unless you opt out.&lt;/strong&gt; The terms say OpenAI "may use Content to provide, maintain, develop, and improve our Services," and that you can opt out of training. (Our lesson "Before you type" shows where that setting is.)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bonus:&lt;/strong&gt; the terms also say you may not present AI output as human-written when it isn't ("Represent that Output was human-generated when it was not").&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do this now:&lt;/strong&gt; before you ask a chatbot about your health, money or a legal question, write down who you'll check the answer with.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;OpenAI Terms of Use (Effective Jan 1, 2026): &lt;a href="https://openai.com/policies/terms-of-use/" rel="noopener noreferrer"&gt;https://openai.com/policies/terms-of-use/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;From Penloom Studio's free AI lessons: &lt;a href="https://penloomstudio.com/landing-cogloom-motion.html" rel="noopener noreferrer"&gt;penloomstudio.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>beginners</category>
      <category>chatgpt</category>
      <category>privacy</category>
    </item>
    <item>
      <title>Perfect spelling no longer means a message is safe: AI-written scam texts and emails</title>
      <dc:creator>Penloom Studio</dc:creator>
      <pubDate>Thu, 22 Oct 2026 15:36:20 +0000</pubDate>
      <link>https://dev.to/penloom_studio_829b7817d3/perfect-spelling-no-longer-means-a-message-is-safe-ai-written-scam-texts-and-emails-20ph</link>
      <guid>https://dev.to/penloom_studio_829b7817d3/perfect-spelling-no-longer-means-a-message-is-safe-ai-written-scam-texts-and-emails-20ph</guid>
      <description>&lt;p&gt;&lt;strong&gt;The old tip is out of date.&lt;/strong&gt; For years people were told to look for bad spelling and clumsy grammar to spot a scam. The FBI now warns that criminals use AI to write their messages, including translating them "to limit grammatical or spelling errors." AI tools "can correct for human errors that might otherwise serve as warning signs of fraud."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;So judge the request, not the writing.&lt;/strong&gt; The FTC's test is two questions:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Do I actually have an account with this company, or know this person?&lt;/strong&gt; If not, it's likely a scam.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Even if I do:&lt;/strong&gt; real companies "won't unexpectedly email or text with a link to update your payment or account information."&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Your safe moves (from the FTC):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Don't click links or open attachments in messages you weren't expecting.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Contact the company yourself&lt;/strong&gt;, using a phone number or website you already know is real, not the one in the message.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Turn on two-factor authentication&lt;/strong&gt;, so a stolen password alone isn't enough.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Report it:&lt;/strong&gt; forward scam texts to &lt;strong&gt;7726 (SPAM)&lt;/strong&gt; and report at &lt;strong&gt;ReportFraud.ftc.gov&lt;/strong&gt;. Then delete the message.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Do this now:&lt;/strong&gt; pick one account that matters, such as email or bank, and turn on two-factor authentication today.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;FBI IC3 PSA I-120324-PSA, Dec 3, 2024: &lt;a href="https://www.ic3.gov/PSA/2024/PSA241203" rel="noopener noreferrer"&gt;https://www.ic3.gov/PSA/2024/PSA241203&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;FTC Consumer Alert, "Phishing scams can be hard to spot," Dec 11, 2024: &lt;a href="https://consumer.ftc.gov/consumer-alerts/2024/12/phishing-scams-can-be-hard-spot" rel="noopener noreferrer"&gt;https://consumer.ftc.gov/consumer-alerts/2024/12/phishing-scams-can-be-hard-spot&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;FTC Consumer Alert, "Don't take the bait on phishing scams," Sep 2024: &lt;a href="https://consumer.ftc.gov/consumer-alerts/2024/09/dont-take-bait-phishing-scams" rel="noopener noreferrer"&gt;https://consumer.ftc.gov/consumer-alerts/2024/09/dont-take-bait-phishing-scams&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;FTC Consumer Alert, "Protect yourself from phishing scams," Jun 4, 2025: &lt;a href="https://consumer.ftc.gov/consumer-alerts/2025/04/protect-yourself-phishing-scams" rel="noopener noreferrer"&gt;https://consumer.ftc.gov/consumer-alerts/2025/04/protect-yourself-phishing-scams&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;From Penloom Studio's free AI lessons: &lt;a href="https://penloomstudio.com/landing-cogloom-motion.html" rel="noopener noreferrer"&gt;penloomstudio.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>beginners</category>
      <category>security</category>
      <category>phishing</category>
    </item>
    <item>
      <title>AI wrote your .env into a commit? What GitHub push protection catches, and why `.gitignore` alone won't save you</title>
      <dc:creator>Penloom Studio</dc:creator>
      <pubDate>Thu, 22 Oct 2026 15:35:39 +0000</pubDate>
      <link>https://dev.to/penloom_studio_829b7817d3/ai-wrote-your-env-into-a-commit-what-github-push-protection-catches-and-why-gitignore-alone-9i9</link>
      <guid>https://dev.to/penloom_studio_829b7817d3/ai-wrote-your-env-into-a-commit-what-github-push-protection-catches-and-why-gitignore-alone-9i9</guid>
      <description>&lt;p&gt;&lt;strong&gt;Result first:&lt;/strong&gt; I committed a fake API key in a &lt;code&gt;.env&lt;/code&gt; file, then "fixed" it the way most people do: add &lt;code&gt;.env&lt;/code&gt; to &lt;code&gt;.gitignore&lt;/code&gt; and run &lt;code&gt;git rm --cached .env&lt;/code&gt;. The file stopped being tracked, &lt;strong&gt;but the key was still in history.&lt;/strong&gt; &lt;code&gt;git log --all -- .env&lt;/code&gt; still lists the commit that added it. Anyone who can clone the repository can read that commit.&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;echo&lt;/span&gt; &lt;span class="s1"&gt;'.env'&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; .gitignore
git &lt;span class="nb"&gt;rm&lt;/span&gt; &lt;span class="nt"&gt;--cached&lt;/span&gt; .env
git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"stop tracking .env"&lt;/span&gt;
git log &lt;span class="nt"&gt;--oneline&lt;/span&gt; &lt;span class="nt"&gt;--all&lt;/span&gt; &lt;span class="nt"&gt;--&lt;/span&gt; .env   &lt;span class="c"&gt;# the original commit is still listed&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Where GitHub helps (from GitHub Docs):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Push protection for users&lt;/strong&gt; is "enabled by default." It "stops you from pushing secrets to public repositories on GitHub." It is available only on GitHub.com.&lt;/li&gt;
&lt;li&gt;It scans pushes from the command line, commits made in the GitHub UI, file uploads, REST API requests, and (on public repos only) interactions with the GitHub MCP server.&lt;/li&gt;
&lt;li&gt;When it blocks you, you get a message explaining why. You remove the secret and push again.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Push protection for repositories&lt;/strong&gt; is a separate feature. It is off by default and requires GitHub Secret Protection to be enabled.&lt;/li&gt;
&lt;li&gt;To check your own setting: profile picture → &lt;strong&gt;Settings&lt;/strong&gt; → &lt;strong&gt;Code security&lt;/strong&gt; → under "User", &lt;strong&gt;Push protection for yourself&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What this means for AI-assisted coding:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Don't let an agent create files that hold keys inside the working tree it commits from. Put &lt;code&gt;.env&lt;/code&gt; in &lt;code&gt;.gitignore&lt;/code&gt; &lt;em&gt;before&lt;/em&gt; the first commit.&lt;/li&gt;
&lt;li&gt;Push protection only knows the secret types it supports. It is a safety net, not a guarantee, and a private repository doesn't get the user-level protection.&lt;/li&gt;
&lt;li&gt;If a real key ever reached a pushed commit, treat the key as exposed. Replace it with your provider; don't just delete the file.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;"Push protection": &lt;a href="https://docs.github.com/en/code-security/concepts/secret-security/push-protection" rel="noopener noreferrer"&gt;https://docs.github.com/en/code-security/concepts/secret-security/push-protection&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;"Managing push protection for users": &lt;a href="https://docs.github.com/en/code-security/secret-scanning/working-with-secret-scanning-and-push-protection/push-protection-for-users" rel="noopener noreferrer"&gt;https://docs.github.com/en/code-security/secret-scanning/working-with-secret-scanning-and-push-protection/push-protection-for-users&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;From Penloom Studio's free AI lessons: &lt;a href="https://penloomstudio.com/landing-cogloom-motion.html" rel="noopener noreferrer"&gt;penloomstudio.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>github</category>
      <category>security</category>
      <category>git</category>
    </item>
    <item>
      <title>The family safe word: your defence against AI voice-clone calls</title>
      <dc:creator>Penloom Studio</dc:creator>
      <pubDate>Thu, 22 Oct 2026 15:34:57 +0000</pubDate>
      <link>https://dev.to/penloom_studio_829b7817d3/the-family-safe-word-your-defence-against-ai-voice-clone-calls-8hm</link>
      <guid>https://dev.to/penloom_studio_829b7817d3/the-family-safe-word-your-defence-against-ai-voice-clone-calls-8hm</guid>
      <description>&lt;p&gt;&lt;strong&gt;The problem in one sentence:&lt;/strong&gt; Scammers can now copy the sound of a loved one's voice and call you asking for money.&lt;/p&gt;

&lt;p&gt;The FTC (the U.S. Federal Trade Commission) describes it this way: a scammer takes a short audio clip of your family member's voice, often from something posted online, and runs it through a voice-cloning program. When they call, they "sound just like your loved one." The FBI warned about the same thing in December 2024: criminals make short clips of a loved one's voice "in a crisis situation, asking for immediate financial assistance or demanding a ransom."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Your 3-step plan:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Pick a family safe word today.&lt;/strong&gt; Choose a word or short phrase that only your family knows. Don't post it, don't text it to everyone, and don't use something easy to guess, such as a pet's name that is on Facebook. The FBI's own advice: "Create a secret word or phrase with your family to verify their identity."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;If a panicked call comes in, ask for the word, and never say it first.&lt;/strong&gt; A real family member will know it. A clone won't.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hang up and call back on a number you already know.&lt;/strong&gt; The FTC says: "Don't trust the voice." Call the person directly. If you can't reach them, call another relative or a friend, even if the caller told you to keep it secret.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Red flags (from the FTC and FBI):&lt;/strong&gt; the caller wants money right now, insists on secrecy, or asks for payment by wire transfer, gift cards or cryptocurrency.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Two extra habits:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Keep family videos and voice clips private where you can. The FBI suggests limiting public posts of your voice and image.&lt;/li&gt;
&lt;li&gt;If it happened to you, report it at ReportFraud.ftc.gov or to the FBI at ic3.gov.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Do this now:&lt;/strong&gt; text your family and say, "Let's pick a safe word at dinner this week." Agree on the word in person, not over text.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;FTC Consumer Alert, "Scammers use AI to enhance their family emergency schemes," Mar 20, 2023: &lt;a href="https://consumer.ftc.gov/consumer-alerts/2023/03/scammers-use-ai-enhance-their-family-emergency-schemes" rel="noopener noreferrer"&gt;https://consumer.ftc.gov/consumer-alerts/2023/03/scammers-use-ai-enhance-their-family-emergency-schemes&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;FTC, "Scammers Use Fake Emergencies To Steal Your Money": &lt;a href="https://consumer.ftc.gov/articles/scammers-use-fake-emergencies-steal-your-money" rel="noopener noreferrer"&gt;https://consumer.ftc.gov/articles/scammers-use-fake-emergencies-steal-your-money&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;FBI IC3 Public Service Announcement I-120324-PSA, Dec 3, 2024: &lt;a href="https://www.ic3.gov/PSA/2024/PSA241203" rel="noopener noreferrer"&gt;https://www.ic3.gov/PSA/2024/PSA241203&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;From Penloom Studio's free AI lessons: &lt;a href="https://penloomstudio.com/landing-cogloom-motion.html" rel="noopener noreferrer"&gt;penloomstudio.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>beginners</category>
      <category>security</category>
      <category>scams</category>
    </item>
  </channel>
</rss>
