diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,6 @@
 # Changelog
 
-## [0.1.21] - 2025-04-04
+## [0.1.22] - 2025-04-04
 
 - Automate release process
 
diff --git a/bin/release b/bin/release
--- a/bin/release
+++ b/bin/release
@@ -23,7 +23,7 @@
 fi
 
 # Ask user for new version
-read -p "Enter new version [$DEFAULT_VERSION]: " VERSION
+read -r -p "Enter new version [$DEFAULT_VERSION]: " VERSION
 VERSION=${VERSION:-$DEFAULT_VERSION}
 
 echo "=== Starting comprehensive release process for clod $VERSION ==="
@@ -54,7 +54,7 @@
   echo "Opening CHANGELOG.md for editing. Please add your release notes."
   echo "Press Enter to continue once you've saved the changes."
   ${EDITOR:-nano} CHANGELOG.md
-  read -p "Press Enter to continue with the release process..."
+  read -r -p "Press Enter to continue with the release process..."
 fi
 
 # Step 1: Generate man pages
@@ -178,13 +178,15 @@
 # PROJECT INSTRUCTIONS
 EOF
 
-  # Append project-instructions.md content
-  cat "$PROJECT_ROOT/project-instructions.md" >> "$PROJECT_ROOT/man/clod.7.md"
-
-  # Append guardrails.md content
-  echo "" >> "$PROJECT_ROOT/man/clod.7.md"
-  echo "# SAFEGUARDS" >> "$PROJECT_ROOT/man/clod.7.md"
-  cat "$PROJECT_ROOT/guardrails.md" >> "$PROJECT_ROOT/man/clod.7.md"
+  # Append project-instructions.md and guardrails.md content with a single redirection
+  {
+    # Append project-instructions.md content
+    cat "$PROJECT_ROOT/project-instructions.md"
+    # Add safeguards section
+    echo ""
+    echo "# SAFEGUARDS" 
+    cat "$PROJECT_ROOT/guardrails.md"
+  } >> "$PROJECT_ROOT/man/clod.7.md"
 else
   echo "Warning: Cannot generate clod(7).md, source files missing"
 fi
@@ -267,9 +269,9 @@
 # Step 7: Verify man pages were generated correctly
 echo "=== Verifying man pages ==="
 echo "Source markdown files:"
-ls -la "$PROJECT_ROOT/man/" | grep -E "\.md$"
+find "$PROJECT_ROOT/man/" -name "*.md" -type f -exec ls -la {} \;
 echo "Generated man pages in test directory:"
-ls -la /tmp/clod-man-test | grep -v "^total"
+find /tmp/clod-man-test -maxdepth 1 -not -name "." -not -name ".." -exec ls -la {} \;
 # Clean up after verification
 rm -rf /tmp/clod-man-test
 
@@ -414,6 +416,11 @@
   exit 1
 fi
 
+# Always update the bottle root_url to match the current version
+# even if we're not building a bottle - this prevents version mismatches
+ROOT_URL_TEMPLATE="    root_url \"https://github.com/fuzz/clod/releases/download/v$VERSION\" # BOTTLE_ROOT_URL_MARKER"
+sed -i '' "s|.*BOTTLE_ROOT_URL_MARKER.*|$ROOT_URL_TEMPLATE|" "$FORMULA_PATH"
+
 # Use simple templates for the complete lines
 URL_TEMPLATE="  url \"https://hackage.haskell.org/package/clod-$VERSION/clod-$VERSION.tar.gz\" # TARBALL_URL_MARKER"
 SHA_TEMPLATE="  sha256 \"$SHA256\" # TARBALL_SHA256_MARKER"
@@ -425,13 +432,13 @@
 # Verify the changes were made correctly
 if ! grep -q "clod-$VERSION.*\.tar\.gz.*TARBALL_URL_MARKER" "$FORMULA_PATH"; then
   echo "ERROR: Formula URL update failed. Please check $FORMULA_PATH manually."
-  cat "$FORMULA_PATH" | grep -A 2 "url"
+  grep -A 2 "url" "$FORMULA_PATH"
   exit 1
 fi
 
 if ! grep -q "$SHA256.*TARBALL_SHA256_MARKER" "$FORMULA_PATH"; then
   echo "ERROR: Formula SHA256 update failed. Please check $FORMULA_PATH manually."
-  cat "$FORMULA_PATH" | grep -A 2 "sha256"
+  grep -A 2 "sha256" "$FORMULA_PATH"
   exit 1
 fi
 
@@ -442,98 +449,148 @@
 echo "Do you want to build a Homebrew bottle for this release? [y/N]"
 read -r bottle_response
 if [[ "$bottle_response" =~ ^[Yy] ]]; then
-  # First uninstall existing clod formula to ensure clean build
-  echo "Uninstalling any existing clod formula..."
+  # Build bottle directly, no subshell so errors propagate
+  echo "Building bottle for clod formula..."
+  
+  # Change to homebrew-tap directory, with error handling
+  if ! cd "../homebrew-tap"; then
+    echo "ERROR: Failed to change to homebrew-tap directory"
+    exit 1
+  fi
+  
+  # Clean environment and create the bottle
+  echo "Creating bottle for this formula..."
+  
+  # Ensure we have a clean state - uninstall any version of clod
   brew uninstall --force clod 2>/dev/null || true
   
-  echo "Building bottle for clod formula..."
-  (
-    cd "../homebrew-tap"
-    # Install with --build-bottle flag
-    brew install --build-bottle --formula ./Formula/clod.rb
-    
-    # Create the bottle
-    bottle_output=$(brew bottle clod)
-    echo "Bottle output: $bottle_output"
-    
-    # Extract the bottle file name
-    bottle_file=$(echo "$bottle_output" | grep -o 'clod--.*\.bottle\.tar\.gz')
-    echo "Bottle file: $bottle_file"
-    
-    # Extract the SHA256 from the bottle
-    bottle_sha=$(echo "$bottle_output" | grep -i 'sha256' | grep -o '"[a-f0-9]\+"' | tr -d '"')
-    echo "Bottle SHA256: $bottle_sha"
-    
-    # Extract the macOS version (monterey, ventura, sequoia, etc.)
-    macos_version=$(echo "$bottle_file" | grep -o 'arm64_[a-z0-9]\+' | cut -d'_' -f2)
-    echo "macOS version: $macos_version"
-    
-    if [ -z "$bottle_file" ] || [ -z "$bottle_sha" ] || [ -z "$macos_version" ]; then
-      echo "Error: Could not extract bottle information."
-      echo "Bottle file format may have changed. Please check the actual filename: $bottle_file"
-      exit 1
+  # Make sure our tap is properly set up
+  echo "Ensuring tap is properly set up..."
+  # Commit any changes to ensure the tap repo is clean
+  git add Formula/clod.rb
+  git commit -m "Update formula for version $VERSION" || true
+  
+  # Point the tap to our local repo
+  brew untap fuzz/tap 2>/dev/null || true
+  brew tap fuzz/tap "$(pwd)"
+  
+  # Now install using the tap reference, not the file path
+  echo "Installing formula with --build-bottle flag..."
+  brew install --build-bottle fuzz/tap/clod
+  
+  echo "Creating bottle file..."
+  # Now we can reference the formula by its tap name
+  echo "Creating bottle..."
+  if ! bottle_output=$(brew bottle --root-url="https://github.com/fuzz/clod/releases/download/v$VERSION" fuzz/tap/clod); then
+    echo "ERROR: Failed to create bottle"
+    exit 1
+  fi
+  echo "Bottle output: $bottle_output"
+  
+  # Extract the bottle file name - be flexible with the pattern to catch different formats
+  bottle_file=$(echo "$bottle_output" | grep -o '[a-zA-Z0-9_/-]*clod[a-zA-Z0-9_/-]*\.bottle\.tar\.gz')
+  echo "Bottle file: $bottle_file"
+  
+  # Extract the SHA256 from the bottle
+  bottle_sha=$(echo "$bottle_output" | grep -i 'sha256' | grep -o '"[a-f0-9]\+"' | tr -d '"')
+  echo "Bottle SHA256: $bottle_sha"
+  
+  # Extract the macOS version (monterey, ventura, sequoia, etc.)
+  macos_version=$(echo "$bottle_output" | grep -o 'arm64_[a-z0-9]\+' | head -1 | cut -d'_' -f2)
+  # If we couldn't extract it, use the current OS version as a fallback
+  if [ -z "$macos_version" ]; then
+    macos_version=$(sw_vers -productVersion | cut -d. -f1)
+    case "$macos_version" in
+      14) macos_version="sequoia" ;;
+      13) macos_version="ventura" ;;
+      12) macos_version="monterey" ;;
+      11) macos_version="big_sur" ;;
+      *) macos_version="sonoma" ;; # Default to latest as fallback
+    esac
+  fi
+  echo "macOS version: $macos_version"
+  
+  if [ -z "$bottle_file" ] || [ -z "$bottle_sha" ] || [ -z "$macos_version" ]; then
+    echo "Error: Could not extract bottle information."
+    echo "Bottle file format may have changed. Please check the actual filename: $bottle_file"
+    exit 1
+  fi
+  
+  # Make sure the bottle file exists
+  if [ ! -f "$bottle_file" ]; then
+    echo "ERROR: Bottle file not found: $bottle_file"
+    ls -la
+    exit 1
+  fi
+  
+  # Move the bottle to a directory for release
+  mkdir -p bottles
+  mv "$bottle_file" bottles/
+  
+  echo "Bottle created successfully: bottles/$bottle_file"
+  
+  # Check for GitHub CLI and upload bottle
+  echo "Checking for GitHub CLI (gh)..."
+  if ! command -v gh &> /dev/null; then
+    echo "ERROR: GitHub CLI (gh) not found. Please install it to automate bottle uploads."
+    echo "See: https://cli.github.com/"
+    exit 1
+  fi
+  
+  echo "Do you want to upload bottle to GitHub? [y/N]"
+  read -r upload_bottle
+  if [[ "$upload_bottle" =~ ^[Yy] ]]; then
+    echo "Checking if release for v$VERSION exists..."
+    if ! gh release view "v$VERSION" &>/dev/null; then
+      echo "Release v$VERSION doesn't exist. Creating it now..."
+      gh release create "v$VERSION" --title "Release v$VERSION" --notes "Release v$VERSION with Homebrew bottle support."
     fi
     
-    # Move the bottle to a directory for release
-    mkdir -p bottles
-    mv "$bottle_file" bottles/
-    
-    echo "Bottle created successfully: bottles/$bottle_file"
-    
-    # Update the formula with bottle information
-    echo "Updating formula with bottle information..."
-    
-    # Use simple templates for the bottle lines
-    ROOT_URL_TEMPLATE="    root_url \"https://github.com/fuzz/clod/releases/download/v$VERSION\" # BOTTLE_ROOT_URL_MARKER"
-    BOTTLE_SHA_TEMPLATE="    sha256 cellar: :any_skip_relocation, arm64_${macos_version}: \"$bottle_sha\" # BOTTLE_SHA256_MARKER"
-    
-    # Replace the entire lines with the markers
-    sed -i '' "s|.*BOTTLE_ROOT_URL_MARKER.*|$ROOT_URL_TEMPLATE|" Formula/clod.rb
-    sed -i '' "s|.*BOTTLE_SHA256_MARKER.*|$BOTTLE_SHA_TEMPLATE|" Formula/clod.rb
-    
-    # Verify the changes were made correctly
-    if ! grep -q "v$VERSION.*BOTTLE_ROOT_URL_MARKER" Formula/clod.rb; then
-      echo "ERROR: Bottle root_url update failed. Please check Formula/clod.rb manually."
-      cat Formula/clod.rb | grep -A 2 "root_url"
-      exit 1
-    fi
+    echo "Uploading bottle to GitHub release v$VERSION..."
+    gh release upload "v$VERSION" "bottles/$bottle_file" --clobber
     
-    if ! grep -q "arm64_${macos_version}.*$bottle_sha.*BOTTLE_SHA256_MARKER" Formula/clod.rb; then
-      echo "ERROR: Bottle SHA update failed. Please check Formula/clod.rb manually."
-      cat Formula/clod.rb | grep -A 2 "sha256 cellar"
-      exit 1
-    fi
+    echo "Bottle uploaded successfully to GitHub release!"
+    echo "URL: https://github.com/fuzz/clod/releases/download/v$VERSION/$bottle_file"
+  fi
+  
+  # Update the formula with bottle information
+  echo "Updating formula with bottle information..."
+  
+  # Update just the bottle SHA - root_url is already updated earlier
+  BOTTLE_SHA_TEMPLATE="    sha256 cellar: :any_skip_relocation, arm64_${macos_version}: \"$bottle_sha\" # BOTTLE_SHA256_MARKER"
+  
+  # Replace the SHA line with the marker
+  sed -i '' "s|.*BOTTLE_SHA256_MARKER.*|$BOTTLE_SHA_TEMPLATE|" Formula/clod.rb
+  
+  # Verify the changes were made correctly
+  if ! grep -q "v$VERSION.*BOTTLE_ROOT_URL_MARKER" Formula/clod.rb; then
+    echo "ERROR: Bottle root_url update failed. Please check Formula/clod.rb manually."
+    grep -A 2 "root_url" Formula/clod.rb
+    exit 1
+  fi
+  
+  if ! grep -q "arm64_${macos_version}.*$bottle_sha.*BOTTLE_SHA256_MARKER" Formula/clod.rb; then
+    echo "ERROR: Bottle SHA update failed. Please check Formula/clod.rb manually."
+    grep -A 2 "sha256 cellar" Formula/clod.rb
+    exit 1
+  fi
+  
+  # Ask if the user wants to test the bottle installation
+  echo "Do you want to test installing from the bottle? [y/N]"
+  read -r test_bottle
+  if [[ "$test_bottle" =~ ^[Yy] ]]; then
+    echo "Testing bottle installation..."
+    brew uninstall --force clod 2>/dev/null || true
+    brew install --formula ./Formula/clod.rb
     
-    # Ask if the user wants to test the bottle
-    echo "Do you want to test installing from the bottle? [y/N]"
-    read -r test_bottle
-    if [[ "$test_bottle" =~ ^[Yy] ]]; then
-      echo "Testing bottle installation..."
-      brew uninstall --force clod 2>/dev/null || true
-      brew install --formula ./Formula/clod.rb
-      
-      echo "Verifying installation..."
-      clod --version
-      
-      echo "Bottle test complete."
-    fi
+    echo "Verifying installation..."
+    clod --version
     
-    echo "Do you want to upload the bottle to GitHub releases? [y/N]"
-    read -r upload_bottle
-    if [[ "$upload_bottle" =~ ^[Yy] ]]; then
-      echo "To upload the bottle to GitHub releases:"
-      echo "1. Go to: https://github.com/fuzz/clod/releases/tag/v$VERSION"
-      echo "2. Edit the release"
-      echo "3. Upload the file: $(pwd)/bottles/$bottle_file"
-      echo "4. Save the release"
-      
-      echo "Would you like to open the release page in your browser? [y/N]"
-      read -r open_release
-      if [[ "$open_release" =~ ^[Yy] ]]; then
-        open "https://github.com/fuzz/clod/releases/tag/v$VERSION"
-      fi
-    fi
-  )
+    echo "Bottle test complete."
+  fi
+  
+  # Return to original directory
+  cd "$PROJECT_ROOT" || exit 1
 fi
 
 # Step 15: Commit and push Homebrew formula update
diff --git a/clod.cabal b/clod.cabal
--- a/clod.cabal
+++ b/clod.cabal
@@ -1,6 +1,6 @@
 cabal-version:       2.4
 name:                clod
-version:             0.1.21
+version:             0.1.22
 synopsis:            Project file manager for Claude AI integrations
 description:         Clod (Claude Loader) is a utility for preparing and uploading files to Claude AI's 
                      Project Knowledge feature. It tracks file changes, respects .gitignore and .clodignore 
diff --git a/man/clod.1.md b/man/clod.1.md
--- a/man/clod.1.md
+++ b/man/clod.1.md
@@ -1,4 +1,4 @@
-% CLOD(1) Clod 0.1.21
+% CLOD(1) Clod 0.1.22
 % Fuzz Leonard & Claude <ink@fuzz.ink>
 % March 2025
 
diff --git a/man/clod.7.md b/man/clod.7.md
--- a/man/clod.7.md
+++ b/man/clod.7.md
@@ -1,4 +1,4 @@
-% CLOD(7) Clod 0.1.21
+% CLOD(7) Clod 0.1.22
 % Fuzz Leonard & Claude <ink@fuzz.ink>
 % March 2025
 
diff --git a/man/clod.8.md b/man/clod.8.md
--- a/man/clod.8.md
+++ b/man/clod.8.md
@@ -1,4 +1,4 @@
-% CLOD(8) Clod 0.1.21
+% CLOD(8) Clod 0.1.22
 % Fuzz Leonard & Claude <ink@fuzz.ink>
 % March 2025
 
